All-pairs Testing

除了正交表以外,All-pairs testing 也是常見的組合測試方法。

以一個角色扮演的遊戲測試為例,我們要測試一個主角的設定,可能有多種屬性可以選擇,例如:

  • 姓別:女生/男生
  • 職業:魔法師/戰士/盜賊
  • 屬性:金/木/水/火/土

所有的組合數為 2 x 3 x 5 = 30,這會花費我們測試人員相當多的時間。

All-pairs testing 強調的是,任兩種屬性的組合只要有出現過一次即可(任兩個屬性的組合稱為一對偶組合)。以我們這個遊戲測試為例,只要下面所有組合都在表格中出現過,就是一個 All-pairs 表格。

  • 女生 vs. 魔法師
  • 女生 vs. 戰士
  • 女生 vs. 盜賊
  • 男生 vs. 魔法師
  • 男生 vs. 戰士
  • 男生 vs. 盜賊
  • 魔法師 vs. 金
  • 魔法師 vs. 木
  • 魔法師 vs. 水
  • 魔法師 vs. 火
  • 魔法師 vs. 土
  • 戰士 vs. 金
  • 戰士 vs. 木
  • 戰士 vs. 水
  • 戰士 vs. 火
  • 戰士 vs. 土
  • 盜賊 vs. 金
  • 盜賊 vs. 木
  • 盜賊 vs. 水
  • 盜賊 vs. 火
  • 盜賊 vs. 土
  • 女生 vs. 金
  • 女生 vs. 木
  • 女生 vs. 水
  • 女生 vs. 火
  • 女生 vs. 土
  • 男生 vs. 金
  • 男生 vs. 木
  • 男生 vs. 水
  • 男生 vs. 火
  • 男生 vs. 土 (共有 31 個對偶組合)

為什麼只要測試所有對偶組合就足夠呢?這是基於某個假設:

Bug 之所以會發生,通常其成立條件不會太複雜,例如「戰士 + 金」這樣的特定組合就可能會發生問題。需要「戰士 + 金 + 男生」這樣三個條件同時成立、或是更多條件同時成立才會發生問題的機會其實不大。

表格產生工具

測試專家 James Bach 用 Perl 實作了一個產生 All-pairs Table 的小工具,你可以先用 Excel 產生 Tab 分隔的文字檔,作為這個小工具的輸入值,如下圖:

螢幕快照 2014-04-27 下午7.35.17

接著你只要執行

allpairs.exe testSample.txt

這個小工具就可以產生符合條件的測試表格:

Case ID

姓別

職業

屬性

1

女生

戰士

2

男生

魔法師

3

男生

戰士

4

女生

魔法師

5

女生

盜賊

6

男生

戰士

7

男生

盜賊

8

女生

戰士

9

女生

魔法師

10

男生

盜賊

11

~女生

盜賊

12

~女生

盜賊

13

~男生

魔法師

14

~女生

魔法師

15

~女生

戰士


(「~」符號表示可以任選)

檢查一遍可以發現,所有的對偶組合都出現過了,我們只要測 15 條就可以涵蓋全部的對偶組合。

這個小工具除了列出結果以外,也有列出每個對偶組合的出現次數,你也可以試試看。

參考資料

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s