当前位置: 首页 > news >正文

【软件测试】性能测试 —— 工具篇 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 下载安装包:【点击这里】

  1. 双击 HP LoadRunner 12.53 Community Edition.exe 启动安装程序

在这里插入图片描述

  1. 安装程序开始解压,选择默认路径或者指定路径,点击 install

在这里插入图片描述

  1. Loadrunner 程序会使用到 Visual C++ 的库,如果缺少这些库,安装程序会提示安装,此时,选择 “确定” 进行安装即可,如过程中提示重启,按要求重启即可,重启后会继续进行安装过程

在这里插入图片描述

  1. 按照默认操作一步步进行安装(安装的过程可能不是特别快,耐心等待哦~)
  2. 安装过程中会有如下的提示,这里不勾选指定代理证书!!! 去掉勾选!【重要】

在这里插入图片描述

  1. 安装完成后,界面会出现如下 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

  1. 三大组件作用
    Virtual User Generator录制脚本,编写脚本
    Controller设计场景,运行场景
    Analysis产生性能测试报告
  2. 三大组件之间的关系
    在这里插入图片描述

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 相关指标,通过这个简单的脚本,并不能监控到这些指标,比如上述脚本,我们并没有并发的场景产生,因此,有了脚本加强!

注册函数,一定要在请求之前,否则会报错
选了参数,更改日志

💛如何脚本加强?
  1. 事务插入

概念理解】事务简单理解就是一组独立的操作

具体操作】函数:开始事务:lr_start_transaction("login"); 结束事务:lr_end_transaction("login", LR_AUTO);

使用工具:点击【View】中的 【Steps Toolbox】,可以搜索对应的事务

在这里插入图片描述
注意事项:事务必须要有开始和结束,并且开始事务和结束事务之间的事务名称必须一致

  1. 插入集合点

概念理解】在 LoadRunner 中为了达到并发这个机制,引入集合,让用户同时发送请求

集合,我们可以想象,比如一群人集合在一起,并发就是大量用户同时去访问,这里的集合就对应并发,假设后续我们创建了 100W 个虚拟用户去执行编写好的性能测试脚本,为了模拟并发这个操作,让这 100w 个虚拟用户集合在一起,在满足条件后同时执行下一个步骤,这样就达到一个并发的效果~ (为什么这 100w 个用户达到某个点的时间不一样,因为每个用户的设备不同,网络因素不同等,如果不进行特殊处理,那么它们达到某个点的时间就是不一致的)

具体操作】函数:lr_rendezvous("rendezous1");

在这里插入图片描述

  1. 插入检查点

概念理解】检查点是为了检查 Web 服务器返回的网页是否正确,允许插入 Text 检查点来验证网页上是否存在指定的 Text

具体操作】函数:web_reg_find();

在这里插入图片描述

注意事项:检查点的函数是注册类函数,需要放在检查页面的请求之前,检查执行请求后页面中有无该元素

  1. 参数化

概念理解】模拟多个用户登录时,需使用不同的账号,复制代码修改用户名和密码参数是不合理的,使用参数化即可解决这个问题

具体操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意!!! 如果想在执行日志中看到使用参数的具体信息,则需要修改日志展示级别,修改方式如下:

在这里插入图片描述
同时,修改 Action 脚本的执行次数,这样就会执行 2 次 Action 脚本了~(注意!!!这里只是改执行 Action 次数,init 和 end 仍然只执行一次)

在这里插入图片描述

  1. 打印日志

具体操作

函数: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 场景的运行

  1. 点击 Run,进入运行场景页面,如下:

在这里插入图片描述
在这里插入图片描述
如果选择了,仍然没有展示 8 个图表,如下图,需要重新进去打开(这是 LoadRunner 的一个 Bug ~)

在这里插入图片描述

  1. 运行场景页面解释,如下:

在这里插入图片描述

  1. 详细讲解监控指标,如下:

在这里插入图片描述

  1. 添加系统资源监视

首先需要在系统服务中打开对应的服务:RemoteRegistry 和 RpcSs

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择我们想要保留查看的系统数据,其它的 Delete 即可

  1. 运行场景

在这里插入图片描述
运行场景结束后,可以根据图表看看相关数据 ~

5.4 组件三:Analysis

5.4.1 测试场景运行执行完成后生成测试报告

设置执行完成测试后自动生成测试报告,如下:

在这里插入图片描述

5.4.2 测试报告

在这里插入图片描述
小 Tips:可以合并图表进行对比查看
在这里插入图片描述

可以看到点击率和吞吐量的图,趋势一致~ 但是吞吐量曲线稍微延后一些,如下:
原因:吞吐量表示的是响应的数据交互量,先有请求后有返回,因此吞吐量曲线稍微延后一些

在这里插入图片描述
Q:如果请求变多但是吞吐量没有什么变化,原因可能有什么?
A:

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

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

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

在这里插入图片描述
✨✨✨本期内容到此结束啦~

相关文章:

  • Ansible模块——服务管理和设置定时任务
  • 一字典两世界:优雅移除 `NSDictionary` 指定键的最佳实践
  • 腾讯 CodeBuddy 杀入 AI 编程赛道,能否撼动海外工具霸主地位?
  • C++类与对象--2 对象的初始化和清理
  • tp5 关键词搜索商品时进行关键词拆分
  • [Linux]我在Linux世界觉醒了指令系统
  • JavaScript基础-创建对象的三种方式
  • 【C++重载操作符与转换】文本查询示例
  • 数据库故障排查指南:解决常见问题,保障数据安全与稳定
  • 数据分析_Python
  • PyTorch实现三元组损失Triplet Loss
  • 为什么 Docker 建议关闭 Swap
  • 基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
  • Elasticsearch Fetch阶段面试题
  • Springboot构建项目时lombok不生效
  • 51单片机仿真突然出问题
  • Almalinux中出现ens33 ethernet 未托管 -- lo loopback 未托管 --如何处理:
  • 提示词定制-AI写方案太泛?用“5W1H”提问法,细节拉满!
  • 售前工作.工作流程和工具
  • 【八股战神篇】Java集合高频面试题
  • 男子聚餐饮酒后身亡,同桌3人被判赔偿近20万元
  • 以色列媒体:哈马斯愿意释放部分人员换取两个月停火
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 有关“普泽会”,俄官方表示:有可能
  • 淮安市车桥中学党总支书记王习元逝世,终年51岁
  • 朝鲜称将在各领域采取反制措施,应对美国敌对挑衅