QTP全称是quick test professional,是由Mercury公司(现已被HP收购)开发的一款关键字驱动自动化测试工具,既支持录制/回放方式,又支持描述性编程。至于录制/回放和描述性编程到底哪个更加方便,因人而异。这里笔者并不对其进行比较,而只是将QTP支持的这两种自动化测试方法进行简单的示范,这里仅列举对web对象的操作。
录制/回放,是由QTP将测试人员对web的操作过程录制下来,保存在对象库中。然后通过回放,由QTP自动的将录制的过程重新执行一遍。这种方法的优点是方便、快速的实现自动化测试,无需编程。缺点是适应性差,当界面发生变化时原来录制的自动化脚本就无法执行。启动QTP,点击file,new一个新的test。这时会发现主菜单上有个红色的按钮,record。
点击record后,会进入录制设置窗口,对web对象,有两种录制方式:一是对已打开的网页进行录制,另一种是可以设置网页地址,由QTP自动打开网页。这里我们选择设置网页地址方式,并输入网页地址“www.baidu.com”。点击确定后,就正式进入了录制过程。这时QTP会打开IE浏览器,并自动输入刚才设定的地址。等打开网页之后,我们就可以对网页进行操作,此时QTP将操作的步骤录制。例如在搜索栏里输入"tencent",点击“百度一下”。然后在QTP中点击stop,停止录制。这时,刚刚操作的网页对象就会保存在QTP的对象库中了。
如果要对录制的脚本进行回放,点击run按钮,就可以看到QTP会自动的回放刚刚的操作,打开www.baidu.com页面,在搜索栏输入tencent,然后点击“百度一下”按钮。
描述性编程是QTP支持的另一种自动化测试方法。优点是灵活性高,界面的一些属性变化后脚本不用改变还能够进行测试。缺点是需要手动的编写脚本,对测试人员的要求比录制/回放要高。这里使用描述性编程实现:打开IE,输入www.baidu.com;查询关键字输入框中输入tencent,点“百度一下”;获取第一条搜索的内容文本(仅Link部分的内容);关闭查询结果页面。代码如下:
systemUtil.Run "iexplore","www.baidu.com"
wait 10
dim Bname
Bname = "百度.*"
Browser("title:="&Bname).Page("title:="&Bname).WebEdit("name:="&"w.*").Set"tencent"
Browser("title:="&Bname).Page("title:="&Bname).WebButton("name:="&Bname).Click
wait 5
Dim LinkName,oDesc,TableArray,i
Set oDesc = Description.Create()
oDesc("micclass").Value="WebTable"
oDesc("html id").Value="1"
Set TableArray = Browser("title:="&Bname).Page("title:="&Bname).childObjects(oDesc)
print TableArray.count
Dim LinkArray,LinkDesc
Set LinkDesc = Description.Create()
LinkDesc("micclass").Value="Link"
Set LinkArray = TableArray(0).object.getElementsbyTagName("a")
LinkName = LinkArray(0).innerText
print LinkName
Browser("title:="&Bname).CloseAllTabs
注意这里描述对象通过Page("title:="&Bname)这样的描述性编程方法。
如何定位第一条搜索结果?
通过各种Link属性进行尝试,包括使用了name,text等。经过尝试,可以使用outertext描述Link,但是由于同一文本可能对应了多个Link,在outertext的基础上,使用index:=0来描述第一个索引。
定位到Link之后,如何获得该Link的文本信息?
通过Link的方法GetROProperty获得此Link的各种属性信息,"text"作为该方法的参数可以获得文本信息。
描述性编程需要一定的编程能力和技巧,因此使用起来比录制/回放复杂些,但是由于其灵活性强,也得到了很多测试人员的支持。因此,在具体使用中,使用录制/回放还是描述性编程,要取决于测试人员的能力以及实际的需求。