loadrunner调用QTP脚本来实现性能测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了loadrunner调用QTP脚本来实现性能测试相关的知识,希望对你有一定的参考价值。

一封邮件让我周末不得不加班研究如何来模拟实际生产环境。大致需求是根据抄表段编号和电费年月来查询该抄表段下的用户的缴费情况,一个抄表段有几百到两千的用户。需要并发的查询不同抄表段下用户的缴费情况,并依次打印该抄表段下每个用户的缴费情况。

     对于这样的问题,开始我想挺好解决的,只要在脚本中加个循环控制语句就好了,但实际测试才知道,loadrunner在向服务器提交数据的时候有一个ID是没有规律的,顿时闷了一下,之前的想法就这样绝望了。经过仔细考虑,打印发票是每台电脑直连一台打印机的,也就是说不能通过一个脚本来模拟,需要使脚本有分布式的感念,脚本需要控制在每台机器上运行。这样每个脚本是相对独立的。这样我就想到了QTP,使用QTP来编写脚本,用loadrunner来控制脚本执行,这样就可以满足现场需求了。

     附:QTP脚本如下:

技术分享
SystemUtil.CloseProcessByName "iexplore.exe"
SystemUtil.Run "iexplore.exe","http://172.19.201.188:7001/web/"
set ChildObjects = CreateObject("Scripting.Dictionary")
    With ChildObjects
         .Add "Browser", Browser("CreationTime:=0")
         .Add "Page", .Item("Browser").Page("index:=0")
         .Add "Username", .item("Page").WebEdit("name:=username")
         .Add "Password", .item("Page").WebEdit("name:=password")
         .Add "Submit", .item("Page").Image("index:=0")
         .Add "Frame", .Item("Page").Frame("name:=barFrame")
         .Add "LinkMenu", .Item("Frame").Link("text:=电费收缴及营销账务管理")
         .Add "Linkitem", .Item("Frame").Link("text:=客户缴费管理","index:=0")
         .Add "TreeMenuFrame",.Item("Page").Frame("name:=TreeMenuFrame")
         .Add "WebTable", .Item("TreeMenuFrame").WebTable("text:=我的桌面支持.*","index:=0")
         .Add "PageFrame",.Item("Page").Frame("name:=PageFrame","index:=1")
         .Add "mrSectNo",.Item("PageFrame").WebEdit("name:=mrSectNo")
         .Add "rcvblYm",.Item("PageFrame").WebEdit("name:=rcvblYm")
         .Add "WebButton",.Item("PageFrame").WebButton("name:=查询")
    End With

ChildObjects.item("Username").Set "YYY" 
ChildObjects.item("Password").Set "1" 
ChildObjects.item("Submit").click
ChildObjects.item("LinkMenu").click 
ChildObjects.item("Linkitem").click 
ChildObjects.item("WebTable").ChildItem(1,2,"Image",192).click
ChildObjects.item("mrSectNo").Set "0000006511"     
ChildObjects.item("rcvblYm").Set "201211"     
ChildObjects.item("WebButton").click

Services.StartTransaction "start"
With Browser("CreationTime:=0").Page("index:=0")
    For N= 1 To .Frame("name:=PageFrame","index:=1").WebEdit("name:=tatolRecord").GetROProperty("value")
        .Frame("name:=PageFrame","index:=1").WebCheckBox("index:="&N).Set "ON"
        .Frame("name:=PageFrame","index:=1").WebButton("name:=打印发票").click
         Set Wsh=CreateObject("WScript.Shell")
         Wsh.SendKeys "^+{F4}"
        .Frame("name:=PageFrame","index:=1").WebCheckBox("index:="&N).Set "OFF"
    Next
End With
Services.EndTransaction "start"
技术分享

     注意:在loadrunner中运行QTP脚本,需要在QTP脚本中设置事务,如:Services.StartTransaction "start"与Services.EndTransaction "start"
      在loadrunner中调用QTP脚本步骤如下:
      1、在每台机器上安装loadrunner、QTP工具。

      2、每台机器上的QTP,勾选Tools--Options--Run的"Alow other Mercury products to run tests and components"设置。

      3、每台终端一定要开启loadrunner的LR Agent Process及QTP的TOOS-Remote Agent代理服务。

      4、启动loadrunner后,在LR中运行时选择QTP脚本,为QTP脚本存放目录下文件扩展名为.usr的文件。注:loadrunner中运行QTP脚本时,只能有一个GUI Vuser

      5、添加不同的组,每个组的脚本分别由远程机器来执行。

      完成以上步骤及场景设置后,就可以在loadrunner控制台运行场景了,这样就可以看到每个终端都会调用QTP脚本,来并发执行自动化测试,这样也达到了我们并发并循环测试的一个目的。



以上是关于loadrunner调用QTP脚本来实现性能测试的主要内容,如果未能解决你的问题,请参考以下文章

selenuim,qtp,loadrunner,jmeter有何区别,想学个脚本语言python和测试工具应该从哪里入门呢。

测试_QTP使用

自动测试工具(qtp等)

LoadRunner 性能测试脚本

测试_QTP使用实例

Loadrunner Webservice接口性能测试脚本编写优化总结