剛剛用了QTP的描述性編程,忽然想起用WinRunner也用一下描述性編程。做了感覺還不錯,呵呵。。。。
以下是本人用WINDOW XP自帶的一個計算器做的一個小例子:
#################################################################################
#
# Descrīption-------------Use Descrīption Programing to Test the CALC in Window XP by WinRunner
#
# Tester------------------Lantian Wei
#
# Modify Time-----------2007-7-24
#
#################################################################################
invoke_application("calc.exe","","c:\\windows\\system32\\",SW_SHOW); static myarr[]={{1,"+",2,3},{1,"-",2,-1},{1,"*",2,2},{1,"/",2,0.5}}; win_activate("{class: window,label: Calculator}"); set_window("{class: window,label: Calculator}",5); for(i=0;i<4;i++) { for(j=0;j<3;j++) button_press("{class: push_button,label:"&myarr[i,j]&"}"); button_press("{class: push_button,MSW_class: Button,label:=}"); edit_get_text ("{class: edit}", result); if(index(myarr[i,j],".")==0) { if(result==myarr[i,j]&". ") tl_step("CheckAnswer",0,"The calculatation is right:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" = "result); else tl_step("CheckAnswer",1,"The calculatation is wrong:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" != "result); wait(1); } else { if(result==myarr[i,j]&" ") tl_step("CheckAnswer",0,"The calculatation is right:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" = "result); else tl_step("CheckAnswer",1,"The calculatation is wrong:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" != "result); wait(1); } } win_close("{class: window,label: Calculator}"); |
以上是本人用描述性編程寫的腳本,至此現丑了。如有不足之處還請大家指正!在此先表示感謝!
通過這個例子的練習,我發現它確實有好多優點,比如你從此不用在關心那煩人的對象庫了,而一個測試腳本里基本上在對象庫中出現的問題最多了。然而它還是有缺點的,比如對于無法識別的對象,它就無能為力了,而對于那些OBJECT對象,它的支持也不好。所以如果WR對應用程序識別的滿好的話,不如用描述性編程試試。
原文轉自:http://www.anti-gravitydesign.com