all-pairs testing 或者 pairwise testing ,它是組合測試的壹種方法,是軟件測試領域針對黑盒測試提出的壹個行之有效的方法之壹。
Pairwise也正是基於數學統計和對傳統的正交分析法進行優化後得到的產物。
Pairwise基於如下2個假設:
我們先從壹個例子來感受下Pairwise testing。
假設我們有壹個產品,他的組成和值的情況如下。
如果全覆蓋的話,關正向的測試用例就有 10 2 2*100=4000 ,如果包括反向的測試用例的話,則 >4000 條測試用例。
對於listbox,可以選擇的值是0-9,由於0最特殊(其他的值要麽是正數要麽是負數), 所以,對於checklist 我們把它簡化成 0 和 others(1-9)
checkbox 和 radio button 已經無法再簡化了,則繼續保留
對於textbox,可以輸入的值是1-100,我們可以把它的值簡化成 valid Int , invalid Int and Alpha Special Char
簡化後的結果如下:
則有 2 22 3=24 個testcases,也就是我們把 4000+的testcases降到了24個testcases *
步驟:
含有值越多的變量放在第壹位,第二多的第二位,最少的最後壹位,以此類推。
根據第壹列和第二列值的可能性計算出第壹列需要幾行,這個例子中,第壹列3個值,第二列2個值,所以需要3*2=6行
檢查下每壹列和第三列之間是否都覆蓋了不同組合情況。
這樣第壹列和第三列,第二列和第三列都能覆蓋不同的組合情況。
檢查下每壹列和第四列之間是否都覆蓋了不同組合情況。
所以我們把五行和第六行換壹下位置,如下
再次檢查下每壹列和第四列之間是否都覆蓋了不同組合情況.發現都符合。
則最終結果就是上面這個表,每壹行代表壹個測試用例。
使用pairwise組合測試的方法,我們把測試用例從24個降到了6個。
上面的例子比較簡單,所以通過調整位置最終能滿足要求,可是有時候變量多的時候,無論妳怎麽調整都沒法滿足要求,也許滿足了第三列和第四列,可是第二列和第四列就不滿足了。這時候可以適當考慮加幾行來解決這個問題。
比如在上面的例子裏再加兩個checkbox這時就無法滿足,則需要加上兩行:
加上兩行,checkbox3為 hex和dec
前面的例子,讓我們對於因子組合測試覆蓋Pairwise有比較直觀的了解。不過對於人肉生成pairwise測試用例還是有點復雜的,特別當妳的變量特別多的時候,目前市面上也有壹些工具可以幫妳生成pairwise測試用例。
比如:
在下面的章節我將會介紹幾個工具的使用。