常見的測試用例設計方法
1、等價類划分法:
有這樣一條測試基本原則:窮盡測試是不可能的。即使是看起來規模很小的軟件產品,其輸入數據的組合或邏輯路徑也幾乎是無窮的,也就是說,想對測試對象進行完全的檢查和覆蓋,基本上是不可能的。
我們可以依據數據的特性,將所有的測試數據分為若干個類,每一類的代表性數據在測試中的作用等價於這一類中的其他值,也就是說,如果某一類中的一個例子發現了錯誤A,這一等價類中的其他例子也能發現這個錯誤A;反之,如果某一類中的一個例子沒有發現錯誤,則這一類中的其他例子也不會查出錯誤。這種划分數據的方法被稱為等價類划分方法,划分等價類時遵循以下三個標准:
- 完備性:划分的子集合的並集是整個集合;
- 無冗余性:子集互不相交;
- 等價性:屬於同一等價類的測試數據,映射到“相同的執行路徑”。
通過這種選擇適當的數據子集3來代表整個數據集的方法,既降低了測試的數目,又實現了“合理的”覆蓋。
!!注意:軟件不僅要能接收合理的數據,也要能經受意外的考驗。因此在划分等價類的時候不僅要考慮合理的、有意義的輸入數據構成的集合,還要考慮不合理的或無意義的輸入數據所構成的集合。我們將前者稱為有效等價類,它能驗證需求是否實現,后者則為無效等價類,能檢驗是否會出現異常。無效等價類至少應有一個,也可能又多個,視具體情況而定。
EXAMPLE需求:要求用戶輸入年份,年份限定在1980~2020年,由4位數字表示。
使用等價類划分法,首先確定有效等價類:4位數字字符且年份為1980~2020。然后確定無效等價類:如輸入的類型和長度不合理,年份超出范圍等,具體如下表所示:
設計測試用例,覆蓋所有的有效等價類和無效等價類:
2、邊界值
大量的錯誤發生在輸入或輸出范圍的邊界上,而不是在輸入輸出范圍的內部。因此針對各種邊界情況設計測試用例,有很大的概率可以查出更多的錯誤。
這種對輸入或輸出的邊界值進行測試的方法就是邊界值法。邊界值法多用於對數據進行測試,在數據測試的時候,除了要關注邊界值還要關注默認值,空白,空值,零值和無。除上述常規數據外,非常規的數據還要關注非法值,錯誤值,不正確值和垃圾數據,即所有可能的無效等價類數據。
具體應用邊界值法時,應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據。要特別說明的是,使用邊界值法不僅只考慮輸入數據,也應該考慮輸出數據。
EXAMPLE需求:豆瓣用戶可在首頁搜索框內輸入關鍵詞搜索感興趣的內容。如在豆瓣搜索“星際穿越”。
使用邊界值法設計測試用例,覆蓋輸入數據和輸出數據:
- 關鍵詞(輸入數據):
- 為空
- 關鍵詞長度為1(最小長度)
- 關鍵詞長度為60(最大長度)
- 關鍵詞長度為61
- 搜索結果(輸出數據):
- 搜索結果為空
- 有一個搜索結果
- 有20個搜索結果(一次最多展示20條數據)
- 有21個搜索結果(通過更多按鈕查看)
3、場景法/流程分析法
上面介紹的這兩種方法對於單點測試是十分有效額,例如用戶想使用Amazon買東西,搜索輸入框的測試我們可以運用邊界值法。但是搜索可能只是用戶使用Amazon的第一步,它還可能點擊某商品查看詳情、將商品加入購物車、從購物車中進行結算或者使用直接購買功能結算,用戶的操作會觸發事件,不同事件觸發的順序不同,會形成不同的事件結果。
根據場景來設計測試用例的方法我們稱之為場景法,也稱為流程分析法。使用場景法的第一步自然是畫出業務流程圖,通常我們能從BA/UX處獲取到流程圖,如果沒有,那就需要自己去梳理了。場景法一般包括基本流、備用流和異常流,基本流表示通過業務流程時輸入都正確,能達到目標;備選流表示通過業務流程時輸入錯誤(或者操作錯誤)導致流程存在反復,但是經過糾正后仍能達到目標;異常流是指通過業務流程時輸入錯誤(或者操作錯誤)產生異常終止流程。
畫流程圖可以先從基本流開始,也就是確定Happy Path,然后補充備選流,最后還要考慮異常場景來確定異常流。有了流程圖,就可以從中選取測試路徑來構造測試用例。
EXAMPLE需求:“豆瓣評分”微信小程序支持用戶使用微信登陸,並在登陸時獲取用戶額手機號碼。
上圖左為已開發完成的微信登陸功能截圖,右圖為根據要求畫出的業務流程圖,圖中實際上只包括了基本流和備選流。根據流程圖設計的測試用例的過程較為簡單。
4、錯誤推斷法
在測試程序時,人們可以根據經驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例的方法,這種方法被稱為錯誤推斷法。
錯誤推斷法沒有固定的形式,依靠的是經驗和直覺,很多時候,我們都會不知不覺的使用到。
錯誤推測法和目前非常流行的“探索式測試方法”的基本思想和理念是不謀而合的,這類方法在目前的敏捷開發模式下的投入產出比很高,因此被廣泛應用。但是,這個方法的缺點也顯而易見,那就是難以系統化,而且過度依賴個人能力。