原文出處: http://www.51testing.com/html/43/n-832043.html
許多需求用狀态機的方式來描述,狀态機的測試主要關注在測試狀态轉移的正确性上面。對于一個有限狀态機,通過測試驗證其在給定的條件内是否能夠産生需要的狀态變化,有沒有不可達的狀态和非法的狀态。可能不可能産生非法的狀态轉移等。對于被測系統,若我們可以抽象出它的若幹個狀态,以及這些狀态之間的切換條件和切換路徑,那麼就可以從狀态遷移路徑覆寫的角度來設計用例對該系統進行測試。狀态遷移法的目标是設計足夠的用例達到對系統狀态的覆寫、狀态-條件組合的覆寫以及狀态遷移路徑的覆寫。
狀态遷移法的思想是提供将多個狀态的轉換串聯起來進行測試的思路。該方法适合測試各種狀态的轉換,而且這些狀态轉換的測試在實踐中是易遺漏的。例如像手機、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)完成預定->已支付->已出票->已使用;
三、用例詳細:
略