【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用
🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈
文章目录
- 1. LoadRunner 是什么?
- 2. LoadRunner 安装
- 前提:浏览器的选择 —— IE / 360极速浏览器
- 3. 为什么选择 LoadRunner?
- 4. 介绍 LoadRunner 三大组件
- 5. LoadRunner 相关使用
- 5.1 前置知识:了解 WebTours 系统
- 5.1.1 WebTours 如何启动?
- 5.1.2 WebTours 配置
- 5.2 组件一:Virtual User Generator
- 5.2.1 脚本录制
- 💛脚本录制
- 💛编译
- 💛运行(回放)
- 5.2.2 脚本加强
- 💛为什么要脚本加强
- 💛如何脚本加强?
- 5.3 组件二:Controller
- 5.3.1 Controller 的打开方式
- 5.3.2 场景的设计
- 5.3.3 场景的运行
- 5.4 组件三:Analysis
- 5.4.1 测试场景运行执行完成后生成测试报告
- 5.4.2 测试报告
本期内容主要介绍性能测试工具 —— LoadRunner,上一篇文章已经介绍了性能测试相关内容以及概念,可回顾:【软件测试】性能测试 —— 基础概念篇
1. LoadRunner 是什么?
LoadRunner 是一款开源桌面应用性能测试软件,主要用于评估软件系统,如 Web应用、移动应用、企业级ERP系统等在不同负载条件下的性能表现。它通过模拟大量虚拟用户(Virtual Users, VUsers)同时访问系统,帮助测试人员发现性能瓶颈、验证系统稳定性,并优化系统架构以满足性能需求。
2. LoadRunner 安装
前提:浏览器的选择 —— IE / 360极速浏览器
其它浏览器在录制脚本时会可能存在一定的问题,为了保险起见,我们这里选择 IE 浏览器或者 360极速浏览器
现在电脑貌似默认浏览器不是 IE,是 Edge 浏览器了,没有 IE 浏览器的话,这里推荐 360 极速浏览器~
下载 360 极速浏览器(注意是360极速浏览器,不是360浏览器哦!!)
或者使用 LoadRunner 自带的浏览器可以录制到,并且代码很少,无需删减 ~
以 Loadrunner12 为例,以下为安装过程:
Loadrunner 下载安装包:【点击这里】
- 双击 HP LoadRunner 12.53 Community Edition.exe 启动安装程序
- 安装程序开始解压,选择默认路径或者指定路径,点击 install
- Loadrunner 程序会使用到 Visual C++ 的库,如果缺少这些库,安装程序会提示安装,此时,选择 “确定” 进行安装即可,如过程中提示重启,按要求重启即可,重启后会继续进行安装过程
- 按照默认操作一步步进行安装(安装的过程可能不是特别快,耐心等待哦~)
- 安装过程中会有如下的提示,这里不勾选指定代理证书!!! 去掉勾选!【重要】
- 安装完成后,界面会出现如下 3 个图标,说明安装成功!
此时,就安装成功啦!!!
3. 为什么选择 LoadRunner?
我们可能在接触性能测试前,就听说过一些测试工具,如 Jmeter、LoadRunner 等,在这里说明本期内容选择讲解 LoadRunner 工具的原因,有以下 3 点:
- Jmeter 没有录制功能(对于初学者,可能不太友好),LoadRunner 有录制功能
- LoadRunner 可以设计非常丰富的测试场景
- 相比于 Jmeter 而言,LoadRunner 能够产生非常丰富的测试报告
市面上几款性能测试工具对比:
工具 | 核心优势 | 使用场景 |
---|---|---|
LoadRunner | 协议支持全面 | 适合复杂企业级应用 金融、电信等对性能要求严苛的行业 |
JMeter | 开源免费,社区活跃 | 中小型项目或API性能测试 |
Gatling | 高性能,基于Scala编写脚本 | 高性能,基于Scala编写脚本 |
Locust | 分布式扩展性强,支持Python脚本 | 需要灵活自定义负载模型的场景 |
4. 介绍 LoadRunner 三大组件
从安装成功后,我们可以看到三个图标,分别是 Virtual User Generator、Controller、Analysis
- 三大组件作用
【Virtual User Generator】录制脚本,编写脚本
【Controller】设计场景,运行场景
【Analysis】产生性能测试报告 - 三大组件之间的关系
5. LoadRunner 相关使用
本期内容要录制的这个系统,是 LoadRunner 自带的一个系统 —— WebTours,LoadRunner 为了让用户熟练使用该工具,给大家提供了这样的一个项目~
5.1 前置知识:了解 WebTours 系统
5.1.1 WebTours 如何启动?
找到自己安装 LoadRunner 的路径,点击 Web,里面有 Start HP Web Tours Server,双击即可启动!
【方式一】本机部署
双击后,出现这样一个黑框,则启动成功!(这里是在自己的主机上部署)
这里也可以看到提示,如果按 Ctrl+C
或者关闭界面,就访问不到了~
【方式二】远程部署
5.1.2 WebTours 配置
双击 HP Web Tours Application,可以看到如下:
点击 sign up now,进行注册
注册成功后,登录进来了~ 如下:
【特别说明】
1)端口号如何查看?
之前启动 WebTours,会给一个 IP 地址(目前笔者打开并未提供端口号,直接本地部署),通过 WebTours > conf > httpd.conf 中,会给出端口号,有了IP和端口号,就可以访问服务器部署的服务~
2) 用户信息如何查看?
WebTours 通过 WebTours > cgi-bin > users,可以看到用户的信息,文件名就是登录 WebTours 的账号,打开文件后,文件内容的第一行就是当前账号登录密码
5.2 组件一:Virtual User Generator
5.2.1 脚本录制
💛脚本录制
我们这里对 WebTours 登录进行录制~ 主要分为以下 4 个步骤:
- 启动 WebTours
- 使用 Virtual User Generator 进行录制
- 简化脚本代码
- 针对脚本进行加强
接着,我们一起具体去看看吧~
双击 【Virtual User Generator】 图标,打开【Virtual User Generator】
【步骤一】点击 New Script and Solution 创建
点击后,出现这样一个界面,我们根据自己需要选择对应的协议,基于这里,我们对 WebTours 系统做性能测试,是 Web 项目,因此,我们选择 Web-HTTP/HTML 协议(没找到的小伙伴,可以对界面进行左右滚动)点击 【Create】即可创建
【特别说明】在公司里,如果我们要做性能测试,不知道用什么协议,怎么做呢?
这里就不用慌啦~ 直接与开发去沟通即可~ 很多小伙伴可能比较担心,笔者目前也是在实习阶段(第二段实习ing),在笔者第一段实习中,总是害怕麻烦别人,不是很敢去问,和 leader 沟通一下,一定要去问!! 组里的同事都是很好的,也很耐心讲解,也可以专门约人 one to one 解答,很多业务相关的,不问是很难自己弄清楚的~不问不清楚怎么完成好任务捏!当然,能通过自己解决的,就尽量自己解决,笔者喜欢自己先思考解决,或者找相应的文档,实在解决不出来,整理好相关的问题,描述好问题,去请教组里的同事,所以,小伙伴们也不用担心哦!
创建后,打开页面如下,先来认识这几个参数~
【步骤二】点击录制按钮
点击录制后,会出现这样一个安全警告,选择【是(Y)】即可~
出现这个组件的时候,证明当前脚本已经开始录制了~
【步骤三】录制过程
接下来,我们录制登录这样一个过程~ 点击开始录制后,操作该页面进行登录,最后停止录制,代码即可生成啦~
【步骤四】脚本进行删减
我们只需要登录这个操作的脚步,事实上,会录制很多脚本进去,导致代码很长,我们需要进行手动删减~
我们也可以自己编写登录这个代码,脚本录制的意义就是根据录制过程生成代码而不需要自己写~
Action()
{web_url("login","URL=http://127.0.0.1:1080/WebTours/","TargetFrame=","Resource=0","Referer=",LAST);web_submit_form("login",ITEMDATA,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,LAST);return 0;
}
💛编译
💛运行(回放)
Q1:脚本中加上了思考时间lr_think_time(27);
,为什么运行结果没有思考时间?
A1:需要在 Runtime Settings 中设置,将 【Ignore think time】 的勾选改为勾选 【Replay think time as recorded】
5.2.2 脚本加强
💛为什么要脚本加强
我们知道,性能测试指标有并发数,CPU 相关指标,通过这个简单的脚本,并不能监控到这些指标,比如上述脚本,我们并没有并发的场景产生,因此,有了脚本加强!
注册函数,一定要在请求之前,否则会报错
选了参数,更改日志
💛如何脚本加强?
- 事务插入
【概念理解】事务简单理解就是一组独立的操作
【具体操作】函数:开始事务:lr_start_transaction("login");
结束事务:lr_end_transaction("login", LR_AUTO);
使用工具:点击【View】中的 【Steps Toolbox】,可以搜索对应的事务
注意事项:事务必须要有开始和结束,并且开始事务和结束事务之间的事务名称必须一致
- 插入集合点
【概念理解】在 LoadRunner 中为了达到并发这个机制,引入集合,让用户同时发送请求
集合,我们可以想象,比如一群人集合在一起,并发就是大量用户同时去访问,这里的集合就对应并发,假设后续我们创建了 100W 个虚拟用户去执行编写好的性能测试脚本,为了模拟并发这个操作,让这 100w 个虚拟用户集合在一起,在满足条件后同时执行下一个步骤,这样就达到一个并发的效果~ (为什么这 100w 个用户达到某个点的时间不一样,因为每个用户的设备不同,网络因素不同等,如果不进行特殊处理,那么它们达到某个点的时间就是不一致的)
【具体操作】函数:lr_rendezvous("rendezous1");
- 插入检查点
【概念理解】检查点是为了检查 Web 服务器返回的网页是否正确,允许插入 Text 检查点来验证网页上是否存在指定的 Text
【具体操作】函数:web_reg_find();
注意事项:检查点的函数是注册类函数,需要放在检查页面的请求之前,检查执行请求后页面中有无该元素
- 参数化
【概念理解】模拟多个用户登录时,需使用不同的账号,复制代码修改用户名和密码参数是不合理的,使用参数化即可解决这个问题
【具体操作】
注意!!! 如果想在执行日志中看到使用参数的具体信息,则需要修改日志展示级别,修改方式如下:
同时,修改 Action 脚本的执行次数,这样就会执行 2 次 Action 脚本了~(注意!!!这里只是改执行 Action 次数,init 和 end 仍然只执行一次)
- 打印日志
【具体操作】
函数:lr_log_message
或者 lr_output_message
脚本如下:
Action()
{web_url("login","URL=http://127.0.0.1:1080/WebTours/","TargetFrame=","Resource=0","Referer=",LAST);// 插入检查点web_reg_find("Fail=NotFound","Search=All","SaveCount=","Text=Welcome",LAST);// 这里创建一个集合点lr_rendezvous("rendezous1");// 开启事务lr_start_transaction("login");web_submit_form("login",ITEMDATA,"Name=username", "Value={username}", ENDITEM,"Name=password", "Value={password}", ENDITEM,LAST);// 如果当前用户是xxxx,则输出xxxx hello!if(strcmp("xxxx",lr_eval_string("{username}")) == 0) {lr_log_message("%s hello!",lr_eval_string("{username}"));}// 结束事务lr_end_transaction("login", LR_AUTO);lr_log_message("登录成功");return 0;
}
相关日志对应如下:
5.3 组件二:Controller
5.3.1 Controller 的打开方式
Controller 的打开方式有 2 种,如下:
【方式一】通过 Virtual User Generator 打开
(补充说明:一个场景就是一个 Scenario)
Q:什么是压力产生器呢?
A:压力产生器也叫施压机器,这里的压力产生器就是 localhost,我们用户用本机去发送的一个请求
施压机器:发起请求的角色,用户本地电脑
被压机器:处理请求的角色,服务器
【方式二】直接双击 Controller 图标打开
5.3.2 场景的设计
通过这个页面 Design,我们可以先简单的进行设计~ 具体解释如下图:
Q:有同学就有疑惑了,为什么不在 Virtual User Generator 中直接进行运行呢 ?
A:因为在 Virtual User Generator 直接运行脚本,无法达到性能测试的目的,即无法监控性能测试的指标
选择了上述的 4 个选项后, LoadRunner 给出了预估虚拟用户的调度图,如下:
5.3.3 场景的运行
- 点击 Run,进入运行场景页面,如下:
如果选择了,仍然没有展示 8 个图表,如下图,需要重新进去打开(这是 LoadRunner 的一个 Bug ~)
- 运行场景页面解释,如下:
- 详细讲解监控指标,如下:
- 添加系统资源监视
首先需要在系统服务中打开对应的服务:RemoteRegistry 和 RpcSs
选择我们想要保留查看的系统数据,其它的 Delete 即可
- 运行场景
运行场景结束后,可以根据图表看看相关数据 ~
5.4 组件三:Analysis
5.4.1 测试场景运行执行完成后生成测试报告
设置执行完成测试后自动生成测试报告,如下:
5.4.2 测试报告
小 Tips:可以合并图表进行对比查看
可以看到点击率和吞吐量的图,趋势一致~ 但是吞吐量曲线稍微延后一些,如下:
原因:吞吐量表示的是响应的数据交互量,先有请求后有返回,因此吞吐量曲线稍微延后一些
Q:如果请求变多但是吞吐量没有什么变化,原因可能有什么?
A:
- 服务器响应变慢,来不及响应
- 压力没有给到服务器
- 服务器有一定的阈值,超过阈值请求不载响应
- …
从上面的问题也可以看到,性能测试不仅是执行的内容,更是需要对性能测试报告的分析,通过性能测试报告,去发现一些问题~ 性能测试这方面,还有很多需要学习和探索~
💛💛💛本期内容回顾💛💛💛
✨✨✨本期内容到此结束啦~