舉個直觀的例子就好理解了。有壹個接口函數,它有三個參數,每個參數可以取四個值。如果要驗證所有傳入的參數,需要測試4*4*4=64個案例。如果有更多參數和值,那將是壹場災難。
有沒有更好的方法可以少做測試,滿足測試覆蓋率?答案是肯定的,就是我們今天要講的“覆蓋兩兩的因子組合測試”。先簡單介紹壹下什麽是Pairwise。
Pairwise是由l . l . Thurston E(5月29日1887–9月30日1955)在1927中首次提出的。他是美國的心理統計學家,Pairwise是基於數理統計優化傳統正交分析方法的產物。
Pairwise基於以下兩個假設:每個維度都是正交的,即每個維度彼此沒有交集;據數理統計,73%的缺陷(單因素為35%,雙因素為38%)是由單因素或兩因素交互作用造成的,19%的缺陷是由三因素交互作用造成的。因此,成對基於覆蓋所有2個因素的交互,用例集是最具成本效益的。
軟件測試分為黑盒測試和白盒測試。成對算法是軟件測試中黑盒測試的壹種有效測試方法。
這個概念通常很模糊。這裏有壹個簡單的例子。看完之後,妳就明白成對算法是如何選擇測試用例的了。
成對算法過程:從表的最後壹行開始,如果在上面壹行或者這個表中可以找到這壹行的成對組合值,那麽這壹行就可以從用例集中刪除。
例如,如果TC8包含(X2-Y2,X2-Z2,Y2-Z2)的成對組合值,X2-Y2存在於TC7中,X2-Z2存在於TC6中,Y2-Z2存在於TC4中,則刪除此行;
TC7包含(X2-Y2,X2-Z1,Y2-Z1)的成對組合值,X2-Y2在此表中找不到,因此保留。按照這種方法,最終的測試用例集如右上方所示。顯然,經過兩兩配對的過程後,測試用例的數量減少了壹半。
所以如果每次都要手工計算,不僅浪費時間,還容易出錯。壹旦參數多了,手動就沒辦法了。有沒有可能開發壹個自動程序,讓它自動輸出結果?這個想法很好,但是我們不需要再做輪子了。市面上已經有非常有用的工具了,就是PICT工具。
進入安裝目錄,並在目錄中創建壹個新的txt文件,如text.txt。
有壹個登錄頁面,有用戶名、密碼、驗證碼、是否保存密碼的選項,其中最多1用戶名、密碼、驗證為空。如果有5*3*4*2-3=117個用例,在txt中輸入所有與測試用例相關的參數,如下圖1所示:
test.txt的參數內容如下:
用戶名:?手機號碼,電子郵件地址,昵稱,非空字符,空
密碼:?正確的密碼,錯誤的密碼,空的
驗證碼:正確驗證碼,錯誤驗證碼,超時驗證碼,空。
保存_密碼:?是,不是
在安裝目錄下運行cmd命令,輸入picttest.txt,結果如下:
看起來不是很漂亮,可以用命令picttest。txt >;test.xls命令將結果輸出到text.xls文檔,結果如下:
我從需求中知道,最多只有1用戶名,密碼,驗證碼是空的。我該怎麽辦?這時候就需要用到PICT的約束了。
PICT約束:
子模型約束:?
{ Para1,Para2,Para3 } @ 2?#任何成對的參數組合都必須包含分號。
約束(如,IN,AND,OR,NOT)必須以分號結束:
[用戶名]& lt;& gt“空”;
[年齡]& lt;120 ;
[用戶名]& lt;& gt“空”或[年齡]< 120;
【昵稱】喜歡“李*”;
如果[用戶名] = "空",則不是[密碼] = "空";
如果[簇大小]在{512,1024,2048}那麽[壓縮] = "關";
如果[用戶名] = "空"那麽?[密碼]& lt;& gt“空”和[驗證碼]< & gt;“空”;
因此,為了滿足最多1個用戶名、密碼和驗證碼為空,text.txt中的參數約束修改如下:
輸出結果如下,可以發現沒有用戶名,密碼,驗證碼,最多只有1為空:
想覆蓋所有用戶名、密碼、驗證碼組合測試項目,該怎麽做?您可以添加以下參數約束:
這就是所有的約束。在編輯test.txt文件時,切記不要用中文編輯空格、冒號和逗號,否則會不斷報錯,得不到正確的結果。
以上組合都是兩兩組合。如果我想改變組合順序參數值,我該怎麽做?此時只需要在運行命令時添加參數/o:3即可,比如pict test.txt /o:3。其他命令參數選項具有以下含義:
/ o :N?-組合數,默認值為2。
/ d :C?-值之間的分隔符,默認為逗號(,)。
/ a :C?-別名之間的分隔符。默認為管道字符(|)。
/ n :C?-無效值或非法值的前綴,默認值為(~)。
/e:file-定義種子文件,它可以指定組合方法。
/ r [:N]?-隨機生成,N種子
/ c?-參數值完全區分大小寫。
/ s?-顯示模型統計數據