使用allpairs自動設計組合測試用例

玄學醬發表於2017-07-10
一般都說測試先做單元測試,然後做整合測試,然後做系統測試之類的,其實說白了,也可以理解成將最基本的測試步驟,或者說測試環境使用一定的方法組合以後再生成新的測試用例。因為人工組合,第一比較費神,第二是有時要麼是設計了幾個等價的測試用例,重複執行這些等價的測試用例,比較費時。這裡有一個比較好的測試技術,叫做配對(pair-wise)測試,它可以根據你設定的條件,自動生成在測試時間(即工作量)和測試覆蓋率之間做出平衡的組合。

   配對測試的基本理念是,雖然程式的某個元件,或者程式自己會接受很多的輸入,但大部分情況下,程式的bug不是因為這些輸入同時作用而產生的,而是由一 到兩個輸入條件同時作用導致的。因此配對測試在生成測試組合的時候,主要關注將每個條件與其它條件至少配對一次,而不是試圖生成全組合,這樣就可以大大減 少需要測試的組合數,盡而節省測試工作量,同時又能達到滿意的測試覆蓋率。

  當然不能期望配對測試是萬能的,即我們僅依賴於配對測試自動生成的測試用例就可以了,使用配對測試的目的是為了減少測試人員浪費在執行太多的等價組合的時間,將寶貴的時間儘可能地放在設計符合使用者使用場景的測試用例上。

  具體示例(手工步驟)

  廢話少說,先看一個具體的示例,假設我們有下面一個產品,介面如下:

  對於上面這個產品(假設文字框接受1到100之間的整數),可以將測試條件劃分為下面這樣子:

   當然,文字框的條件我們還可以再細分一下,但是為了描述簡單,我把條件設定的比較粗糙,如果按照全組合的用例設定方式,需要 6 (下拉框控制元件可能的條件) * 2 (核取方塊可能的條件) * 2 (單選框可能的條件) * 6 (文字框可能的條件) = 144個組合。

  我們來看使用配對方式設計組合的方式:

  1、先將上面的條件輸入到Excel裡,並在列頭標明可能出現的條件的個數,並按條件的個數將各個輸入引數排序,如下圖所示:

  2、先將第二個和第三個引數的各個條件組合一次,這裡為了省事起見,我先去掉第一個引數,只介紹第二、三、四個引數的配對組合方法:

 3、然後再將第二個引數和第四個引數的各個條件組合一次,如下圖所示:

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

  5、解決方案很簡單,只需要再新增兩行,將兩個引數中沒有組合的條件各自組合一次好了(當然,你也可以將第四個引數的條件稍微調整一下達到相同的目的):

  自動化步驟

  上面的工作還是有點繁瑣,實際上早已有人將這個過程自動化了,這裡介紹一個免費開源的工具allpairs.exe,請於下面這個連結裡下載:http://www.satisfice.com/tools/pairs.zip

 對於上面的例子,使用allpairs生成組合的方式是:

  1、先將上面的條件輸入到Excel裡,如下圖所示(因為這個工具是老外寫得,沒有考慮支援中文的問題,所以最好全部用英文表示):

  2、將Excel檔案儲存為以Tab鍵作為分隔符的文字檔案:

  3、然後使用allpairs.exe處理這個檔案:

  allpairs.exe test.txt > output.txt

  4、在output.txt裡,PAIRING DETAILS下面的東西都是沒有用的,可以直接刪掉,刪掉以後,結果如下:

  你可以在設計測試環境矩陣還有組合測試用例的時候使用allpairs這個技術,當然,你不能完全依賴這個技術,除了allpairs組合的測試用例以外,你最好再根據測試覆蓋率和使用者場景覆蓋率入手,補充更有價值的測試用例。

  另外,使用配對測試的演算法,我們有可能結合Behavior Driven Design技術,直接從需求自動生成測試用例,加之如果我們將基本的測試用例自動化以後,完全可以使用這個技術將自動化過的測試用例配對組合(當然需要 加上一些限制條件),在節省測試時間的同時,達到滿意的測試覆蓋率,當然,這樣做要求我們自己寫一個測試工具來實現這個技術—至少到現在我還沒有看到現成 的工具,而且這個技術應該要比模型驅動測試更容易使用,因為模型驅動測試的問題是建模太困難。







最新內容請見作者的GitHub頁:http://qaseven.github.io/


相關文章