測試用例設計——場景分析法

轉載

測試用例設計——場景分析法

 

定義

分析軟件應用的場景,從用戶的角度出發,從場景的角度來設計測試用例,是一種面向用戶的測試用例設計方法。php

關心用戶作什麼,而不是關心產品作什麼數據庫

優勢:實用性強,有效,設計出來的用例有價值安全

缺點:可能使用的場景不必定能對事件系列進行全面的分析,設計出來的用例不完整。網絡

場景分析是經過描述流經用例路徑來肯定的過程,這個流通過程要從用例開始到結束遍歷其中全部基本流 :直黑線表示基本流,是最基本、最簡單的路徑;(軟件功能按照正確的事件流實現的一條正確流程無任何錯,程序從開始直到結束) 測試

遵循上圖中每一個通過用例的可能路徑,能夠肯定不一樣的用例場景。從基本流開始,再將基本流和備選流結合起來,能夠肯定如下用例場景:網站

場景1 基本流      
場景2 基本流 備選流1    
場景3 基本流 備選流1 備選流2  
場景4 基本流 備選流3    
場景5 基本流 備選流3 備選流1  
場景6 基本流 備選流3 備選流1 備選流2
場景7 基本流 備選流4    
場景8 基本流 備選流3 備選流4  

注:爲方便起見,場景 五、6 和 8 只描述了備選流 3 指示的循環執行一次的狀況。spa

用場景分析法設計測試用例的步驟:

1.根聽說明,畫出流程圖,肯定基本流和備選流;設計

2.根據基本流和各項備選流肯定場景;3d

3.對每個場景生成測試用例;code

4.對生成的全部測試用例從新複審,去掉多餘的測試用例,測試用例肯定後,對每個測試用例肯定測試數據值。

 

用例場景例子

用戶登陸到網站後,進行書籍的選擇,當選好本身心儀的書籍後進行訂購,這時把所需圖書放進購物車,等進行結賬的時候,用戶須要登陸本身註冊的賬號,登陸成功後,進行付款交易,交易成功後,生成訂購單,整個購物過程結束。

第一步:畫出流程圖,肯定基本流和備選流;

基本流:登陸在線網站→選擇書籍→放入購物車→登陸帳號→付款→生成訂單

備選流1:用戶不存在→註冊用戶

備選流2:密碼不正確

備選流3:帳戶餘額不足→充值

第二步:根據基本流和各項備選流肯定場景;

場景1(成功購物):基本流;

場景2(帳戶不存在):基本流 備選流1

場景3(帳戶密碼錯誤):基本流 備選流2

場景4(帳戶餘額不足):基本流 備選流3

第三步:對每個場景生成測試用例;

第四步:對生成的全部測試用例從新複審,補充測試數據值;

提款測試用例

基本流 本用例的開端是 ATM 處於準備就緒狀態。
準備提款 - 客戶將銀行卡插入 ATM 機的讀卡機。
驗證銀行卡 - ATM 機從銀行卡的磁條中讀取賬戶代碼,並檢查它是否屬於能夠接收的銀行卡。
輸入 PIN - ATM 要求客戶輸入 PIN 碼(4 位)
驗證賬戶代碼和 PIN - 驗證賬戶代碼和 PIN 以肯定該賬戶是否有效以及所輸入的 PIN 對該賬戶來講是否正確。對於此事件流,賬戶是有效的並且 PIN 對此賬戶來講正確無誤。
ATM 選項 - ATM 顯示在本機上可用的各類選項。在此事件流中,銀行客戶一般選擇「提款」。
輸入金額 - 要從 ATM 中提取的金額。對於此事件流,客戶需選擇預設的金額(10 美圓、20 美圓、50 美圓或 100 美圓) 。
受權-ATM 經過將卡 ID、PIN、金額以及賬戶信息做爲一筆交易發送給銀行系統來啓動驗證過程。對於此事件流,銀行系統處於聯機狀態,並且對受權請求給予答覆,批准完成提款過程,而且據此更新賬戶餘額。
出鈔 - 提供現金。
返回銀行卡 - 銀行卡被返還。
收據 - 打印收據並提供給客戶。ATM 還相應地更新內部記錄。
用例結束時 ATM 又回到準備就緒狀態。
備選流 1 - 銀行卡無效 在基本流步驟 2 中 - 驗證銀行卡,若是卡是無效的,則卡被退回,同時會通知相關消息。
備選流 2 - ATM 內沒有現金 在基本流步驟 5 中 - ATM 選項,若是 ATM 內沒有現金,則「提款」選項將沒法使用。
備選流 3 - ATM 內現金不足 在基本流步驟 6 中- 輸入金額,若是 ATM 機內金額少於請求提取的金額,則將顯示一則適當的消息,而且在步驟 6 - 輸入金額處從新加入基本流。
備選流 4 - PIN 有誤 在基本流步驟 4 中- 驗證賬戶和 PIN,客戶有三次機會輸入 PIN。
若是 PIN 輸入有誤,ATM 將顯示適當的消息;若是還存在輸入機會,則此事件流在步驟 3 - 輸入 PIN 處從新加入基本流。
若是最後一次嘗試輸入的 PIN 碼仍然錯誤,則該卡將被 ATM 機保留,
同時 ATM 返回到準備就緒狀態,本用例終止。
備選流 5 - 賬戶不存在 在基本流步驟 4 中 - 驗證賬戶和 PIN,若是銀行系統返回的代碼代表找不到該賬戶或禁止從該賬戶中提款,則 ATM 顯示適當的消息而且在步驟 9 - 返回銀行卡處從新加入基本流。
備選流 6 - 賬面金額不足 在基本流步驟 7 - 受權中,銀行系統返回代碼代表賬戶餘額少於在基本流步驟 6 - 輸入金額內輸入的金額,則 ATM 顯示適當的消息而且在步驟 6 - 輸入金額處從新加入基本流。
備選流 7 - 達到每日最大的提款
金額
在基本流步驟7- 受權中, 銀行系統返回的代碼代表包括本提款請求在內,客戶已經或將超過在 24 小時內容許提取的最多金額,則 ATM 顯示適當的消息並在步驟 6 - 輸入金額上從新加入基本流。
備選流 x - 記錄錯誤 若是在基本流步驟 10 - 收據中,記錄沒法更新,則 ATM 進入「安全模式」,在此模式下全部功能都將暫停使用。同時向銀行系統發送一條適當的警報信息代表 ATM 已經暫停工做。
備選流 y - 退出 客戶可隨時決定終止交易(退出) 。交易終止,銀行卡隨之退出。
備選流 z - 「翹起」 ATM 包含大量的傳感器,用以監控各類功能,如電源檢測器、不一樣的門和出入口處的測壓器以及動做檢測器等。在任一時刻,若是某個傳感器被激活,則警報信號將發送 給警方並且 ATM 進入「安全模式」,在此模式下全部功能都暫停使用,直到採起適當的重啓/從新初始化的措施。
第一次迭代中,根據迭代計劃,咱們須要覈實提款用例已經正確地實施。此時還沒有實施整個用例,只實
施了下面的事件流:
基本流 - 提取預設金額(10 美圓、20 美圓、50 美圓、100 美圓)
備選流 2 - ATM 內沒有現金
備選流 3 - ATM 內現金不足
備選流 4 - PIN 有誤
備選流 5 - 賬戶不存在/賬戶類型有誤
備選流 6 - 賬面金額不足

以從這個用例生成下列場景

 

場景1 - 成功的提款

基本流
 

場景2 - ATM 內沒有現金

基本流

備選流2

場景3 - ATM 內現金不足

基本流

備選流3

場景4 - PIN 有誤(還有輸入機會)

基本流

備選流4

場景5 - PIN 有誤(再也不有輸入機會)

基本流

備選流4

場景 6 - 賬戶不存在/賬戶類型有誤

基本流

備選流 5

場景 7 - 賬戶餘額不足

基本流

備選流 6
 

表1-3 提款場景

 注:爲方便起見,備選流 3 和 6(場景 3 和 7)內的循環以及循環組合未歸入上表。

對於這 7 個場景中的每個場景都須要肯定測試用例。能夠採用矩陣或決策表來肯定和管理測試用例。下面顯示了一種通用格式,其中各行表明各個測試用例,而各列則表明 測試用例的信息。本示例中,對於每一個測試用例,存在一個測試用例 ID、條件(或說明)、測試用例中涉及的全部數據元素(做爲輸入或已經存在於數據庫中)以及預期結果。

經過從肯定執行用例場景所需的數據元素入手構建矩陣。而後,對於每一個場景,至少要肯定包含執行場景所需的適當條件的測試用例。例如,在下面的矩陣 中,V(有效)用於代表這個條件必須是 VALID(有效的)纔可執行基本流,而 I(無效)用於代表這種條件下將激活所需備選流。下表中使用的「n/a」(不適用)代表這個條件不適用於測試用例。

表1-4 用例矩陣


TC(測試用例)ID 號

場景/條件

PIN

賬號

輸入的金額(或選擇的金

額)

賬面

金額

ATM 內的金額

預期結果

CW1.

場景1 - 成功的提款

V

V

V

V

V

成功的提款。

CW2.

場景2 - ATM 內沒有現金

V

V

V

V

I

提款選項不可用,用例結束

CW3.

場景3 - ATM 內現金不足

V

V

V

V

I

警告消息,返回基本流步驟6 -輸入金額

CW4.

場景4 -PIN 有誤(還有不止一次輸入機會)

I

V

n/a

V

V

警告消息,返回基本流步驟4,輸入PIN

CW5.

場景4 -PIN 有誤(還有一次輸入機會)

I

V

n/a

V

V

警告消息,返回基本流步驟4, 輸入PIN

CW6.

場景4 -PIN 有誤(再也不有輸入機會)

I

V

n/a

V

V

警告消息,卡予保留,用例結束

在上面的矩陣中,六個測試用例執行了四個場景。對於基本流,上述測試用例 CW1 稱爲正面測試用例。它一直沿着用例的基本流路徑執行,未發生任何誤差。基本流的全面測試必須包括負面測試用例,以確保只有在符合條件的狀況下才執行基本 流。這些負面測試用例由 CW2 至 6 表示(陰影單元格代表這種條件下須要執行備選流)。雖然 CW2 至 6 對於基本流而言都是負面測試用例,但它們相對於備選流 2 至 4 而言是正面測試用例。並且對於這些備選流中的每個而言,至少存在一個負面測試用例(CW1 - 基本流)。

每一個場景只具備一個正面測試用例和負面測試用例是不充分的,場景 4 正是這樣的一個示例。要全面地測試場景 4 - PIN 有誤,至少須要三個正面測試用例(以激活場景 4):

輸入了錯誤的 PIN,但仍存在輸入機會,此備選流從新加入基本流中的步驟 3 - 輸入 PIN。

輸入了錯誤的 PIN,並且再也不有輸入機會,則此備選流將保留銀行卡並終止用例。

最後一次輸入時輸入了「正確」的 PIN。備選流在步驟 5 - 輸入金額處從新加入基本流。

注:在上面的矩陣中,無需爲條件(數據)輸入任何實際的值。以這種方式建立測試用例矩陣的一個優勢在於容易看到測試的是什麼條件。因爲只須要查看 V 和 I(或此處採用的陰影單元格),這種方式還易於判斷是否已經肯定了充足的測試用例。從上表中可發現存在幾個條件不具有陰影單元格,這代表測試用例還不完 全,如場景 6 - 不存在的賬戶/賬戶類型有誤和場景 7 - 賬戶餘額不足就缺乏測試用例。

一旦肯定了全部的測試用例,則應對這些用例進行復審和驗證以確保其準確且適度,並取消多餘或等效的測試用例。

測試用例一經承認,就能夠肯定實際數據值(在測試用例實施矩陣中)而且設定測試數據。

表1-5 實際用例


TC ( 測試用例)ID 號

場景/條件

PIN

賬號

輸入的金額或

選擇的金額

賬面金額

ATM 內的金額

預期結果

CW1.

場景1 - 成功的提款

4987

809 -

498

50.00

500.00

2,000

成功的提款。賬戶

餘額被更新爲450.00

CW2.

場景2 - ATM 內沒有現金

4987

809 -

498

100.00

500.00

0.00

提款選項不可用,用例結束

CW3.

場景3 - ATM 內現金不足

4987

809 -

498

100.00

500.00

70.00

警告消息,返回基本流步驟6-輸入金額

CW4.

場景4 - PIN 有誤(還有不止一次輸入機會)

4978

809 -

498

n/a

500.00

2,000

警告消息,返回基本流步驟4,輸入PIN

CW5.

場景4 - PIN 有誤(還有一次輸入機會)

4978

809 -

498

n/a

500.00

2,000

警告消息,返回基本流步驟4,輸入PIN

CW6.

場景4 - PIN 有誤(再也不有輸入機會)

4978

809 -

498

n/a

500.00

2,000

警告消息,卡予保留, 用例結束

以上測試用例只是在本次迭代中須要用來驗證提款用例的一部分測試用例。須要的其餘測試用例包括:

場景 6 - 賬戶不存在/賬戶類型有誤:未找到賬戶或賬戶不可用

場景 6 - 賬戶不存在/賬戶類型有誤:禁止從該賬戶中提款

場景 7 - 賬戶餘額不足:請求的金額超出賬面金額

在未來的迭代中,當實施其餘事件流時,在下列狀況下將須要測試用例:

無效卡(所持卡爲掛失卡、被盜卡、非承兌銀行髮卡、磁條損壞等).

沒法讀卡(讀卡機堵塞、脫機或出現故障).

賬戶已消戶、凍結或因爲其餘方面緣由而沒法使用.

ATM 內的現金不足或不能提供所請求的金額(與 CW3 不一樣,在 CW3 中只是一種幣值不足,而不是全部幣值都不足).

沒法聯繫銀行系統以得到承認.

銀行網絡離線或交易過程當中斷電.

相關文章
相關標籤/搜索