軟件測試工具中QTP中使用描述性編程
Mercury QuickTest 企業(yè)級自動(dòng)化測試工具!
目前已經(jīng)被惠普收購,正式名字為HP QuickTest Professional software ,最新的版本為HP QuickTest Professional 10.0.
HP QuickTest Professional 提供符合所有主要應用軟件環(huán)境的功能測試和回歸測試的自動(dòng)化。采用關(guān)鍵字驅動(dòng)的理念已簡(jiǎn)化測試用例的創(chuàng )建和維護。它讓用戶(hù)可以直接錄制屏幕上的操作流程,自動(dòng)生成功能測試或者回歸測試用例。專(zhuān)業(yè)的測試者也可以通過(guò)提供的內置腳本和調試環(huán)境來(lái)取得對測試和對象屬性的完全控制。
在QTP中使用描述性編程是一個(gè)提高QTP腳本利用率的很好的方式。
通常QTP是通過(guò)對象庫來(lái)識別不同的對象,而描述性編程是QTP另外一種能夠識別對象的途徑,它不依賴(lài)于對象庫,通過(guò)增加一些對象的描述來(lái)識別對象的。
說(shuō)明:本例子是以Flight飛機訂票系統的登陸界面為測試頁(yè)面進(jìn)行描述的。
步驟一:錄制腳本
Dialog("Login").WinEdit("Agent Name:").Set "Holly"
Dialog("Login").WinEdit("Password:").SetSecure "46ef0dc7efe5834c73673898279af1204fea51a7"
Dialog("Login").WinButton("Cancel").Click
共錄制3步操作,輸入Agent Name, Password, 點(diǎn)擊Cancel按鈕
步驟二:初級描述性編程
Dialog("Regexpwndtitle:=Login").WinEdit("Attached text:=Password:").Set "Mercury"
Dialog("Regexpwndtitle:=Login").WinButton("Class Name:=WinButton", "text:=Cancel").Click
在這里要注意有三點(diǎn):
1)如果需要兩個(gè)以上特性來(lái)描述一個(gè)對象,需要使用逗號(,)對描述性語(yǔ)言進(jìn)行分割
2)使用:=來(lái)連接屬性和屬性值,并且:=兩邊不能有空格
3)使用SPY查看對象的屬性名和屬性值(Tools -> Object Spy)
步驟三:描述性編程提高
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value = "Login"
Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
在這里需要注意有兩點(diǎn):
1)把經(jīng)常使用到的對象定義為一個(gè)對象變量,方便以后調用,減少代碼工作量和錯誤
2)使用SPY獲取對象的屬性和屬性值
步驟四:使用自定義的環(huán)境變量
在File>>Settings>>Environment中選擇user-defined,增加一個(gè)變量
dlgLogin = “Login”
這樣腳本可以被修改為:
Dim descEditLogin
Set descEditLogin = Description.Create()
descEditLogin("Class Name").Value = "Dialog"
descEditLogin("Regexpwndtitle").Value = Environment.Value("dlgLogin")
Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
當然,參數化的方式很多,這邊介紹的是使用環(huán)境變量
步驟五:從XML文件導入環(huán)境變量
dlgLogin
Login
可以使用手工導入,也可以使用LoadFromFile自動(dòng)導入
說(shuō)明:本例子是以Flight飛機訂票系統的登陸界面為測試頁(yè)面進(jìn)行描述的。
步驟一:錄制腳本
在QTP中,有一按鈕對象,對它的操作如下:Dialog("Login").WinButton("OK").Click但是如果我們在對象庫中刪除這個(gè)對象后,執行這句話(huà)就會(huì )出錯,提示找不到對象,在這個(gè)時(shí)候,我們就可以通過(guò)描述性編程給他指定對象及其他的一些屬性,修改如下Dialog("Login").WinButton("text:=OK").Click
上面腳本中,通過(guò)WinButton("text:=OK")明確告訴QTP去尋找文本屬性為OK的按鈕,于是QTP正確識別到該對象,順利的執行了腳本.這種不需要在對象庫中存儲對象的信息,就可以執行對象操作的方法,就是QTP中比較高級的用法:描述性編程(descrīptive progamming).描述性編程和傳統的QTP腳本的區別是:他把需要識別的對象的屬性從對象庫中轉移到了腳本里面,通過(guò)在腳本里面的特殊語(yǔ)法格式.來(lái)告訴QTP識別對象的方法.描述性編程更加靈活,因為他不需要經(jīng)過(guò)錄制這個(gè)步驟,可以直接通過(guò)編程的方式操作任何一個(gè)你想操作的對象,只要你在測試腳本代碼里提供給QTP識別該對象的足夠信息
描述性編程的語(yǔ)法格式如下:
micClasas("property1:=value1","property2:=value2")
micClass標志某個(gè)對象的類(lèi)別,括號里面通過(guò)jproperty:=value的形式告訴QTP識別該對象的必要屬性.我們繼續修改一下測試腳本:Dialog("Login").WinButton("text:=OK").Click修改后:Dialog("Login").WinButton("nativeclass:=Button","text:=OK").Click.F5執行,結果運行順利.這次修改,我們使用了一個(gè)通用的對象類(lèi)WinObject,而把按鈕當作一個(gè)基本屬性nativeclass:=Button,同樣可以完成對該按鈕的操作
由上面的敘述我們可以看出來(lái),描述性編程沒(méi)有嚴格的要求,只要遵循一個(gè)原則:在代碼中告訴QTP足夠他識別該對象的屬性,QTP就可以不通過(guò)對象庫,而是通過(guò)描述性編程的方式完成對指定對象的操作.所以描述性編程沒(méi)有什么神秘的,他無(wú)非是把原來(lái)存儲在對象庫中的信息提到代碼中來(lái)了而已.
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/