對測試點分類後,測試建模之數據類測試設計

1.等價類和邊界值

測試輸入值按照測試效果進行劃分,將測試效果相同的測試輸入歸爲一個類,按這種方式得到的分類就叫“等價類”。

由於等價類中測試數據的輸出是一樣的,所以在測試的時候只需要在每個等價類中選擇一些測試樣本來進行測試就可以了,無須遍歷測試所有的值。

邊界值是對每個等價類中的參數,選擇輸入的“邊界”來作爲測試樣本,這樣的選擇策略是源於通過錯誤統計發現,問題更容易在邊界值中出現。如果系統處理等價類的邊界值時沒問題,那麼處理等價類中間的取值一般也不會有問題,這也是一個提高測試效率的方式。

一般來說,習慣將等價類和邊界值放在一起使用:首先對輸入進行等價類劃分,然後將每個等價類的邊界值作爲測試的樣本點。

例如,某參數A的取值範圍爲[1,10]。先按照等價類將這個參數劃分爲有效等價類和無效等價類兩類。

然後使用邊界值來爲每個等價類選擇測試樣本點。

這樣在測試的時候,只需使用1、10、0、11這幾個值作爲輸入即可。

等價類和邊界值是最爲經典的測試思想,Glenford J.Myers的著作《軟件測試的藝術》,在1979年出版第一版時就對此進行了詳細描述。但等價類和邊界值在實戰中卻很容易出問題——沒有正確劃分等價類、過度劃分等價類都會造成嚴重的測試遺漏,留下測試隱患。建議測試架構師在進行測試方案或測試用例評審時,着重檢查團隊(特別是缺乏經驗的團隊)的等價類劃分情況,保證測試設計的質量。

2.使用等價類分析表來建模

等價類分析表是一張“分析數據在××條件下,有哪些有效輸入和無效輸入的表”。

接下來以“WiFi上可以修改WiFi網絡的默認名稱”爲例,使用等價類分析表來進行測試建模。

“WiFi上可以修改WiFi網絡的默認名稱”包含的測試點,爲測試點3建立等價類分析表,確定有效等價類和無效等價類。

先來分析有效等價類。對“系統能夠允許的網絡命名”來說,主要包含兩個因素:名稱的長度和命名規則。“名稱長度”的有效等價類爲“名稱長度在1~10個字符之間,且只包含字母、數字和下劃線”;無效等價類包含“名稱長度爲空(小於1個字符)”“名稱長度大於10個字符”“名稱中包含除了下劃線之外的特殊符號”“名稱中包含了中文字符”。

再考慮將測試點1和測試點2作爲測試點3的測試條件,得到等價類分析表。

容易發現,在兩種條件下,測試點3的有效等價類和無效等價類都是一樣的,對應的輸出也是一樣的。因此我們可以對兩個條件進行“策略覆蓋”,把有效等價類和無效等價類分配到不同的測試條件中,對等價類分析表進行合併簡化。

等價類分析表幾個需要特別注意的地方。

1)可以將相關性強的有效等價類放在一起來減少測試用例。

2)不能合併無效等價類。

對無效等價類而言,必須是針對單個因素的,不能合併。比如,不能合併了“名稱長度大於10個字符”和“包含除了下劃線之外的特殊符號”這兩個無效等價類。

3.覆蓋等價類分析表完成測試用例的生成

接下來可以使用邊界值的方法,爲分析出來的每個等價類選擇測試數據,覆蓋等價類分析表,完成測試用例的生成。

接下來繼續以“WiFi上可以修改WiFi網絡的默認名稱”爲例,在已經得到的等價類分析表的基礎上,進一步得到“測試用例”。

參考等價類分析表,爲表中的每個等價類來確定邊界值。

有效等價類的取值

無效等價類的取值

將測試條件和測試輸入值進行組合

將該表中的“測試條件+每一個輸入值”作爲一個測試用例。

4.根據經驗補充測試用例

等價類邊界值設計法本身也是一種非全面覆蓋的測試設計方法,故難免會有遺漏。爲了讓測試更有效,可以根據經驗再補充一些測試用例。

1)是否要在等價類中增加一些除邊界值之外的測試數據?

2)有哪些地方是容易出問題的?是否還需要補充一些測試用例?


摘取自劉琛梅老師的《測試架構師修煉之道:從測試工程師到測試架構師 第2版》

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