qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          使用allpairs自動(dòng)設(shè)計(jì)組合測(cè)試用例

          一般都說測(cè)試先做單元測(cè)試,然后做集成測(cè)試,然后做系統(tǒng)測(cè)試之類的,其實(shí)說白了,也可以理解成將最基本的測(cè)試步驟,或者說測(cè)試環(huán)境使用一定的方法組合以后再生成新的測(cè)試用例。因?yàn)槿斯そM合,第一比較費(fèi)神,第二是有時(shí)要么是設(shè)計(jì)了幾個(gè)等價(jià)的測(cè)試用例,重復(fù)執(zhí)行這些等價(jià)的測(cè)試用例,比較費(fèi)時(shí)。這里有一個(gè)比較好的測(cè)試技術(shù),叫做配對(duì)(pair-wise)測(cè)試,它可以根據(jù)你設(shè)定的條件,自動(dòng)生成在測(cè)試時(shí)間(即工作量)和測(cè)試覆蓋率之間做出平衡的組合。

             配對(duì)測(cè)試的基本理念是,雖然程序的某個(gè)組件,或者程序自己會(huì)接受很多的輸入,但大部分情況下,程序的bug不是因?yàn)檫@些輸入同時(shí)作用而產(chǎn)生的,而是由一 到兩個(gè)輸入條件同時(shí)作用導(dǎo)致的。因此配對(duì)測(cè)試在生成測(cè)試組合的時(shí)候,主要關(guān)注將每個(gè)條件與其它條件至少配對(duì)一次,而不是試圖生成全組合,這樣就可以大大減 少需要測(cè)試的組合數(shù),盡而節(jié)省測(cè)試工作量,同時(shí)又能達(dá)到滿意的測(cè)試覆蓋率。

            當(dāng)然不能期望配對(duì)測(cè)試是萬能的,即我們僅依賴于配對(duì)測(cè)試自動(dòng)生成的測(cè)試用例就可以了,使用配對(duì)測(cè)試的目的是為了減少測(cè)試人員浪費(fèi)在執(zhí)行太多的等價(jià)組合的時(shí)間,將寶貴的時(shí)間盡可能地放在設(shè)計(jì)符合用戶使用場(chǎng)景的測(cè)試用例上。

            具體示例(手工步驟)

            廢話少說,先看一個(gè)具體的示例,假設(shè)我們有下面一個(gè)產(chǎn)品,界面如下:

            對(duì)于上面這個(gè)產(chǎn)品(假設(shè)文本框接受1到100之間的整數(shù)),可以將測(cè)試條件劃分為下面這樣子:

             當(dāng)然,文本框的條件我們還可以再細(xì)分一下,但是為了描述簡(jiǎn)單,我把條件設(shè)置的比較粗糙,如果按照全組合的用例設(shè)置方式,需要 6 (下拉框控件可能的條件) * 2 (復(fù)選框可能的條件) * 2 (單選框可能的條件) * 6 (文本框可能的條件) = 144個(gè)組合。

            我們來看使用配對(duì)方式設(shè)計(jì)組合的方式:

            1、先將上面的條件輸入到Excel里,并在列頭標(biāo)明可能出現(xiàn)的條件的個(gè)數(shù),并按條件的個(gè)數(shù)將各個(gè)輸入?yún)?shù)排序,如下圖所示:

            2、先將第二個(gè)和第三個(gè)參數(shù)的各個(gè)條件組合一次,這里為了省事起見,我先去掉第一個(gè)參數(shù),只介紹第二、三、四個(gè)參數(shù)的配對(duì)組合方法:

           3、然后再將第二個(gè)參數(shù)和第四個(gè)參數(shù)的各個(gè)條件組合一次,如下圖所示:

            4、為了確保第四個(gè)參數(shù)跟第三個(gè)參數(shù)的各個(gè)條件都有一次組合,可以使用Excel提供的過濾功能來判斷,例如下圖中,很明顯,兩個(gè)參數(shù)沒有一個(gè)完全組合:

            5、解決方案很簡(jiǎn)單,只需要再添加兩行,將兩個(gè)參數(shù)中沒有組合的條件各自組合一次好了(當(dāng)然,你也可以將第四個(gè)參數(shù)的條件稍微調(diào)整一下達(dá)到相同的目的):

            自動(dòng)化步驟

            上面的工作還是有點(diǎn)繁瑣,實(shí)際上早已有人將這個(gè)過程自動(dòng)化了,這里介紹一個(gè)免費(fèi)開源的工具allpairs.exe,請(qǐng)于下面這個(gè)鏈接里下載:http://www.satisfice.com/tools/pairs.zip

           對(duì)于上面的例子,使用allpairs生成組合的方式是:

            1、先將上面的條件輸入到Excel里,如下圖所示(因?yàn)檫@個(gè)工具是老外寫得,沒有考慮支持中文的問題,所以最好全部用英文表示):

            2、將Excel文件保存為以Tab鍵作為分隔符的文本文件:

            3、然后使用allpairs.exe處理這個(gè)文件:

            allpairs.exe test.txt > output.txt

            4、在output.txt里,PAIRING DETAILS下面的東西都是沒有用的,可以直接刪掉,刪掉以后,結(jié)果如下:

            你可以在設(shè)計(jì)測(cè)試環(huán)境矩陣還有組合測(cè)試用例的時(shí)候使用allpairs這個(gè)技術(shù),當(dāng)然,你不能完全依賴這個(gè)技術(shù),除了allpairs組合的測(cè)試用例以外,你最好再根據(jù)測(cè)試覆蓋率和用戶場(chǎng)景覆蓋率入手,補(bǔ)充更有價(jià)值的測(cè)試用例。

            另外,使用配對(duì)測(cè)試的算法,我們有可能結(jié)合Behavior Driven Design技術(shù),直接從需求自動(dòng)生成測(cè)試用例,加之如果我們將基本的測(cè)試用例自動(dòng)化以后,完全可以使用這個(gè)技術(shù)將自動(dòng)化過的測(cè)試用例配對(duì)組合(當(dāng)然需要 加上一些限制條件),在節(jié)省測(cè)試時(shí)間的同時(shí),達(dá)到滿意的測(cè)試覆蓋率,當(dāng)然,這樣做要求我們自己寫一個(gè)測(cè)試工具來實(shí)現(xiàn)這個(gè)技術(shù)—至少到現(xiàn)在我還沒有看到現(xiàn)成 的工具,而且這個(gè)技術(shù)應(yīng)該要比模型驅(qū)動(dòng)測(cè)試更容易使用,因?yàn)槟P万?qū)動(dòng)測(cè)試的問題是建模太困難。

          posted on 2013-03-28 10:46 順其自然EVO 閱讀(276) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 唐河县| 西青区| 万宁市| 建阳市| 蓬安县| 嘉定区| 鄯善县| 睢宁县| 太保市| 上栗县| 栾城县| 鹤峰县| 双江| 铅山县| 林州市| 巴中市| 陕西省| 莎车县| 宽甸| 建水县| 文昌市| 鲁山县| 沾化县| 邛崃市| 三门峡市| 丰顺县| 鹿邑县| 上栗县| 额敏县| 临高县| 启东市| 读书| 涪陵区| 临邑县| 通海县| 连江县| 岳池县| 泾川县| 三河市| 新沂市| 利辛县|