場景法主要用於測試軟件的業務過程或業務邏輯,是一種基於軟件業務和用戶行為的測試方法。
1.概念:前幾篇討論的測試方法側重於數據的選擇,不涉及操作步驟,無法對涉及用戶操作的動態執行過程進行覆蓋測試。當在系統功能層面上進行測試時,不僅設計測試數據的問題,更側重要的是如何從系統整個業務流程的全部角度對系統進行測試。場景法運用場景對系統的功能點或業務流程進行描述,然后設計測試用例,從而提高了對系統主要功能和業務流程的測試效果。場景法適合測試業務流程清晰的系統或功能。
2.基本流和備選流
- 基本流:采用黑直線表示,是經過用例測試的最簡單路徑,即無任何差錯,程序從開始直接執行到結束的流程,往往是大多是用戶最常使用的操作過程,體現了軟件的主要功能與流程。通常,一項業務僅存在一個基本流,並且基本流僅有一個起點和一個終點
- 備選流:除基本流之外的各個支流。備選流可能從基本流開始,在某個特定的條件下執行,然后從新加入到基本流中(如備選流1,3);也可以起源於另一個備選流(如備選流2);還可以終止用例而不再加入到基本流中(如備選流2,4),反映了各種異常和錯誤情況。。
考慮用例從開始到結束所有可能的基本流和備選流的組合,可以確定不同的用例場景。例如,根據上圖,可以確定以下用例場景。
- 場景1:基本流
- 場景2:基本流→備選流1
- 場景3:基本流→備選流1→備選流2
- 場景4:基本流→備選流3
- 場景5:基本流→備選流3→備選流1
- 場景6:基本流→備選流3→備選流1→備選流2
- 場景7:基本流→備選流4
- 場景8:基本流→備選流3→備選流4
基本流和備選流的區別:
基本流 | 備選流 | |
測試重要性 | 重要 | 次要 |
數量 | 一個 | 一個或多個 |
初始節點位置 | 系統初始狀態 | 基本流或其他備選流 |
終止結點位置 | 系統終止狀態 | 基本流或系統終止狀態 |
是否構成完整的業務流程 | 是 | 否,僅為業務流程的執行片段 |
能否構成場景 | 能 | 否,需要基本流共同構成場景 |
3.場景法步驟及實例
根據場景法設計測試用例的步驟如下:
(1)根據說明,描述出程序的基本流及各個備選流;
(2)根據基本流和各個備選流生成不同的場景
(3)對每一個場景生成相應測試用例
(4)對生成的所有測試用例重新審查,去掉多余的測試用例。測試用例確定后,對每一個測試用例確定測試數據值
實例:某旅館住宿系統支持網上預定業務。游客訪問網站進行房間預定操作,選擇預定日期、合適的房間后,進行在線預定。此時需要使用個人賬號登陸系統,待登錄成功后,進行定金支付。訂金支付成功后,生成房間預訂單,完成整個房間的預定流程。系統允許的預定期限為30天,訂金為400元。
(1)確定基本流和備選流
類型 | 描述 | 類型 | 描述 |
基本流 | 選擇預定日期 | 備選流1 | 預定日期超限 |
選擇房間 | 備選流2 | 無空余房間 | |
登陸賬戶 | 備選流3 | 賬戶不存在 | |
訂金支付 | 備選流4 | 密碼錯誤 | |
產生預定訂單 | 備選流5 | 用戶賬戶余額不足 |
(2)根據基本流和備選流生成不同場景
- 場景1(成功預定房間):基本流
- 場景2(預定日期超限):基本流、備選流1
- 場景3(無空余房間):基本流、備選流2
- 場景4(賬號不存在):基本流、備選流3
- 場景5(密碼錯誤):基本流、備選流4
- 場景6(用戶賬號余額不足):基本流、備選流5
(3)用例設計
用例 | 場景/條件 | 預定日期 | 房間 | 賬號 | 密碼 | 賬號余額 | 預期結果 |
1 | 場景1 | V | V | V | V | V | 成功預定,提示預定成功,余額減少 |
2 | 場景2 | I | n/a | n/a | n/a | n/a | 提示“預定日期無效”,重選預定日期 |
3 | 場景3 | V | I | n/a | n/a | n/a | 提示“預定日期房間已滿”,重選預定日期 |
4 | 場景4 | V | I | I | n.a | n/a | 提示“賬號不存在”,重新輸入賬號 |
5 | 場景5 | V | V | V | I | n/a | 提示“密碼錯誤”,重新輸入密碼 |
6 | 場景6 | V | V | V | V | I | 提示“賬號余額不足請充值” |
在上表中,無須為條件輸入任何實際的數值,這樣做的優點是只需要查看各條件的“V”和“I”的設定情況,如果某個條件不具備“I”的取值情況,則說明還未測試該條件無效的情況,提示測試用例還不夠充足
(4)確定測試用例數據值(假定UserOne為已注冊用戶,密碼為MyPass;UserTwo是未注冊用戶)
用例 | 場景/條件 | 預定日期 | 房間 | 賬號 | 密碼 | 賬號余額 | 預期結果 |
1 | 場景1 | 一個有效日期 | 未滿 | UserOne | MyPass | 800 | 成功預定 |
2 | 場景2 | 一個超出期限的日期 | n/a | n/a | n/a | n/a | 日期超限 |
3 | 場景3 | 一個有效日期 | 已滿 | n/a | n/a | n/a | 無空余房間 |
4 | 場景4 | 一個有效日期 | 未滿 | UserTwo | n/a | n/a | 賬號錯誤 |
5 | 場景5 | 一個有效日期 | 未滿 | UserTwo | NoPass | n/a | 密碼錯誤 |
6 | 場景6 | 一個有效日期 | 未滿 | UserOne | MyPass | 200 | 余額不足 |