作者:风过无息 2007年5月30日
背景介绍:在QTP使用中描述性编程是一个提高QTP脚本的利用率的很好的方式。
术语:描述性编程,环境变量,正则表达式
描述性编程介绍:通常QTP是根据对象库来识别不同的对象,而描述性编程是QTP外另一种识别对象的途径,它不依赖于对象库,通过增加一些对象的描述来达到识别对象的目的。
说明,本例子是以17testing的登陆界面为测试页面进行描述的。(URL:[url]http://www.17testing.com/bbs/logging.php?action=login[/url])。本例子使用QTP9.0进行操作。
步骤一、录制脚本
Browser("
一起测试网软件测试论坛 :: 软件测试专业网站").Page("一起测试网软件测试论坛 :: 软件测试专业网站").WebEdit("username").Set "222"
这是录制一个输入用户名的操作。
步骤二、初级描述性编程
Browser("title:=
一起测试网软件测试论坛 :: 软件测试专业网站.*").Page("title:=一起测试网软件测试论坛 :: 软件测试专业网站.*").WebEdit("type:=text","name:=username").Set "222"
使用SPY查看对象属性,然后进行脚本的强化修改。这边有个小技巧,就是使用了.*,这是一个正则表达式的应用,因为在测试用,发现Browser和Page的title对象是“一起测试网软件测试论坛 :: 软件测试专业网站 - powered by Discuz!”使用正则能是参数化简单一些而已。
步骤三、描述性编程的提高
Dim obj_Desc
Set obj_Desc = Description.Create
obj_Desc(“type”).value= “text”
obj_Desc(“name”).value= “username”
Browser("title:=
一起测试网软件测试论坛 :: 软件测试专业网站.*").Page("title:=一起测试网软件测试论坛 :: 软件测试专业网站.*").WebEdit(obj_Desc).Set "222"
使用SPY查看对象属性,然后进行脚本的强化修改。这边有个小技巧,就是使用了.*,这是一个正则表达式的应用,因为在测试用,发现Browser和Page的title对象是“一起测试网软件测试论坛 :: 软件测试专业网站 - powered by Discuz!”使用正则能是参数化简单一些而已。
步骤四、使用自定义的环境变量
在file>>setting>>environment 中选择user-defined,增加三个环境变量。
browser="
一起测试网软件测试论坛 :: 软件测试专业网站.*".
page="
一起测试网软件测试论坛 :: 软件测试专业网站.*".
wededit_username="username"
这样脚本被修改为:
Pbrowser=environment.Value("browser")
Ppage =environment.Value("page")
Dim obj_ text
Set obj_text = Description.Create
obj_ text(“type”).value= “text”
obj_ text(“name”).value= environment.Value("wededit_username ")
Browser("title:="&Pbrowser).Page("title:="&Ppage).WebEdit(obj_ text).Set "121212"
当然参数化的方式很多,这边介绍的是使用环境变量
步骤五、使用导入环境变量
<Environment>
<Variable>
<Name>wededit_username</Name>
<Value>username</Value>
</Variable>
<Variable>
<Name>page</Name>
<Value>
一起测试网软件测试论坛 :: 软件测试专业网站.*</Value>
</Variable>
<Variable>
<Name>browser</Name>
<Value>
一起测试网软件测试论坛 :: 软件测试专业网站.*</Value>
</Variable>
</Environment>
你可以手工导入,也可以用方法LoadFromFile自动导入。
总结:优点是当对象一些属性变更以后,脚本能更容易维护。比如说对于一些通用的对象,比如说save,reset,cancel等按钮,一个页面3个,30个页面就90个对象,假如save变成保存,那对象库就会有很大改动了。而使用了描述性编程只需要在导入XML的地方该一个值就好了。当然描述性编程的作用远远不止这些,这次只是抛砖引玉,共同进步。