黑盒測試之狀態轉換測試法

狀態轉換圖的組成:

1、狀態:以圓圈表示,開始和結束是特殊狀態;

2、轉換:由於事件的驅動,系統從一個狀態到另一個狀態;

3、事件:以系統的相關接口觸發,和特定的轉換關聯;

4、活動:以“/”表示,活動由狀態轉換觸發;

5、條件:以“[ ]”表示,說明狀態轉換只有在滿足這個條件後進行。



狀態轉換測試:是根據狀態轉換來設計測試用例的一種方法。一個系統或組件的兩個允許狀態之間的切換。

基於狀態轉換的測試方法是探測Web程序動態行爲異常的有效途徑.Web程序狀態的變遷由鏈接序列和提交數據共同構成的導航場景決定.本文用活動頁 面導航圖(APND)來描述頁面間的鏈接轉換行爲,用狀態變量的組合對象狀態圖(COSD)來刻畫由提交數據導致的系統狀態變量改變,再將兩者統一成一個 較爲全面的動態行爲模型Web程序狀態轉換圖(WSTD).最後,採用線索k叉樹並加以改進來自動生成測試用例。



狀態轉換圖----->狀態轉換樹

1、將開始狀態作爲狀態轉換樹的根;

2、從左到右檢查當前層次的節點,將該節點對應的所有下一個可能狀態作爲其子節點;

3、重複第二部的動作,直到遇到前面層次的節點,則該節點爲最終節點,最終到結束節點。




循環轉換機-->n-switch

 N-Switch是由TSUN S. CHOW在1978年提出的,他將N-Switch定義爲程序圖中長度爲n+1的連續的邊或弧線(通常在狀態圖中表示循環)的序列。所以單獨的一條邊(或者轉換)就是一個0-Switch,兩條連續的邊的序列就是1-Switch。

下面以圖1所示的狀態機分別說明0-Switch和1-Switch的概念和區別。圖1所示的狀態機示例,其中圓圈表示狀態,帶箭頭的邊表示轉換,同時爲每個轉換定義了一個英文字母的標識。

  5974031100.gif

  圖1 狀態機示例圖



  1)0-Switch

  針對0-Switch,狀態轉換圖轉化爲狀態轉換樹的基本規則或者步驟如下:

  ● 步驟1:將初始狀態或者開始狀態作爲狀態轉換樹的根,根在整個狀態轉換樹中的層次是1。

  ● 步驟2:假設當前生成狀態轉換樹的層次爲K,那麼從左到右檢查所有層次爲K上的節點;將該節點對應的所有下一個可能的狀態作爲它的子節點,狀態之間的轉換作爲兩個狀態的邊。

  ● 步驟3:重複步驟2,直到一個位於層次K上的節點出現在層次J上,且J小於等於K,那麼這個節點就成爲最終的葉節點,而無需繼續生成其子節點;或者節點的狀態是結束狀態,也不需要針對該節點繼續進行狀態轉換。

  根據0-Switch的定義,該狀態機對應的所有的0-Switch爲:a、b、c、d、e、f。同時根據上面0-Switch狀態轉換樹生成規則,生成的狀態圖如圖2所示。

  5975031100.gif

  圖2 0-Switch狀態轉換圖示例



  2)N-Switch

   再來看一下1-Switch。根據1-Switch的定義,該狀態機對應的所有1-Switch爲:ab、ac、bb、bc、cd、ce、dd、de、 ea、ef、fd、fe。1-Switch狀態轉換樹的生成規則是在0-Switch狀態轉換樹基礎上,再增加一個層次,即針對0-Switch狀態轉換 樹的所有葉節點,把每個葉節點可能的下一個狀態作爲該節點的子節點。這裏需要注意的是,只需要增加一個層次既可。生成後的1-Switch的狀態轉換圖如 圖3所示。

  5976031101.gif

  圖3 1-Switch狀態轉換圖示例

  假如1-Switch還是無法滿足測試的強度,那麼,可以根據上面的思路,繼續增加一個層次,使之達到2-Switch。但是,需要注意的是,測試強度的增加,是以指數形式增加測試用例爲代價的。這兩者之間的平衡,是測試人員採用什麼樣的測試強度的時候必須考慮的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章