基於矩陣模式的 Web 軟件測試手段

在 Web 測試中,我們經常針對某個測試點進行多種場景測試,或者是重複性測試,或者與其他測試點交互測試模仿用戶行爲,這樣就需要編寫多條測試用例來完全覆蓋。利用矩陣模式不僅可以縮小編寫測試用例佔用的時間和人力,而且對其測試結果易於追蹤

陣模式形象的可理解爲表格,我們常用表格來記錄複雜的數據,若將表格首行和首列的數據看成一個個簡單的測試點,那除首行首列之外的表格裏的數據就可以看成一個複雜測試用例期望執行的結果,那這個表就是一個容納了很多測試用例的數據表。本文就矩陣模式在軟件測試用例中的應用進行闡述,以幫助您瞭解如何巧妙的利用矩陣模式這種簡單手段,更高效的記錄測試用例,尤其是複雜場景的測試用例

矩陣模式對測試用例的重要性

在軟件測試中,編寫測試用例是必不可少的一環。理論上測試人員會根據產品設計文檔等將測試點全部羅列出來,然後根據每個測試點設計不同的場景,逐一編寫測試用例。但通過分析會發現某個測試點的場景很類似,編寫的測試用例中有些步驟的重複率很高。而在實際測試中,這些重複性的步驟利用率並不高,有經驗的測試人員無需逐條查看每一步驟,根據場景就可以執行類似測試用例。

針對這一情況,Ryan Davis 早在 2007 年就提出了矩陣模式,用矩陣模式記錄測試用例,其實相當於把多條測試用例組合成一個複雜的產品檢查清單,一方面節省了編寫和維護測試用例的時間,提高工作效率;另一方面可以將傳統的測試用例看起來簡單化,增加易讀性,直觀的將功能點展現出來,方便測試人員全局追蹤測試狀態。

本文就矩陣模式在軟件測試的應用展開,主要介紹矩陣模式在多個場景測試,重複性問題測試,交互測試的應用實例,以及改進的矩陣模式原理及其工具。

多個場景測試

在測試中經常會針對某一測試點設計不同的場景進行測試,以達到模擬用戶使用的真正效果。比如數據輸入測試,如密碼輸入域,一般會限制至少 6 位等條件。針對密碼輸入長度至少 6 位這一測試點,至少需測試以下四種場景:

  • 不輸入;
  • 小於 6 位;
  • 等於 6 位;
  • 大於 6 位;

按照傳統測試用例編寫方式需要編寫四條類似的測試用例,而且這四條的測試步驟幾乎一樣。如下表 1-表 4 所示:

表 1.密碼輸入域長度測試用例-不輸入
Test steps Expected result
1. Open a application…. Can open normally
2. No input in password field  
3.Submit Alert “password is not allowed blank”
表 2.密碼輸入域長度測試用例-小於 6 位
Test steps Expected result
1. Open a application…. Can open normally
2. Input password with less than 6 digit in password filed  
3.Submit Alert “password length must be more than or equal 6 digit”
表 3.密碼輸入域長度測試用例-等於 6 位
Test steps Expected result
1. Open a application…. Can open normally
2. Input password with 6 digit in password filed  
3.Submit Success
表 4.密碼輸入域長度測試用例-大於 6 位
Test steps Expected result
1. Open a application…. Can open normally
2. Input password with more than 6 digit in password filed  
3.Submit Success

分析這四個測試用例,發現除了第二步輸入的參數不同之外,其餘步驟都一樣。我們可以把這一參數抽離出來,通過矩陣模式可以將測試用例簡化表示,如下表 5 所示:

表 5.密碼輸入域長度測試用例
Test point Expected result Execute result
不輸入 Alert “password is not allowed blank”  
小於 6 位 Alert “password length must be more than or equal 6 digit”  
等於 6 位 Success  
大於 6 位 Success  

比較發現利用矩陣模式簡單明瞭地將密碼輸入域長度的測試點列出來,爲測試人員節省了編寫測試用例的時間。理論上這種形式的測試用例不能夠完全稱爲完整的測試用例,沒有像傳統的測試用例那樣,將每一步驟都詳細列出來,但實際上反而更適用,尤其是當某一測試點有一定數量級的測試場景需要測試時,或者某個測試用例有多個測試點時,通過矩陣模式制定這種形式的測試用例還是很值得的。

重複性問題測試

重複性問題是指對同一個測試點一直進行測試。如在某些軟件中,有很多對象的屬性是一樣的,如 table,shape,chart 等,它們都有 color fill 屬性,color 又可分爲三種類型:theme color,standard color,custom color。按照傳統的測試用例記錄方法,測試人員必須針對每一個對象的 color fill 編寫測試用例。如下表 6-8 所示:

表 6.Table Fill
Test steps Expected result
1.Insert a table Can insert normally
2.Set theme/standard/custom color for table Success
表 7.Shape Fill
Test steps Expected result
1.Insert a shape Can insert normally
2. Set theme/standard/custom color for shape Success
表 8.Chart Fill
Test steps Expected result
1.Insert a chart Can insert normally
2. Set theme/standard/custom color for chart Success

分析這三個測試用例,我們可以將測試對象以及測試點抽離出來,通過矩陣模式可以將這些對象的 color fill 測試用例表示如下表 9 所示:

表 9.Table/Shape/Chart color Fill
Test object Expected result
Theme color Standard color Custom color
Table Success Success Success
Shape Success Success Success
Chart Success Success Success

不難發現矩陣模式的測試用例形式上更加直觀,更容易追蹤測試狀態。

交互測試

操作是用戶使用軟件很普遍的行爲,而且用戶不可能像測試人員一樣根據測試步驟按部就班的操作,所以多種操作交互執行測試就變得非常重要。通過矩陣模式對這些常用場景進行不同的組合測試,可以達到一般用戶使用的效果測試,更好的從用戶角度發現產品缺陷。例如在辦公軟件中,Font style 是用戶經常用到的,有 bold,italic,underline 等。利用矩陣模式可以將這三個屬性進行組合測試,每種屬性可以設置兩種值,分別用 Y 和 N 來表示,如下表 10 所示:

表 10.Font style
No. Bold Italic Underline Expected result
1 Y Y Y  
2 Y Y N  
3 Y N Y  
4 Y N N  
5 N N Y  
6 N N N  
7 N Y Y  
8 N Y N  

這種形式的測試用例將所有可能的組合都表示出來,達到百分之百的覆蓋,提高了測試覆蓋率。

改進的矩陣模式

不難從上面的多個場景測試,重複性問題測試以及交互測試中發現,所舉的例子涉及的參數數量都比較少,如果一旦參數數量及其取值都達到一定數量級,就會產生太多的測試用例,這在實際的測試中是不可能做到的。如果可以保證一定的測試覆蓋率的前提下,將這些測試用例壓縮到一定比例,這將會大大的提高測試工作的效率。

在這裏我們應用全對偶測試理論進行改進。全對偶的原則就是每個變量的每一個取值都必須與至少一個測試用例中其他變量的取值配對過一次。以交互測試中 Font style 舉例說明,假設 bold,italic 和 underline 分別都有兩個取值 Y,N,則兩兩配對如下表 11 所示:

表 11.All pairs
Variable 1 Variable 2 Value 1 Value 2 Appearance
Bold Italic Y Y Case 1
Bold Italic Y N Case 2
Bold Italic N Y Case 3
Bold Italic N N Case 4
Bold Underline Y Y Case 1
Bold Underline Y N Case 2
Bold Underline N Y Case 4
Bold Underline N N Case 2
Italic Underline Y Y Case 1
Italic Underline Y N Case 3
Italic Underline N Y Case 4
Italic Underline N N Case 2

通過全對偶方法將表 10 的測試用例壓縮,用矩陣模式表示的測試用例如下表 12 所示:

表 12.Font style
No. Bold Italic Underline Expected result
1 Y Y Y  
2 Y N N  
3 N Y N  
4 N N Y  

每個配對都在表 12 的測試用例中出現過一次,出現的情況可以參考表 11 的 Appearance 列。

爲了利用全對偶方法產生組合測試用例,James Bach 使用 Perl 語言開發了一個全對偶工具,下面介紹一下如何使用這個工具產生組合測試用例。

第一步,無需安裝,直接下載並解壓到某個路徑。下載地址:http://www.satisfice.com/tools/pairs.zip

第二步,新建一個excel文件,在excel文件中列出測試用例的變量及其取值,如下圖1所示。並將其拷貝到text文件中保存到與工具一樣的路徑下面並假設命名爲Variable.txt。這個文件可以隨便命名,但不允許有空格存在名字中間。

圖 1.Variable.txt
Variable.txt

第三步,在 Dos 窗口下運行命令。切換到工具所在路徑,輸入 allpairs.exe Variable.txt > TestCase.txt 並回車。其中 Variable.txt 是第二步創建的,TestCase.txt 是用來存儲產生的組合測試用例的文件,同樣名字可以隨便命名,但不允許名字中間有空格。

執行結束後,產生的組合測試用例及其每一個配對在測試用例中出現的情況都在 TestCase.txt 文件中,如下圖 2 所示,其中 pairings 列是用來記錄每一個測試用例包含的唯一配對數量,appearance 列是用來記錄每一個配對出現的次數,cases 列是用來記錄每一個配對出現在哪一個產生的測試用例中。

圖 2.TestCase.txt
TestCase.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章