第二步,使用第3節介紹的方法通過遍歷順序圖中的事件序列從而找出所有的場景。在圖5中,消息4和消息7、消息10和消息12分別構成了分支,處理分支時,可以為順序圖構造多個DAG圖,每個圖包含其中一條分支。這樣就將復雜順序圖化簡成多個簡單的順序圖來進行處理,遍歷每個DAG圖就可以得到所有場景。圖5中,得到3個場景如下:
A: 1, 2, 3, 4, 5
B: 1, 2, 3, 6, 7, 8, 9, 10
C: 1, 2, 3, 6, 7, 8, 11, 12
第三步,選定一個場景,根據其消息序列在順序圖中遍歷該場景,記錄場景的輸入和最終輸出。以場景B為例:
輸入:用戶調用connect操作。
預期輸出:返回“nak”消息,表示申請IP不成功。
第四步,確定每個場景的環境條件。首先從順序圖中找出所有的測試單元,在順序圖中,每一個交互的對象就是一個測試單元。本例中的DHCP_Client和DHCP_Server就是兩個測試單元;其次對每一個測試單元,從類圖中導出相應的環境設置(包括對象屬性、操作和消息中的參數)。結果如表1所示。
表1:DHCP的測試單元與環境
測試單元 DHCP-Server DHCP-Client
Offer:Boolean
環境設置 hasFreeIP:Boolean 無
找出環境設置之后,再為每一個場景找出相應的選擇,從而確定其環境條件,如場景B中,Offer=true,hasFreeIP =false。
第五步,測試用例生成 一個測試用例包括4個部分:環境條件、輸入、方法調用序列、預期輸出。對于場景B,所有這些信息已從前面的四步中生成,只要將它們組合在一起就可以了。場景B的測試用例為:
環境條件:DHCP-Server:offer=true,hasFreeIP=false
原文轉自:http://www.anti-gravitydesign.com