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脚本,来并发执行自动化测试,这样也达到了我们并发并循环测试的一个目的。

时间: 2024-08-09 19:55:51

loadrunner调用QTP脚本来实现性能测试的相关文章

LoadRunner调用Java程序—性能测试-转载

LoadRunner调用Java程序-性能测试 为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunner如何调用Java测试代码,完成压力测试. 通常我们在执行一些Server的压力测试的时候,总会不经意间想要一个Client完成对Server的调用示例,以至于我们可以通过LoadRunner直接录制,对于测试人员来说确实很方便.不过,开发人 员如果没有那么多时间去为测试人员服务,那可能就比较悲剧了,

LoadRunner调用Java程序—性能测试

为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunner如何调用Java测试代码,完成压力测试. 通常我们在执行一些Server的压力测试的时候,总会不经意间想要一个Client完成对Server的调用示例,以至于我们可以通过LoadRunner直接录制,对于测试人员来说确实很方便.不过,开发人 员如果没有那么多时间去为测试人员服务,那可能就比较悲剧了,只能自己尝试去调用接口来完成压力测试了,这样就需

LoadRunner 调用Dll完成加密解密

LoadRunner里的函数比较少,没有MD5.Base64加密. 我们可以通过在C++里把一些加解密写成函数,供LR调用. DLL函数编写 C++里新建工程Class Library(此处是用VS2005,在VS6是:Win32 Dynamic-Link Library) 创建了一个叫LrLoadDll的工程,在LrLoadDll.cpp里编写以下代码: #define LRLOADDLL __declspec(dllexport) extern"C" LRLOADDLL int S

LoadRunner 调用dll方法

本文主要介绍简单DLL的编写方法及在LoadRunner中局部调用与全局调用DLL方法. 1.动态链接库的编写 在Visual C++6.0开发环境下,打开FileNewProject选项,可以选择Win32 Dynamic-Link Library建立一个空的DLL工程. DLL必须有一个入口点,这就象C语言MAIN函数一样.在Non-MFC DLL中DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化.如果应用程序

Loadrunner录制https脚本

Loadrunner录制https脚本 原创 2017-07-10 爱测未来 爱测未来 随着公司的发展,公司原有的SVN服务器存放的内容不断增加,容量已经不能满足后续需求,首先我们想到对服务器进行扩容,然而因为各种原因服务器不能进行扩容,所以公司决定更换新的SVN服务器,在做数据迁移和环境部署之前我们需要对服务器进行一次性能测试,了解部署后的服务器性能,测试过程中需要对https的网页进行性能测试. 我们可以用loadrunner录制http网页,但是当录制https网页的时候会发现证书错误不能

LoadRunner 调用Dll

LoadRunner(LR)里的函数真的少得相当可怜,连简单的一个MD5.Base64加密都没有. 但我们可以通过在C++里把一些加解密写成函数,供LR调用. DLL函数编写 C++里新建工程Class Library(本人是用VS2005,在VS6貌像是:Win32 Dynamic-Link Library) 创建了一个叫LrLoadDll的工程,在LrLoadDll.cpp里编写以下代码: #define LRLOADDLL __declspec(dllexport) extern "C&q

LoadRunner关联函数的脚本实例--如何操作关联参数

LoadRunner关联函数的脚本实例--如何操作关联参数 这几天一直在学习LoadRunner的VuGen编程,今天想对关联函数web_reg_save_param做详细的试验和研究: ~f6p q+Z  RM0 a6_%_+vF9Ws\w&S0 问题提出:如何对关联的数据进行字符串操作.下面使用了LoadRunner自带的订票例子为例,进行了这方面的试验.假设我要关联的数据是由几个字符串组成的.如何使这些字符串组成一个参数,供我后面的函数使用?51Testing软件测试网.VZR(`D&quo

Unity3d 调用 Luajit C++ DLL 实现调用 Lua脚本

前面介绍了在 Unity3d 中通过 Plugin 功能来调用 C++ DLL 中的函数 以及回调的使用方法,但最终目的还是让 Unity3d 中可以调用 Lua 脚本中的函数,现在来实现. 首先关注前面两篇文章: 1.Unity3d 调用C++ DLL (Win平台) 2.Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数) 文章转自http://blog.csdn.net/huutu 星环游戏 http://www.thisisgame.com.

【原创】LoadRunner Java Vuser脚本的配置和调试指南

1 编写目的 本文介绍了Loadrunner多负载压力机的配置,并通过测试Java Vuser的数据库连接脚本对配置结果进行了验证,同时对配置过程中遇到的问题和解决的过程进行了记录,关于Java数据库编程的深入学习,大家可以参考其他Java相关教程. 文中的内容大部分来源于本人工作中解决问题的实际经验,另一部分来源于网络,所有内容本人都亲自验证,但难免有疏漏之处,如有疑问,请大家不吝赐教. 文中Loadrunner版本为9.5,操作系统类型为Windows XP和Windows 2003 Ser