通過運用場景來對系統的功能點或業務流程的描述,從而提高測試效果。場景法一般包含基本流和備用流,從一個流程開始,通過描述經過的路徑來確定的過程,經過遍歷所有的基本流和備用流來完成整個場景。
為什么場景法能如此清晰的描述整個事件?因為,現在的系統基本上都是由事件來觸發控制流程的。如:我們申請一個項目,需先提交審批單據,再由部門經理審批,審核通過后由總經理來最終審批,如果部門經理審核不通過,就直接退回。每個事件觸發時的情景便形成了場景。而同一事件不同的觸發順序和處理結果形成事件流。這一系列的過程我們利用場景法可以清晰的描述清楚。
下圖來展示一下網上最長見的場景法基本情況的一個實例圖。

在這個圖中,有一個基本流和四個備選流。
每個經過用例的可能路徑,可以確定不同的用例場景。從基本流開始,再將基本流和備選流結合起來,可以確定以下用例場景:
場景 1 基本流
場景 2 基本流 備選流 1
場景 3 基本流 備選流 1 備選流 2
場景 4 基本流 備選流 3
場景 5 基本流 備選流 3 備選流 1
場景 6 基本流 備選流 3 備選流 1 備選流 2
場景 7 基本流 備選流 4
場景 8 基本流 備選流 3 備選流 4
從上面的實例我們就可以了解場景是如何利用基本流和備用流來確定的。
基本流:采用直黑線表示,是經過用例的最簡單的路徑(無任何差錯,程序從開始直接執行到結束)
備選流:采用不同顏色表示,一個備選流可能從基本流開始,在某個特定條件下執行,然后重新加入基本流中,也可以起源於另一個備選流,或終止用例,不在加入到基本流中;(各種錯誤情況)
下面是場景法的基本設計步驟
- 1. 根據說明,描述出程序的基本流及各項備選流
- 2. 根據基本流和各項備選流生成不同的場景
- 3. 對每一個場景生成相應的測試用例
- 4. 對生成的所有測試用例重新復審,去掉多余的測試用例,測試用例確定后,對每一個測試用例確定測試數據值
好了。說了一些場景法的基本概念和設計方法。想必大家已經有了一些了解了。再舉一個簡單例子來講解下。這里,我就不用網上很流行的ATM的例子了。我結合以前項目中遇到的情況。設計一個簡單的例子來講解下。
有一個在線購物的實例,用戶進入一個在線購物網站進行購物,選購物品后,進行在線購買,這時需要使用帳號登錄,登錄成功后,進行付錢交易,交易成功后,生成訂購單,完成整個購物過程。
第一步我們來確定基本流和備選流:
| 基本流 | 登錄在線購物網站,選擇物品,登錄帳號,付錢交易,生成訂購單 |
| 備選流1 | 帳號不存在 |
| 備選流2 | 帳號或密碼錯誤 |
| 備選流3 | 用戶帳號余額不足 |
| 備選流4 | 用戶帳號沒有錢 |
| 備選流x | 用戶退出系統 |
第二步我們根據基本流和備選流來確定場景:
| 場景1-成功購物 |
基本流 |
|
| 場景2-帳號不存在 |
基本流 |
備選流1 |
| 場景3-帳號或密碼錯誤 |
基本流 |
備選流2 |
| 場景4-用戶帳號余額不足 |
基本流 |
備選流3 |
| 場景5-用戶帳號沒有錢 |
基本流 |
備選流4 |
第三步我們來設計用例
對於每一個場景都需要確定測試用例。可以采用矩陣或決策表來確定和管理測試用例。
下面顯示了一種通用格式,其中各行代表各個測試用例,而各列則代表測試用例的信息。
本例中,對於每個測試用例,存在一個測試用例ID、條件(或說明)、測試用例中涉及的所有數據元素(作為輸入或已經存在於數據庫中)以及預期結果。
通過從確定執行用例場景所需的數據元素入手構建矩陣。然后,對於每個場景,至少要確定包含執行場景所需的適當條件的測試用例。例如,在下面的矩陣中,V(有效)用於表明這個條件必須是 VALID(有效的)才可執行基本流,而 I(無效)用於表明這種條件下將激活所需備選流。下表中使用的“n/a”(不適用)表明這個條件不適用於測試用例。
| 測試用例ID | 場景/條件 | 帳號 | 密碼 | 用戶帳號余額 | 預期結果 |
| 1 | 場景1:成功購物 | V | V | V | 成功購物 |
| 2 | 場景2:帳號不存在 | I | n/a | n/a | 提示帳號不存在 |
| 3 | 場景3:帳號或密碼錯誤(帳號正確,密碼錯誤) | V | I | n/a | 提示帳號或密碼錯誤,返回基本流步驟3 |
| 4 | 場景3:帳號或密碼錯誤(帳號錯誤,密碼正確) | V | I | n/a | 提示帳號或密碼錯誤,返回基本流步驟3 |
| 5 | 場景4:用戶帳號余額不足 | V | V | I | 提示帳號余額不足請充值 |
| 6 | 場景5:用戶帳號沒有錢 | V | V | I | 提示帳號余額請充值 |
第四步我們來設計數據,把數據填入上面的用例表中。
| 測試用例ID | 場景/條件 | 帳號 | 密碼 | 用戶帳號余額 | 預期結果 |
| 1 | 場景1:成功購物 | Sue | 1s2 | 200 | 成功購物,帳號余額減少200元 |
| 2 | 場景2:帳號不存在 | Jim | n/a | n/a | 提示帳號不存在 |
| 3 | 場景3:帳號或密碼錯誤(帳號正確,密碼錯誤) | Sun | 1234zxc | n/a | 提示帳號或密碼錯誤,返回基本流步驟3 |
| 4 | 場景3:帳號或密碼錯誤(帳號錯誤,密碼正確) | Suns | 123456 | n/a | 提示帳號或密碼錯誤,返回基本流步驟3 |
| 5 | 場景4:用戶帳號余額不足 | Van | 1v2 | 1 | 提示帳號余額不足請充值 |
| 6 | 場景5:用戶帳號沒有錢 | Tom | 12zxcdd | 0 | 提示帳號余額請充值 |
以上寫到的測試用例只是購物的一部分測試用例。需要的其他測試用例。
