LoadRunner是什么

LoadRunner是一个性能测试工具,它最初是Mercury公司的产品,后背HP收购。

LoadRunner常用来做什么

l 验证某系统在某环境下是否满足性能需求。

l 通过测试,规划如何达到要求的性能指标。

l 调整系统环境,进行性能测试,最终使性能达到最优。

为什么要使用LoadRunner进行性能测试

 

考虑这样一种情况,现在需要测试某个网站在500个人并发做登陆操作时,系统的平均响应时间是否满足需求。如果用人工测试的话,可以想象大概的操作场景是这样,一个主持人安排500个操作员,按下述步骤操作:

1. 所有人在一个大厅中,大厅中有500多台电脑,主持人要求500个操作人员分成组,每个组选一个组长,所有人先都登陆到系统,进入登陆页面;

2. 主持人喊3...2...1开始!同时记录开始时间(这个在LoadRunner中有个术语叫“集合点”),组织带领500个人同时点击“登陆”按钮。

3. 看到登陆成功页面的人把登陆成功时的时间记下。

4. 到了规定的时间,主持人喊停,还没有登陆成功的操作人员视为操作失败。

5. 最后,5个组长收集各组的操作结果,汇总给主持人,主持人安排数据统计专员生成统计报告。

这个过程是不是很复杂?而且操作误差比较大,譬如有的人反应慢,有的人反应快,有的人记错时间了,有的人偷懒了等等。所以,对于这种性能测试必须靠自动化。现有自动化的工具有很多,譬如Jmeter,譬如LoadRunner。总的来说,Jmeter更自由,LoadRunner更好用,而我们想用好用的,所以我们用LoadRunner。

LoadRunner的主要组件

 

l Virtual User Generator(用来录制脚本的,相当于前述例子中操作人员的机器人化)

l Controller(相当于前述例子中的主持人)

l Load Generator(相当于前述的组长)

l Analysis(相当于前述的分析专员)

LoadRunner的一般测试流程

创建脚本->设计场景->运行场景->分析结果

如何使用LoadRunner创建脚本

 

一、录制脚本

创建脚本最简单的方法就是录制,下面以录制登陆bugfree系统为例,操作步骤如下:

1. 启动Virtual User Generator,如下图所示。

2. 新建一个脚本,如下图所示。

3. 选择合适的协议,这里选择Web(HTTP/HTML)协议。

4. 输入bugfree的地址,如下图所示。

5. 点击OK,开始录制,如下图所示。

6. 输入登录信息,点击登陆。

7. 登陆成功后,点击“停止”按钮,一个登陆脚本就录制完了。

思考:它是如何工作的?
解答:在录制开始前,我们选择的是WEB(HTTP/HTML)协议,开始录制时,Virtual User Generator会记录所有从当前窗口向服务器发出的HTTP请求,并生成脚本。

二、手写脚本

 

要使用C语言写脚本,请在创建VUser时选择C Vuser,如下图所示:

要使用JAVA语言写脚本,请在创建VUser时选择JAVA VUser,如下图所示:

CVuser支持加载DLL,JAVA VUser支持加载jar包。

LoadRunner脚本参数化

 

为什么要进行参数化

为什么要进行参数化呢?考虑这样一种场景:要求测试一下10个不同用户并发登陆bugfree的平均响应时间。我们该如何做呢?用10个不同的用户录制10次脚本?绝对不是!这个不符合自动化的思想。1000个用户怎么办?100000个用户怎么办?所以LoadRunner提供了参数化的功能。

如何参数化

以登陆bugfree的脚本为例,我们将用户名和密码进行参数化,详细操作步骤如下:

1. 找到要参数化的用户名和密码的值,如下图所示。

2. 将用户名“gavin”用变量user_name代替。

a) 选中“gavin”,单击右键,选择“Replace with a Parameter”,如下图所示。

b) 将Parameter name命名为user_name,如下图所示。

此时脚本中的“gavin”就变成了“{user_name}”,如下图所示:

3. 将密码“111111”用变量password代替。

a) 选中“111111”,单击右键,选择“Replace with a Parameter”,如下图所示。

b) 将Parameter name命名为password,如下图所示。

单击上图中的“Properties”,file选择和“user_name”参数相同的file,如下图所示:

c) 点击“Add Column”,添加一个列名为“password”的列,作为存放password参数的值,因为参数password取值和user_name是一一对应的,所以为简化逻辑,建议将“Select next row”设置为“same line as user_name”,如下图所示:

4. 设置完成后脚本中的代码如下图所示:

5. 最后可以根据需求为参数添加值。例如,我们这里模拟2个不同的用户并发登陆bugfree,可按如下操作为参数配置登陆信息:

a) 在user_name或password上单击右键,选择“Parameter properties”。

b) 在弹出的窗口中单击“Add row”增加记录,或者点击“Edit with notepad”进行增加记录,如下图所示:

c) 这里选择Edit with Notepad,如下图所示:

按照已有的格式输入,每条记录一行,完成后保存即可。

d) 保存后可以看到多了一条用户信息,如下图所示。

LoadRunner简明教程的更多相关文章

  1. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  2. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

  3. 2013 duilib入门简明教程 -- 部分bug 2 (14)

        上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃            如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...

  4. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  5. 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)

        界面的显示方面就都讲完啦,下面来介绍下控件的响应.     前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...

  6. 2013 duilib入门简明教程 -- FAQ (19)

        虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下.     需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...

  7. Mac安装Windows 10的简明教程

    每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...

  8. Docker简明教程

    Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...

  9. 2013 duilib入门简明教程 -- 总结 (20)

        duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~       这里给出Alberl最后汇总的一个工程,戳我下载,效 ...

随机推荐

  1. AS3里面的错误代码

    ActionScript 3 出现2048安全策略服务,一种原因是因为843端口下发策略文件有问题,另一种原因是Socket端口有问题,可以用telnet来测试. 其它AS3错误代码的意义可以在官网文 ...

  2. 【MFC】对话框自带滚动条的使用

    对话框自带滚动条的使用 摘自 http://wenku.baidu.com/link?url=aZe1zgBSBsf9xCYNpcz2fNGljmKxg372OVIGeJ7p6iRCWbbsertS7 ...

  3. python的一些开源库

    SQLAlchemy——数据持久层框架 简介 SQLAlchemy 主要由两部分组成,一个 SQL 工具包和一个关系对象映射(ORM),它能让开发者完全发挥出 SQL 的灵活性与强大的能量.他实现了一 ...

  4. Spring 实现发送电子邮件的两种方法

     1.通过xml文件配置主要属性: xml文件:test.xml <bean id="mailSender" class="org.springframewor ...

  5. AppScan 8.0.3安全漏洞扫描总结

    本文记录了通过AppScan 8.0.3工具进行扫描的安全漏洞问题以及解决方案, 1.使用SQL注入的认证旁路 问题描述: 解决方案: 一般通过XSSFIlter过滤器进行过滤处理即可,通过XSSFI ...

  6. Ctrl+H 浪潮Raid配置文档

    说明 本手册适用于LSI芯片Raid卡 包括但不限于Inspur 2008/2108 Raid卡.LSI 9240/9260/9261/9271 等Raid卡. 不同型号的Raid卡在某些功能上的支持 ...

  7. 【android】Socket简单用法

    Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket ...

  8. hbase filter 简介

    一.基本介绍 1.FilterList代表一个过滤器列表 FilterList.Operator.MUST_PASS_ALL --> 取交集 相当一and操作 FilterList.Operat ...

  9. @Override注解在Eclipse中编译报错

    导入新工程后,发现默认用的jre是1.5版本的,在Eclipse中右击工程选择Build Path->点击Configure Build Path->Java Build Path-> ...

  10. 半导体巨头青睐物联网领域 众强联手打造MCU生态系统

    随着万物互联的时代到来,众多半导体巨头纷纷转战物联网领域.早在十年前,意法半导体曾将STM32推向市场,意法半导体对32位MCU在物联网方面的应用在两年前就已展开攻势. 4月25日,历经两届盛况的ST ...