組合測試是一種測試用例
生成方法。它將被測系統抽象出來的變數的取值進行組合並生成一組測試用例
的過程,一般情況下,組合測試能夠在保證錯誤遺漏率的前提下採用較少的測試用例測試系統。但是對於如何從全集合的變數組合中抽取出有效的測試用例,會有不同的方法,兩因素(pairwise)組合測試就是一種比較好的方法去挖掘出有效的測試用例組合。接下來介紹另外一種方法去自動生成較好的測試用例集,那就是全對偶測試法(all pairs)。這些組合測試方法
也是高階測試工程師
必須掌握的。
現在我們假設存在3個變數:v1、v2、v3,v1變數存在3個值:a、b、c;v2變數存在2個值:d、e;v3變數存在2個值:f、g。按照組合測試法,可以組合出3*2*2 = 12種情況,也就是可以設計出12個測試用例。如果3個變數都存在5個不同的值的話,那就可以組合出5*5*5 = 125種情況,也就是需要設計出125個測試用例。測試專家james bach使用全對偶測試法(all pairs)將這125個測試用例壓縮成25個測試用例,從理論上來覆蓋變數組合的測試覆蓋率,全對偶測試法有個基本的原則是每個變數的每個取值都要與至少乙個用例中的每個其他變數的每個取值配對。
假設我們有兩個引數需要測試,比如作業系統,印表機,先列出每個引數的值:
作業系統:
win 98
win xp
win 7
印表機:
hp 4050
hp 4100
為了測試所有的組合對(pairings),測試用例包括如下情況:
用例作業系統
印表機1
win 98
hp 4050
2win 98
hp 4100
3win xp
hp 40504
win xp
hp 4100
5win 7
hp 4050 6
win 7
hp 4100
在兩個引數的情況下,所有的組合對(pairings)就是引數之間的所有組合情況。但是如果我們新增乙個引數將會發生什麼呢?
是否雙面列印: 是
否下面是3個引數進行組合的所有測試用例:用例
作業系統
印表機
是否雙面列印
1win 98
hp 4050是2
win 98
hp 4100是3
win xp
hp 4050 是
4win xp
hp 4100 是
5win 7
hp 4050 是
6win 7
hp 4100 是
7win 98
hp 4050 否
8win 98
hp 4100否
9win xp
hp 4050否10
win xp
hp 4100 否
11 win 7
hp 4050否
12win 7
hp 4100
否對應三個引數的所有組合情況就是12個測試用例。但是我們需要的是在一組測試用例中能夠保證至少乙個用例中的每個其他變數的每個取值都配對過。這種情況就可以得到較少的測試用例,我們就可以得到6個測試用例。用例
作業系統
印表機是否雙面列印1
win 98
hp 4050是
2win 98
hp 4100否
3win xp
hp 4050否4
win xp
hp 4100 是
5win 7
hp 4050是
6 win 7
hp 4100
否事實上,如果這三個引數中的某兩個引數的值的任意不同的組合會觸發乙個bug
的話,那**上的那組測試用例也可以發現該bug
。當三個特殊的值組合在一起觸發的某個bug,那**上的那組測試用例不一定能發現該bug,但是至少我們覆蓋了所有的全對偶(all pairs)。
相對於所有組合情況來說,全對偶的測試覆蓋率要容易很多。例如,如果你想測試10個引數且都有26個值的功能,所有組合情況將導致存在141,167,095,653,376個測試用例。而全對偶測試法就只要測試1094個測試用例就可以。
為了能較好的使用allpairs工具,測試人員需要在**上列出所有的引數和引數值,一般可以使用excel工具來表達:
作業系統
印表機是否雙面列印
win 98
hp 4050
是win xp
hp 4100
否win 7
然後將這個excel**拷貝到乙個text檔案(暫時命名為vars.txt),在dos平台上執行allpairs程式,使用如下的命令:
allpairs vars.txt > testcases.txt
如果測試人員也安裝了perl,也可以使用如下的命令:
perl allpairs.pl vars.txt > testcases.txt
testcases.txt檔案裡面的資料也適合拷貝到excel檔案中,類似於如下:
上圖的第一部分是測試用例的集合,那個」pairrings」列說明的是全對偶方法找到的唯一pairrings的數量。
上圖的第二部分是幫助測試人員了解全對偶方法的是怎麼完成的。它列出了每個pair,且顯示了這個pair在測試用例列表中出現的次數,且列表出了每個pair出現的時候所對應的測試用例的用例號。
james bach 也在《軟體測試
經驗與教訓》中詳細的說明任何使用全對偶的測試方法進行組合測試。主要分三大步驟,第乙個步驟是 從域劃分開始,確定和壓縮每個引數所取的值和個數;第二個步驟是 獲得全單值,保證覆蓋到每個變數的每個重要取值;第三個步驟是 獲得全對偶,保證每個變數的每個取值都要與至少乙個測試用例中的每個其他變數的每個取值配對。同時他還表示僅僅使用全對偶測試是有風險的,與全單值一樣,測試人員可能知道被廣泛應用的特定組合,或可能有麻煩的組合。
當然很多人會問是不是還有其他的工具來自動化
生成組合的測試用例,由於全對偶測試法並不是乙個最完美的解決辦法,但在大部分情況下,對測試來說還是足夠的。考慮10個引數且都有10個值的情況,全對偶測試(all pairs)需要使用177個測試用例來覆蓋組合測試情況。最有可能的最佳的用例個數是100到177之間,james懷疑在130個測試用例左右。但是與成千上萬的測試用例集合相比,177個並不是特別差的情況。當然,對於使用全對偶測試(all pairs)法產生的所有測試用例集合也可以是可執行的自動化
指令碼,由於引數和取值之間沒有約束關係,所以產生的用例集合有規律,目前**網技術質量部開發了相關的工具用於通過組合測試法生成頁面自動化指令碼,該指令碼是ruby語言編寫,通過規則和引數化取值來準備資料,使用關鍵的key標識來組合自動化指令碼的框架,有興趣的同學可以一同研究。
一般在測試設計過程中,組合測試法不會單獨使用,而是會與其他方法進行組合使用,大部分時候是和判定表和邊界值組合使用,在關鍵性的高穩定要求的系統軟體中,組合測試和邊界測試的組合覆蓋率尤其重要。這個組合測試策略在相容性
測試策略方案上也有很大的作用,在選擇作業系統,瀏覽器版本,其他軟體配置的相容性
測試上給出方向性的指導。
美國telcordia 技術公司有乙個基於web
的工具,它產生的結果集要優於全對偶測試(all pairs)得到的結果集。例如,存在40個引數且都有3個值的情況,這個工具可以使用21個測試用例來覆蓋所有的pairs。全對偶測試(all pairs)則需要29個測試用例才能達到同樣的效果,但是這個工具是收費的,相比較免費的全對偶測試(all pairs),測試人員可以自己做出選擇。
測試用例設計
1.測試用力的概念 測試用例是為特定的目的而設計的一組的測試輸入。執行條件和預期的結果,體現在測試方案 方法 技術和策略。2.測試用例具備的特點 1 正確性 2 完整性 3 準確 4 清晰 簡潔 5 可維護性 6 適應性 7 可重用性 8 其他 3.測試用例基本原則 個人認為比較重要的加黑了。1 基...
測試用例設計
1.名稱與標識 2.測試追蹤 3.用例說明 4.測試的初始化要求 5.測試的輸入 6.期望的測試結果 7.評價測試結果的準則 8.操作過程 9.前提和約束 10.測試終止條件 編寫用例規範 1 系統性 對系統業務流程要完整說明整個系統的業務需求 系統由幾個子系統組成以及它們之間的關係 對模組業務流程...
測試用例設計
測試用例格式 用例編號 a b c d a 產品或專案名稱 b 用例屬性 st,it,ut c 客戶管理 新增客戶,什麼型別的客戶 d編號 例 crm st 客戶管理 新增客戶 001 測試項 針對於某種物件的測試用例 客戶管理 新增客戶 20個字元的客戶資訊 新增名稱包含單引號的客戶資訊 用例屬性...