【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用

【软件测试】性能测试 —— 工具篇 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 Generator5.2.1 脚本录制💛脚本录制💛编译💛运行(回放)

5.2.2 脚本加强💛为什么要脚本加强💛如何脚本加强?

5.3 组件二:Controller5.3.1 Controller 的打开方式5.3.2 场景的设计5.3.3 场景的运行

5.4 组件三:Analysis5.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:

服务器响应变慢,来不及响应压力没有给到服务器服务器有一定的阈值,超过阈值请求不载响应…

从上面的问题也可以看到,性能测试不仅是执行的内容,更是需要对性能测试报告的分析,通过性能测试报告,去发现一些问题~ 性能测试这方面,还有很多需要学习和探索~

💛💛💛本期内容回顾💛💛💛

✨✨✨本期内容到此结束啦~

相关数据

中国建设银行
office365邮箱手机版

中国建设银行

⌛ 07-11 👁️‍🗨️ 6533
桃花人面:一份唐代“桃花妆”指南
office365邮箱手机版

桃花人面:一份唐代“桃花妆”指南

⌛ 07-12 👁️‍🗨️ 304
苹果X为什么老自动关机
365网

苹果X为什么老自动关机

⌛ 07-23 👁️‍🗨️ 4363