SilkTest入門快打5-深入appstate 軟件測試
運行完上一講中的testcase ,大家有沒有發現一個問題?是的,testcase 還是有瑕疵,因為計算器在測試運行后,沒有自動關閉。這在運行多個用例的時候可能會導致問題,為了解決這個問題,我們還是得求助于appstate 。
Appstate 提供一種機制,在testcase 執行完后,會自動調用系統函數SetBaseState(), 它會將測試用例的狀態設置到其狀態鏈上最基層的那個狀態,在上一講中就是DefaultBaseState 。我們可以重新組織用例CalWithFunction 的結構,讓它的基狀態自動關閉計算器應用,那么當測試用例運行結束時,就會關閉計算器,其重構后的代碼如下:
[-] testcase CalWithFunction () appstate PrepareCal
[ ] String sResultValue = Cal1Plus2()
[ ] Verify(val(sResultValue), 3, "Expect: 3, actually it is {sResultValue}")
[-] String Cal1Plus2()
[ ] 計算器.N1.Click ()
[ ] 計算器.Plus.Click ()
[ ] 計算器.N2.Click ()
[ ] 計算器.Equal.Click ()
[ ] String sResultValue = 計算器.CalResult.GetText()
[ ] return sResultValue
[-] appstate PrepareCal() basedon MyBaseState //1
[ ] 計算器.Invoke()
[ ] 計算器.C.Click ()
[-] appstate MyBaseState () //2
[-] if( 計算器.Exists())
[ ] 計算器.Close()
重構后的用例中的應用狀態PrepareCal 的基狀態是MyBaseState ,而MyBaseState 只是檢測計算器應用是否打開,如果是,那么就關閉它。運行一下,你的計算器自動關閉了么?
文章來源于領測軟件測試網 http://www.k11sc111.com/