在遇到有事務流或由于某種條件成立導致狀態改變的軟件項目時,如何進行測試用例的設計就比較麻煩。以前所講的各種方法,每個被測對象之間是沒有相互的關聯或數據流向發生,遇到這樣的事務流軟件就要考慮用其他方法進行用例的設計了。
以前在講操作系統原理時,曾經提到過進程的狀態轉換。我們看以下圖形:
當進程從就緒隊列中被進程調度算法選中的時候,它就被調進CPU里執行,這個時候進程的狀態由就緒狀態變換到執行狀態;而當該進程執行完畢的時候,是由于所分配的時間片用完,進程調度算法又回到就緒隊列里重新提取。當進程執行到一定階段時,由于發生I/O事件,例如:外部數據的輸入或運行的中間數據的輸出,這時候CPU必須進行中斷處理,那么該進程就由執行狀態轉變成阻塞狀態,等待事件的完成;當事件完成后,進程從阻塞狀態就轉換成就緒狀態,等待進程調度算法的再一次選中。
以上是操作系統中進程的狀態遷徙過程。
我們以QQ登錄界面為例子,用來講解狀態圖法設計測試用例。
(一)通過對QQ登錄界面的分析,我們看到有4個輸入項:
ip1:輸入帳號
ip2:輸入密碼
ip3:點擊“登錄”按鈕
ip4:點擊“關閉”按鈕
(二)那么從QQ啟動界面開始,進行狀態遷徙分析:
第1輪狀態圖:
第2輪狀態圖:
第3輪狀態圖:
(三)從最后的狀態圖中可以看出QQ登錄界面最后的狀態有7種,那么從這7種狀態中構造出狀態類表:
狀態/用例 | 用例1 | 用例2 | 用例3 | 用例4 | 用例5 | 用例6 | 用例7 | 用例8 |
QQ啟動 | 1 | 1 | 1 | 1 | 1 | 1 3 | 1 | 1 |
帳號已輸入 | 2 | 2 4 | 3 | |||||
密碼已輸入 | 2 | 2 4 | ||||||
“登錄”按鈕已點擊 | 3 | 3 | 2 | 2 | ||||
帳號/密碼已輸入 | 3 | 3 | 5 | 5 | 4 | 2 | ||
QQ主界面 | 4 | 4 | 6 | 6 | 5 | |||
退出 | 2 | 4 | 3 |
(四)有一些用例沒有列出,望大家自己思考,最后所有的測試用例都省略
文章來源于領測軟件測試網 http://www.kjueaiud.com/