1 背景及問題
G.J.Myers在<軟體測試技巧>中提出:測試是為了尋找錯誤而執行程式的過程,一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的測試, 一個成功的測試是揭示了迄今為止尚未發現的錯誤的測試。
對於新手來說,日常測試用例設計時,很少用到系統的方法論,大多是根據產品需求文件或自己的主觀判斷直接進行測試用例的編寫,經常會造成漏測等嚴重問題。所以,使用方法論支撐測試用例設計的過程,使其更加合理化、規範化,是一件至關重要的事情。但測試用例設計方法種類繁多,適用場景也各不相同,針對具體需求層面進行測試用例編寫時,很難選取合適的方法來進行設計。
2 目標及意義
質量管理領域權威人物J.M.Juran將質量定義為“決定產品效能”和‘“滿意程度’的特徵”, 而測試注重於產品的滿意度。 測試用例設計的過程是將產品需求轉化為一種可操作性的步驟,在整個產品生命週期中發揮著至關重要的作用,基於方法論的規範化用例設計,能幫助測試人員擴充測試範圍,完善測試覆蓋面,降低漏測率,提升產品滿意度。
本系列文章對經典的測試用例設計方法逐個進行剖析,並深入到日常工作的實際需求中,結合具體場景進行實戰演練,並分別對各類方法的適用場景進行歸納梳理,形成可複用系統模板,幫助大家快速熟悉常用測試用例設計方法,提升測試人員專業度及工作效率,從而提升交付質量。
3 初探
說到測試用例設計方法,大家最容易想到的肯定是等價類和邊界值法,所以,首先,我們將對這兩種測試用例設計方法進行介紹。
3.1 等價類劃分法
3.1.1 概念及原理
1.定義
- 等價類:某個輸入域的子集合
- 等價類劃分:有效等價類(合理的、有意義的輸入集合)
- 無效等價類(不合理的 or 無意義的輸入集合)
2. 基本思想
設計測試用例時,要同時考慮這兩種等價類。因為軟體不僅要能接收合理的資料,也要能經受意外的考驗,這樣的測試才能確保軟體具有更高的可靠性。
3.1.2 方法步驟
- 根據需求,大體上可以先劃分為有效和無效兩種
- 然後再細化相應的等價類(從組合情況進行細化)
- 建立等價類表
- 生成測試用例
3.1.3 舉個例子
場景:一個輸入框的輸入規則為1~12位字母和數字組合
根據等價類劃分法,具體可建立等價類表如下(把輸入拆分成長度和符號組合兩種),即可得到用例
劃分 | 有效等價類 | 編號 | 無效等價類 | 編號 |
---|---|---|---|---|
長度 | [1,12] | (1) | 0 | (2) |
- | - | (12,+∞) | (3) | |
符號 | a | (4) | 數字+其它字元 | (5) |
- | - | 其它字元 | (6) |
3.2 邊界值分析法
3.2.1 概念及原理
1.定義
是等價類劃分的一個補充方法,將等價類劃分的邊界作為用例設計(在有效和無效等價類的邊界取值中,會存在值重複的情況,可按有效無效進行取捨)。
2. 基本思想
大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部,所以為了保證測試質量,就需要重點測試邊界,就有了邊界值這樣的測試方法。
3. 等價類和邊界值的關係
- 邊界值分析法是作為對等價類劃分法的補充,邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。
- 邊界值資料本質上是屬於某個等價類的範圍,測試時有時是一種冗餘(正好等於,剛剛大於或剛剛小於邊界的值),但是為了更好的測試質量,邊界值必須要單獨進行測試,適當必要的冗餘是可以接受的。
4. 使用方法
那我們怎麼去找邊界值呢?一般會關注以下幾個點:
- 上點:區間的端點值
- 內點:上點之間任意一點
- 離點:若是開區間的離點,就是開區間中上點內側緊鄰的點;若是閉區間的離點,就是閉區間中上點外側緊鄰的點
① 閉區間
② 半開半閉區間
③ 開區間
3.2.2 舉個例子
場景:一個輸入框的輸入規則為1~12位字母和數字組合
具體可建立等價類表如下(把輸入拆分成長度和符號組合兩種)
根據邊界值法,按照閉區間[1, 12]確定上點(1,12)、內點(2)、離點(0,13),建立等價類和邊界值表如下(把輸入拆分成長度和符號組合兩種),即可得到用例。
劃分 | 有效等價類 | 邊界值 | 無效等價類 | 邊界值 |
---|---|---|---|---|
長度 | [1,12] | 1,2,11,12 | 0 | 0 |
- | - | (12,+∞) | 13 | |
符號 | a | 數字+其它字元 | ||
- | - | 其它字元 |
3.3 測試設計——“等價類+邊界值”
3.3.1 舉個例子
場景:手機號相容座機號的格式校驗
- 有橫槓:XXX(3位或4位)-XXXXXXXX(7或8位):3+7或者3+8或者4+7或者4+8
- 有橫槓有分機號:XXX(3位或4位)-XXXXXXXX(7或8位)-XXX(1-5位)
- 無橫槓:XXX(3位或4位)XXXXXXXX(7或8位) 11位-17位
- 取消第一位必須為”1“,且取消第二位必須為“除0,1,2”限制。
設計步驟:
1.等價類劃分:以第一條為例-有橫槓:XXX(3位或4位)-XXXXXXXX(7或8位)
根據等價類劃分法的步驟,首先進行拆分第一部分和第二部分,獲得第一部分的有效等價類[3, 4]和無效等價類(len>4 & 0<len<3);獲得第二部分的有效等價類[7,8]和無效等價類(len>8 & 0<len<7)。以此類推,獲取所有的有效和無效等價類。
2. 邊界值分析:根據區間開閉性,定位上點、內點、離點。
如:有效等價類[3, 4]的上點為3和4,無效等價類(len>4 & 0<len<3)的離點為5和2,內點無。
3. 資料處理:按照步驟1和2及資料的組合情況,列出所有的情況。
4. 整理最終用例:根據步驟3得到的資料,按照要求設計測試資料及相應的預期結果,得到最終測試用例。
4 總結
方法 | 等價類劃分法 | 邊界值分析法 |
---|---|---|
核心 | “分類”及代表值 | 邊界值和邊界兩邊的鄰值 |
優點 | 透過把輸入資料和輸出資料進行分類,選用分類中的代表值,在保證了測試覆蓋的情況下大大減少了測試用例的數量,使測試工作變得簡單高效 | 大量的程式錯誤發生在輸入的邊界上,考慮了邊界值的測試用例能更高效發現程式中的錯誤和缺陷 |
缺點 | 輸入與輸入之間的關係考慮少,可能產生一些邏輯錯誤。還需要其他用例設計方法來補充測試 | 只能作為一個對其他設計方法的補充;這種方法表面上聽起來簡單,但有的邊界值非常微妙,不容易確定下來;只適用於多個變數相互獨立又都代表實際物理量的情況,對變數之間的依賴關係則考慮不到。 |
適用場景 | 有資料輸入(編輯框)的地方,可以使用等價類劃分法。例如:使用者登入、註冊、新建、查詢 | 有資料輸入且存在取值邊界或長度邊界時,邊界值法往往跟等價類劃分法一起使用,從而形成一套較為完善的測試方案。 |
等價類劃分和邊界值分析法只考慮了單個的輸入條件,在輸入條件有各種組合、輸入條件之間的相互制約關係的場景中很難發揮有效作用,這個時候就需要因果圖與判定表法來幫助我們設計測試用例了,讓我們一起來看看吧~
作者:京東物流 陳雨婷 王鵬 張苑 李碩
來源:京東雲開發者社群 自猿其說Tech 轉載請註明來源