LoadRunner简介
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) 保存后可以看到多了一条用户信息,如下图所示。
长按二维码识别关注,您的支持是我们最大的动力。
公众号:测试梦工厂
QQ一群:300897805

LoadRunner简介的更多相关文章
- LoadRunner免费公开课,惠普金牌讲师亲授
[开课时间]:9月13日 下午2:00—4:00(暂定)[活动费用]:免费[主办单位]:慧都学院[课程形式]:网络在线公开课 LoadRunner简介惠普软件测试解决方案LoadRunner测试实例答 ...
- LoadRunner培训初级教程
一 LoadRunner简介 1.1 Loadrunner介绍 LoadRunner 是 HP Mercury Interactive 用来测试应用程序性能的工具 LoadRunner 通过模拟一个 ...
- LoadRunner测试50人同时登陆下单
LoadRunner测试50人同时登陆下单 一.LoadRunner简介 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找 ...
- 性能测试入门 — LoadRunner 使用初探
前言: 性能测试是利用产品.人员和流程来降低应用程序.升级程序或补丁程序部署风险的一种手段.性能测试的主要思想是通过模拟产生真实业务的压力对被测系统进行加压,验证被测系统在不同压力情况下的表现,找出其 ...
- LoadRunner对移动互联网后端服务器压力测试
一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够 ...
- Loadrunner学习(一)
一个优秀的软件系统不单单具有良好的功能,还需要有过硬的性能,一个只通过功能测试的系统,只能称之为"可用",而不能算是"好用".当然,性能测试需要基于功能测试,只 ...
- 用LR12录制app,用LR11跑场景,无并发数限制,已试验过,可行!
免费使用LoadRunner对移动互联网后端服务器压力测试 一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及 ...
- loadrunner---Android、iOS压力测试
链接来源:http://www.cnblogs.com/ydnice/p/5790848.html 一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试 ...
- LoadRunner系统架构简介
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
随机推荐
- linux内核分析——扒开系统调用的三层皮(下)
20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验 ...
- Windows7+VS2010下OpenGL的环境配置
http://johnhany.net/2014/01/environment-for-opengl-with-vs2010/ OpenGL(Open Graphics Library)是一个开放的. ...
- nfs文件系统挂载错误及解决方法
挂载nfs时出现如下错误: 原因: 没有安装nfs客户端相关 解决方法: apt-get install nfs-common 参考资料: http://askubuntu.com/questions ...
- C#在Dictionary中使用枚举作为键
Enum类型没有实现IEquatable接口,Dictionary中使用Enum作为键时,将发生装箱,使效率降低. 此时可用Dictionary中一个接收IEqualityComparer<T& ...
- software_testing_work2_question1(改)_edition
由于上个版本问题多多,而且测试情况略有呵呵,于是想想还是默默的改进了一个版本. input类 首先呢,是作为输入项的实体类input. 对比之前的版本,新版本(姑且称其为edition2)加强了ope ...
- Python基于websocket实时通信的实现—GoEasy
Python websocket实时消息推送 在这里我记录一下之前如何实现服务器端与客户端实时通信: 实现步骤如下: 1. 获取GoEasy appkey. 在goeasy官网上注册一个 ...
- #import和@class的使用
#import #import 大部分功能和#include是一样的,但是他处理了重复引用的问题,不用再去自己进行重复引用处理. @class 用于声明一个类,告诉编 ...
- 【转】为现代JavaScript开发做好准备
原文转自:http://blog.jobbole.com/66135/ 今天无论是在浏览器中还是在浏览器外,JavaScript世界正在经历翻天覆地地变化.如果我们谈论脚本加载.客户端的MVC框架.压 ...
- Swift-----类型转换 、 嵌套类型 、 扩展 、 协议 、 访问控制
使用is和as操作符判断和转换数组中的对象类型 1.1 问题 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例.在Swift中使用is和as操作符实现类型转换. 本案例定义一个媒体类 ...
- 【转】Qt下使用glut库
ps:这个说的很明白,尤其是win10环境下用mingw环境时编程时碰到的问题, 1.加 windows.h 2.在.pro 添加libs 博文地址:Qt下使用glut库 本人使用的环境 ...