天天看點

正交分析法設計理論及實踐

一、理念介紹

在黑盒用例設計方法中有一個大家耳熟能詳的正交分析法,卻鮮有人知 “Pairwise”設計理念。

設想一種常見的場景,工期很緊的項目,原定的測試時間被“無理”地壓縮之後,如何能用極少的時間去保證更高的品質呢?

舉個例子,如果讓你測試一下word字型效果,你會整理出多少個用例呢?

正交分析法設計理論及實踐

答案很簡單是2的七次方=128個用例,但當工期特别緊的時候(128個用例執行不完)你又會從中選取哪些用例來執行呢?

“Pairwise”(官網:

http://www.pairwise.org/

)是行之有效的一個思路或者是強有力的理論基礎。它是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出來的。他是美國的一位心理統計學家。Pairwise也正是基于數學統計和對傳統的正交分析法進行優化後得到的産物。

Pairwise基于如下2個假設:

(1)每一個次元都是正交的,即每一個次元互相都沒有交集。

(2)根據數學統計分析,73%的缺陷(單因子是35%,雙因子是38%)是由單因子或2個因子互相作用産生的。19%的缺陷是由3個因子互相作用産生的。

是以,pairwise基于覆寫所有2因子的互動作用産生的用例集合成本效益最高而産生的。

舉例來說明:當因子A為a1、B為b1時,接下來不可出現A為a1、B為b1 或者是 B為b1、A為a1(為什麼會倒過來描述,可以思考一下)。

當然,在現實中會是有各種限制條件的,是以會出現IF … Then…,或者是在同一場景下,因子A、B、C之間的組合是可以精簡的,而因子D、E、F、G卻是需要全組合(在Pairwise中的術語稱謂“階”)。一個個完全依靠人工來進行輸出太麻煩,各大contributor貢獻出自己的開源工具,這裡挑一個大公司的(微軟)給大家介紹一下,工具名PICT。

工具下載下傳位址:

https://github.com/Microsoft/pict

最新的版本支援多平台(linux、mac、windows),需要自行編譯。

二、PICT工具使用

正交分析法設計理論及實踐

1)先準備一個文本檔案abc.txt,内容如下:

正交分析法設計理論及實踐

直接運作pict abc.txt即可得到pairwise之後的結果:

正交分析法設計理論及實踐

如果需要全組合情況,則可以在指令行參數中指定/o:3,其中3是因子的個數,(/o的預設值是2,此參數為上面所述的“階”)如:

正交分析法設計理論及實踐

2)在文本中指定因子的組合情況,

正交分析法設計理論及實踐

直接運作pict abc.txt 即可得到全組合的

3)因子判斷結構:

正交分析法設計理論及實踐

輸出的結果:(滿足了當A為a1時,B不等于b2,C 不等于c3)

正交分析法設計理論及實踐

三、案例實踐

以“星火錢包——開戶管理”的 “查詢” 功能測試為例來詳細介紹一下PICT工具的使用思路和過程。

正交分析法設計理論及實踐

查詢因子有:“星火使用者ID”、“開戶狀态”、“開戶管道”、“開戶時間”,其中每個因子的限制如下:

  • 星火使用者ID:不限制輸入的内容
  • 開戶狀态:請選擇(預設)、開戶成功、開戶失敗
  • 開戶管道:請選擇(預設)、開戶成功、開戶失敗
  • 開戶時間:選擇時間區間範圍(前端頁面的限制:填寫其一,另外一個值會自動填充相同的時間,結束日期>=開始日期)(先不考慮背景接口的限制)。

每個因子需要考慮值的範圍為:

星火使用者ID:空(預設)、非數字、120988476548、120988476900

(假設120988476548是可以查詢出結果的,120988476900是查詢不出結果的)

開戶管道:請選擇(預設)、PC、wap、app

開戶開始時間:空(預設)、20150101、20160101、20170101

開戶結束時間:空(預設)、20150101、20150301、20160201、20160301、20171101

“星火使用者ID”、“開戶狀态”、“開戶管道”這三個因子,比較好整理,如圖所示,直接按照上面的内容直接填寫至檔案中即可:

正交分析法設計理論及實踐

而“開戶開始時間”“開戶結束時間”有依賴性,是以,需要特殊處理,我們将它們之間的依賴“翻譯”成PICT所能了解的方式:

1)“填寫其一,另外一個值會自動填充相同的時間”

換句話說,“開戶開始時間”“開戶結束時間”隻能同時為空。

“翻譯”:

IF [開戶開始時間] = "空" THEN [開戶結束時間]= "空";

IF [開戶結束時間] = "空" THEN [開戶開始時間]= "空";

(

當然,你也可以這樣寫:

IF [開戶開始時間] NOT IN {"20150101","20160101","20170101"} THEN [開戶結束時間]= "空";

IF [開戶結束時間] NOT IN {"20150101","20150301","20160201","20160301","20171101"} THEN [開戶開始時間]= "空";

)           

2)“結束日期>=開始日期”

IF [開戶開始時間] <> "空" AND [開戶結束時間] <> "空" THEN [開戶開始時間] <= [開戶結束時間];

正交分析法設計理論及實踐

準備好全部的“翻譯”結果,如圖所示:

正交分析法設計理論及實踐

我們先看一下“全組合”的用例總數為多少?答案481條,如圖所示:

正交分析法設計理論及實踐

使用Pairwise思想,整理出的用例數量僅為30條,如圖所示:

正交分析法設計理論及實踐

用例的詳細内容如下:(每行即每條用例)

星火使用者ID 開戶狀态 開戶管道 開戶開始時間 開戶結束時間
120988476900 請選擇
120988476548 開戶失敗 PC 20150101 20171101
非數字 wap
開戶成功 app 20150301
pc 20160101 20160301
20170101
20160201

四、總結

Pairwise是一種有效的測試用例生成技術,通過對測試變量的所有次元及值的組合,避免窮舉測試所有次元的所有值及其組合來減少測試用例量。

遙想當年,Cohen等人應用Pairwise測試技術對Unix中的“Sort”指令進行了測試,測試結果表明覆寫率高達90%以上。

對于當今疊代開發測試如此高效率的時代,更需要将這種測試方法,并将其應用于測試當中。

作者:宋金剛

來源:宜信技術學院

繼續閱讀