許多需求用狀態機的方式來描述,狀態機的測試主要關注在測試狀態轉移的正確性上面。對於一個有限狀態機,通過測試驗證
其在給定的條件內是否能夠產生需要的狀態變化,有沒有不可達的狀態和非法的狀態。可能不可能產生非法的狀態轉移等。對於
被測系統,若我們可以抽象出它的若干個狀態,以及這些狀態之間的切換條件和切換路徑,那么就可以從狀態遷移路徑覆蓋的角度
來設計用例對該系統進行測試。狀態遷移法的目標是設計足夠的用例達到對系統狀態的覆蓋、狀態-條件組合的覆蓋以及狀態遷移
路徑的覆蓋。
狀態遷移法的思想是提供將多個狀態的轉換串聯起來進行測試的思路。該方法適合測試各種狀態的轉換,而且這些狀態轉換的
測試在實踐中是易遺漏的。例如像手機、MP3等,都可以使用狀態遷移法對使用狀態的遷移(即用戶使用場景的轉換)進行測試。
狀態遷移法的使用:
步驟一:根據需求提取全部狀態;
步驟二:繪制狀態遷移圖;
步驟三:根據狀態遷移圖推導測試路徑(狀態遷移樹);
步驟四:選取測試數據,構造測試用例。
例子:
一、需求:路人甲打電話預訂飛機票,要去某地。
二、分析:
1、測試需求分析:
a).客戶向航空公司打電話預訂機票。此時,機票信息處於“完成預訂”狀態;
b).顧客支付了機票款項后,機票信息變為“已支付”狀態;
c).客戶當天到達機場並使用身份證換領登機牌后,機票信息變為“已出票”狀態;
d).檢票登機后,機票信息變為“已使用”狀態;
e).在登機前,可以取消自己的訂票信息,若已支付機票費用,則可以退回票款。
取消后,訂票信息處於“已取消”狀態;
由以上分析得出客戶預訂機票時訂單的全部狀態:
完成預定、已支付、已出票、已使用、已取消;
2、測試設計方法分析(狀態遷移法):
a).狀態遷移圖:

b).測試路徑(狀態遷移樹):

由狀態遷移圖得出的測試路徑:
(1).A->B->E;
(2).A->B->C->E;
(3).A->B->C->D。
3、用例設計(輸入部分):
(1).完成預定->已支付->已取消;
(2).完成預定->已支付->已出票->已取消;
(3).完成預定->已支付->已出票->已使用;
三、用例詳細:
略
總結:
狀態遷移法實際測試了被測系統各種狀態的轉換,這些狀態轉換的測試在實際工作中是容易遺漏的,只要能夠將這些狀態的轉換
測試到,是否采用狀態遷移法並不重要,因為狀態遷移法只是提供了一種將多個狀態的轉換串聯起來進行測試的思路(思維模式)。
實際工作中,在業務流程中都涉及到了復雜的業務場景(即業務狀態的遷移)。而這些業務場景在需求規格中往往不能夠完全
闡述清楚,容易出現遺漏。所以當被測系統的業務場景復雜時,在工程中應用這種針對狀態遷移測試的思路完成對復雜業務場景的
測試有時是很有必要的。
注:
用例設計要考慮三個層次的問題:策略、模式、方法。黑盒測試就是一種策略,狀態遷移即是一種模式,也是一種方法。
怎樣才叫精通測試用例設計? 實踐是檢驗真理的唯一標准。理論也是來源於實踐的,特別是在工程領域。懂得理論而沒有實踐的,其實還是不懂嘛。反而不如
有一定實踐經驗的人更接近真理。有大量實踐經驗,而又善於總結的,才可能成為專家。
轉載自:http://blog.csdn.net/ggf123456789/article/details/8286181
