測試過程中,我們經常遇到需要覆蓋多個變化參數的測試情境,如我們測試BS配置控制用戶端組織資源遠程配置一個裝置時,進行一個裝置通道視頻參數設定的各種組合測試,如下圖:
多數情況下,類似於這種多組合測試時,老員工則是依靠經驗去進行有針對性的測試,而我們新員工會隨機的亂點一通看能否正常儲存成功,看看相應的視頻檔案是否符合設定,幸運的話,能發現幾個bug。這種方式不但不科學,而且測試覆蓋面也很窄,這裡可以使用常見的兩種方法進行測試案例的分析和設計:組合分析方法和正交實驗設計方法。(均以上圖為例)
1.用組合分析方法進行測試案例設計:
關於組合分析方法,依據的是多因素組合測試可以產生測試案例集,以覆蓋任意N個因素的所有取值組合,在理論上可以發現由N個因素共同作用引發的缺陷。簡單的理解就是每一個參數的每一個值只需要和其他參數至少配對一次就夠了。
上面的因子及各因子狀態如下:
碼流類別:主碼流,子碼流,事件參數
碼流類型:複合流,視頻流
解析度:DCIF,CIF,QCIF,2CIF,4CIF,保留,VGA,UXGA, HD720P
#這個設定要根據前段裝置的型號,有的裝置不支援較大的解析度
映像品質:最好,較好,次好,一般,較差,差
碼率類型:定碼率,變碼率
視頻碼率:32Kbps,320Kbps,2048Kbps #對於這個設定可以隨機播放幾個進行測試
視訊框架率:全幀率,1/16,1/4,1,10,20 #對於這個設定可以隨機播放幾個進行測試
框架類型:單P幀,BBP幀,BP幀
I幀間隔:0,200,400 #由於I幀間隔的範圍0—400,我們隨機播放三個
按照傳統思路,這些參數的排列組合有:3*2*9*6*2*3*6*3*3=104976,也就是說我們要進行104976次測試的執行,這個在現實測試中是不可能實現的。我們用組合分析方法可以裁剪測試案例的數量,達到我們可接受的範圍。
這裡要用到一個工具:PICT。具體操作步驟如下:
1. 先安裝好PICT工
2. 建一個模型檔案,檔案是.txt格式,如:modelfiles.txt。針對上圖檔案內容如下:
注意:文字檔中的“,”“:”都是英文字元
3. DOS視窗進入到PICT安裝目錄下,運行:Pict modelfiles.txt
註:若將測試因子的最佳化組合儲存到安裝目錄下,且以*.txt格式顯示,可輸入命令C:\Program Files\PICT>pict modelfiles.txt > output.txt;也可以*.xls格式顯示,可輸入命令C:\Program Files\PICT>pict modelfiles.txt > output.xls
測試因子的最佳化組合如下:(由於.xls格式中輸入1/16顯示1月16日,也即1/16不能在.xls中顯示,這裡以1\16代替1/16,其他類似)
通過匯出的.xls,我們知道,只需要執行60次測試案例即可達到104976次同樣的效果。在測試中,我們可以在模型檔案中加入一些條件陳述式限制一些特殊的情況,比如當視屏碼率選擇自訂時,自訂碼率輸入框不可為空等。對於有經驗的人員可以在上面組合的基礎上適當的加入一些容易出現問題的測試案例,增加測試的覆蓋面。最近讀《微軟的軟體測試之道》,裡面也有關於組合測試的介紹,書中建議組合分析從兩因素組合測試開始,逐漸提高組合維度,直至6因素組合測試,因為有研究表明6因素組合測試可以發現絕大多數的程式缺陷。關於這段話的描述現在還不是太明白,還有待繼續深入學習。
2.用正交分析方法設計測試案例
所謂正交實驗法,就是從大量的實驗點中挑選出適量的,有代表性的點,合理的安排實驗。
如果我們直接在上例中運用正交實驗法,可能仍然達不到我們可以接受的範圍,即測試案例還是很多。這時我們可以計算各因子和狀態的權值,刪去一部分權值較小,即重要性較小的因子或者狀態,使最後產生的測試案例集縮減到我們可以接受的範圍。
針對上例中,我們做如下修改(這裡只是指出怎麼應用正交實驗法,所選修改以簡便為主,實際中可根據需要刪減):
碼流類別:主碼流=0,子碼流=1
碼流類型:複合流=0,視頻流=1
解析度:DCIF=0,CIF=1,QCIF=2,4CIF=3,保留=4
映像品質:最好=0,較好=1,次好=2,一般=3,差=4
視訊框架率:全幀率=0,1/16=1,1/4=2,1=3,10=4,20=5
框架類型:單P幀=0,BBP幀=1,BP幀=2
根據上面分析情況,我們在常用正交矩陣表中,選擇在保證因素數、水平數最接近但略大於實際值的基礎上,選擇行數最小的矩陣表。我們選擇5^6的矩陣表:如下
| |
1 |
2 |
3 |
4 |
5 |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
| 2 |
0 |
1 |
2 |
3 |
4 |
1 |
| 3 |
0 |
2 |
4 |
1 |
3 |
2 |
| 4 |
0 |
3 |
1 |
4 |
2 |
3 |
| 5 |
0 |
4 |
3 |
2 |
1 |
4 |
| 6 |
1 |
0 |
4 |
3 |
2 |
4 |
| 7 |
1 |
1 |
1 |
1 |
1 |
0 |
| 8 |
1 |
2 |
3 |
4 |
0 |
1 |
| 9 |
1 |
3 |
0 |
2 |
4 |
2 |
| 10 |
1 |
4 |
2 |
0 |
3 |
3 |
| 11 |
2 |
0 |
3 |
1 |
4 |
3 |
| 12 |
2 |
1 |
0 |
4 |
3 |
4 |
| 13 |
2 |
2 |
2 |
2 |
2 |
0 |
| 14 |
2 |
3 |
4 |
0 |
1 |
1 |
| 15 |
2 |
4 |
1 |
3 |
0 |
2 |
| 16 |
3 |
0 |
2 |
4 |
1 |
2 |
| 17 |
3 |
1 |
4 |
2 |
0 |
3 |
| 18 |
3 |
2 |
1 |
0 |
4 |
4 |
| 19 |
3 |
3 |
3 |
3 |
3 |
0 |
| 20 |
3 |
4 |
0 |
1 |
2 |
1 |
| 21 |
4 |
0 |
1 |
2 |
3 |
1 |
| 22 |
4 |
1 |
3 |
0 |
2 |
2 |
| 23 |
4 |
2 |
0 |
3 |
1 |
3 |
| 24 |
4 |
3 |
2 |
1 |
0 |
4 |
| 25 |
4 |
4 |
4 |
4 |
4 |
0 |
對於有些因子實際上所含的狀態數小於5個,可以用確定的狀態數去間隔性的填充範圍外的狀態。最後把因子實際的狀態按照上面的規則填到正交實驗表中,即可得到可接受的測試案例。
這裡對這兩種方法做個比較小結:
1. 正交分析方法是對任意多個因素取值組合實施“等機率”覆蓋,以便我們得到的實驗樣本均勻的分布在樣本空間。“等機率覆蓋”有助於在正交實驗中確定各個因素對實驗結果的貢獻,但是對於組合測試提高錯誤偵測能力並沒有協助。組合分析是隨機產生的,它的原則是覆蓋即可,不會去考慮“等機率”覆蓋的問題。
2. 通過上面的例子我們知道使用正交表構造測試案例,要尋找正確的正交表、對其進行剪裁、替換參數,方能獲得測試案例集。但是對其裁剪,會降低測試的覆蓋率;不裁剪,產生的測試案例數超出了我們可以接受的範圍。而組合分析運用PICT可以很方便的擷取一組測試資料,在迴歸測試中,可以很方便的運用另一組組合分析資料,提高測試覆蓋率。
運用正交實驗分析需要對要測試的因子及因子狀態有清楚的瞭解,並對其加權,哪些權值較重,哪些較輕,很適合測試小生用, 可以加深對測試對象的理解,對商務程序的熟悉。組合分析利於快速的產生測試案例,不需要對測試對象有深刻的瞭解。具體運用哪種方法,要看具體測試對象,也要看測試人員自己的喜好。
寫於2011/10/29