2008年7月7日 星期一

ASP.Net自動測試

.NET Test Automation Recipes

書中講得很實際,直接告訴你怎麼做,書名雖然為.net test,但其中的東西若用其它的language/平台實做,也都適用,我只針對Web Application做了閱讀,以下是一些心得。

[ASP.net自動測試] 簡單來說,就是研究asp.net的運作時的特性(有哪些回傳值,什麼動作應回傳什麼等),寫出模擬browser一連串動作的程式。

書裡有提到自動化測試ASP.net的方法,一些tricks:button被按下時,送出對應的post data為何,checkbox被選取時,對應的post data又是如何,在一開始,如何截取__ViewState,以作為下次post之data。
test之指令稿類似以下:
0001!DropDownList1=red&Button1=clicked!You picked red
0002!DropDownList1=red&Button1=clicked!Bad choice!deliberate fail
0003!DropDownList1=green&Button1=clicked!You picked green

001模擬DropDownList1選取red,而Button1按下的情形,應得到的回傳值為"You picked red",因此自動測試時,測試程式需要事先取得:
1. 畫面上server control render成html時的id(DropDownList1,Button1)。
2. html control之設定值(selected value),有些tricks,像是button被按下時,是設定Button1=clicked。
3. 畫面預期的回傳值。

[心得結論]
Tester(即使是developer)要取得1,2,3資料,勢必要實際用真的Browser連過一遍,寫test script很花時間,一旦原程式有變(refactoring或其它原因),test script必須隨著修改,可以把測試的框架程式做些改良,這樣同一web page的複雜動作(第一動,第二動,第三動...要得到什麼結果)就可以全部寫在test 指令稿內表達,一旦寫好test指令稿,以後要做重複的測試就快多了(如果原程式沒有變的話),test case指令稿,誰來debug?第一次測試,為了生出指令稿(html control的id要在這裡知道),和驗證指令稿,一定要手動測一次之後產品有了新版release,再用這些test case去自動測試時,就會快多了(而且較不易出錯),也就是第一次測時,會花相當多的時間。

[問題]
複雜的畫面(很多control的,或是user control一層包一層),指令稿會很難寫(煩),寫/維護指令稿是很無聊的(做這個要幹嘛?看不到希望),誰要來寫?

1 則留言:

David Ko (柯仁傑) 提到...

hi
你好, 很少人知道這本書, 很高興有人對test automation也有興趣.
小弟是做software test, 歡迎一起來交流
http://www.wretch.cc/blog/kojenchieh