SilkTest入門(mén)快打5-深入appstate 軟件測試
運行完上一講中的testcase ,大家有沒(méi)有發(fā)現一個(gè)問(wèn)題?是的,testcase 還是有瑕疵,因為計算器在測試運行后,沒(méi)有自動(dòng)關(guān)閉。這在運行多個(gè)用例的時(shí)候可能會(huì )導致問(wèn)題,為了解決這個(gè)問(wèn)題,我們還是得求助于appstate 。
Appstate 提供一種機制,在testcase 執行完后,會(huì )自動(dòng)調用系統函數SetBaseState(), 它會(huì )將測試用例的狀態(tài)設置到其狀態(tài)鏈上最基層的那個(gè)狀態(tài),在上一講中就是DefaultBaseState 。我們可以重新組織用例CalWithFunction 的結構,讓它的基狀態(tài)自動(dòng)關(guān)閉計算器應用,那么當測試用例運行結束時(shí),就會(huì )關(guān)閉計算器,其重構后的代碼如下:
[-] 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()
重構后的用例中的應用狀態(tài)PrepareCal 的基狀態(tài)是MyBaseState ,而MyBaseState 只是檢測計算器應用是否打開(kāi),如果是,那么就關(guān)閉它。運行一下,你的計算器自動(dòng)關(guān)閉了么?
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/