理解LoadRunner,基于此工具进行后端性能测试的详细过程(上)

news2025/4/25 0:49:20

1、LoadRunner 的基本原理

后端性能测试工具通过虚拟用户脚本生成器生成基于协议的虚拟用户脚本,然后根据性能测试场景设计的要求,通过压力控制器控制协调各个压力产生器以并发的方式执行虚拟用户脚本,并且在测试执行过程中,通过系统监控器手机各种性能指标以及系统资源占用率,最后通过测试结果分析器展示结果数据。

在 LoadRunner 中,Virtual UserGenerator 对应的是虚拟用户脚本生成器,Controller 对应的是压力控制器和系统监控器,Load Generator 对应的就是压力产生器,Analysis 对应的是测试结果分析器。

以下我们把 LoadRunner 每个模块类比手工操作放大理解工作过程:

1)首先,我们需要一批测试机器,每台测试机器雇佣一个测试人员;
2)然后,一个调度员来统一控制,比如 “1-10 号测试人员开始执行登录操作,10-20 号测试人员 5 分钟之后执行搜索操作”,同时调度员还会要求每个测试人员记录操作花费的时间;
3)测试完成后,调度员会要求性能工程师分析测试中记录的数据。
4)通过类比:

测试调度员以及完成数据记录的部分就是 Controller;

大量的测试机器以及操作这些机器的人就是 Load Generator;

操作这些机器的人的行为就是 Virtual User Generator 产生的虚拟用户脚本;

对测试数据的分析就是 Analysis 模块;

2、LoadRunner 的主要模块
1)Virtual User Generator
用于生成模拟用户行为的测试脚本,生成的手段主要是基于协议的录制,也就是由性能测试脚本开发人员在通过 GUI 执行业务操作的同时,录制客户端和服务器之间的通信协议,并最终转化为代码化的 LoadRunner 的虚拟用户脚本。
这样转化得到的虚拟脚本还需要经历数据参数化(Parameterization)、关联建立(Correlation),以及运行时设置(Run Time Settings)等操作,然后才能用于性能测试场景中。

2)LoadRunner Controller
Controller 相当于性能测试执行的控制管理中心,负责控制 Load Generator 产生测试负载,以执行预先设定好的性能测试场景;同时,还负责收集各类监控数据。
在实际执行性能测试时,Controller 是和性能工程师打交道最多的模块,性能工程师会在 Controller 的 UI 界面上完成性能测试场景的设计、运行时的实时监控、测试负载的开始与结束等操作。

3)LoadRunner Analysis
Analysis 是 LoadRUnner 中一个清大的分析插件。不仅能图形化展示测试过程中收集的数据,还能对国歌指标做关联分析,找出他们的因果关系。它最根本的目的就是:分析出系统可能的性能瓶颈点以及潜在的性能问题。

3、如何基于 LoadRunner 性能测试?

从宏观角度讲,可以分为五个阶段:

性能需求收集及负载计划制定
录制并增强虚拟用户脚本
创建并定义性能测试场景
执行性能测试场景
分析测试报告

我觉得在性能测试中获取这些测试需求和测试结果分析与性能问题定位是比较难得两个点。而类似于性能测试脚本开发、场景设计等偏向于机械性地重复工作。

这 5 个阶段,按照先后顺序及各个模块作用排序如下:
在这里插入图片描述
4、性能需求收集及负载计划制定

其实无论什么类型测试,第一步都要根据测试目的明确测试具体需求。常需要包括以下内容:

系统整体的并发用户数比如,高峰时段会有 10 万用户同时在线;

并发用户业务操作的分布情况比如,20%的用户做登录操作,30%用户做订单操作,其他50%用户做搜索;

单一业务操作的用户行为模式比如,两个操作之间的典型停留时间,完成统一业务的不同操作路径等;

并发用户高峰期的时间分布规律比如,早上8点有大量用户登录,晚上 6 点后用户主键退出;

达到最高峰负载的时间长度比如,并发用户从0到10万花费的总时间。等等~~

前面说获取测试需求是比较难做的,因为绝大多数情况下没人会明确告诉你具体的性能需求。好比功能测试,如果需求不明确可以求助产品经理。

而性能测试产品通常无法准确告诉各个业务所占的百分比,也无法说出准确的用户行为模型。往往只能获取一些定性描述,然后自己去计算或根据过往经验得到具体定量需求。

测试目的不同,采用方法也不同,如何获取明确性能需求?这里提供测试需求的思考方式:

在性能测试指标中提到的体检例子,比如产品经理对体检的性能要求是“每天支持完成 8000 个体检”,这个需求看似具体,但还可以细化在很多方面。

首先,要明确这里的“每天”是否指的是 24 小时这取决于产品本身的属性。比如,产品是为单一时区的用户提供服务,还是要面向全球所有时区的用户。那么,根据体检中心的属性,可以确定“每天”一定是指 8 小时的工作时间。因为,体检中心是在一个确定的时区,并且不会 24 小时营业。

**然后,你明确了这个 8 小时后,那么原始需求是不是可以转化为“每小时支持完成 1000 个体检”?**若照这个套路设计后续的性能测试,会发现即使测试顺利完成,且各项性能指标都达标,可一旦上线后,系统还是很有可能被压垮。因为实际情况是,验血往往需要空腹,所以上午往往是体检中心的高峰时段,体检者会在上午集中涌入体检中心。也就是说,这 8000 个体检并不是平均分布在 8 小时内完成的,而是有明显的高峰时段。

最后,你可以采用 80/20 原则对高峰时段的用户负载进行建模比如 80% 的体检(6400 个)是发生在上午 20% 的时间(96 分钟)里。为了使模型更接近真实的情况,还应该分析历史数据,然后对该模型做进一步的修正。

另外,在得到了负载模型后,往往还会在此基础上加入一定的负载冗余,比如在峰值的基础上再额外放大 20%,以增强系统上线后稳定运行的信心。

完成了性能测试需求分析后,就已经明确了要开发哪些性能测试脚本。接着就要看开发性能测试脚本的步骤,以及相关的技术细节。

文章来源:网络 版权归原作者所有
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信怎么删除好友?非常简单,2个方法!

随着生活和工作的节奏加快,这也导致我们微信里的联系人变得越来越多。有时候,我们可能只是需要给对方转钱、发送照片或者是一些其他理由。 而这部分“好友”可能除了这次交流后再也没有别的联系了,那么这时候大家可能会想把他们删除。那么微…

NB6L295M STM32 GD32 IO模拟驱动设计

本采用工程及相关参考文档,下载链接如下: NB6L295MSTM32GD32IO模拟驱动设计,内含有软件工程代码,实际项目中使用,有参考原理图和实际使用说明资源-CSDN文库 硬件设计 MCU采用GD32,GD32基本上和STM32一样,针对NBL295M…

【基础篇】七、Flink核心概念

文章目录 1、并行度2、并行度的设置3、算子链4、禁用算子链5、任务槽6、任务槽和并行度的关系 1、并行度 要处理的数据量很多时,可以把一个算子的操作(比如前面demo里的flatMap、sum),"复制"多份到多个节点&#xff0c…

NovelAi本地部署版详细教程

这几天NovelAI模型泄露了。那就凑巧了,就以这个模型为例。完整的介绍一下stable-diffusion-webui本地安装方法几乎是从零开始说起(除了不教操作系统安装)。WebUI就是stable-diffusion的可视化版本! 本地安装的好处是: …

IDEA实现远程Debug调试

一、 前提   需要准备JDK1.8环境,安装IDEA(版本不限) 二、 IDEA中如何实现远程Debug模式 (1)、创建demo项目 1.File一>New一>project… 2.Maven Archetype一>填写Name一>选择jdk1.8一>选择Web一>创建 (2)、配置Idea 找到Remote Jvm Debug java…

A Better Finder Rename 12 for Mac——让重命名变得更简单

A Better Finder Rename 12 for Mac是一款专业的批量重命名工具,为您提供了快速、简单、可靠的重命名解决方案。无论您是否需要批量重命名文件、图像、音频或视频文件等,A Better Finder Rename 12 for Mac可以帮助您快速完成任务,节省宝贵的…

计算机网络-计算机网络体系结构-数据链路层

目录 *一、组帧 1.1字符计数法 1.2字符填充法 1.3零比特填充法 1.4违规编码 *二、差错控制 2.1检错编码 2.2.1奇偶校验码 2.2.2 CRC循环冗余码 2.2纠错编码-海明码 *三、流量控制和可靠传输机制 流量控制 停止-等待协议 ​编辑 后退n帧协议的滑动窗口(GBN) 选择…

效率出图!9款最好用的矢量图软件推荐

设计可以让我们将想法和想象力变成可视化的现实,数字时代的设计,对于细节的要求则更高,矢量绘图必不可少。和我们常见的png、jpeg等格式的图片不同,矢量图格式一般有SVG、EPS、AI等,它是通过数学方程来绘制的&#xff…

解决MySQL错误-this is incompatible with sql_mode=only_full_group_by

报错 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘数据库名.表名.字段名’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因 MySQL错误-t…

Spring Boot中的 @Aspect 注解是什么,如何使用

Spring Boot中的 Aspect 注解是什么,如何使用 在Spring Boot应用程序中,面向切面编程(AOP)是一种重要的编程范例,它可以用来处理横切关注点,例如日志记录、事务管理、性能监测等。Aspect 注解是Spring Fra…

uni-app开发微信小程序的报错[渲染层错误]排查及解决

一、报错信息 [渲染层错误] Framework nner error (expect FLOW INITIALCREATION end but get FLOW CREATE-NODE) 二、原因分析及解决方案 第一种 原因:基础库版本的原因导致的。 解决: 1.修改调试基础库版本 2.详情—>本地设置—>调试基础库…

2023转行要趁早!盘点网络安全的岗位汇总

前段时间,知名机构麦可思研究院发布了《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,信息安全位列第一。 对于网络安全的发展与就业前景,知了姐说过很多,作为当下应届生收入较高的专业之一&#xf…

【NeRF】1、NeRF 是什么

NeRF 最早是在 ECCV2020 中提出的方法,还获得了 ECCV2020 Oral 论文:Representing Scenes as Neural Radiance Fields for View Synthesis代码:https://github.com/bmild/nerf官网:https://www.matthewtancik.com/nerf Neural R…

Spring Boot中的异步编程:解决的问题与应用场景

Spring Boot中的异步编程:解决的问题与应用场景 在现代Web应用程序中,高并发和性能是至关重要的。为了处理大量的请求和任务,异步编程成为了不可或缺的一部分。Spring Boot提供了强大的异步编程支持,可以显著提高应用程序的吞吐量…

Avalonia使一个弹窗弹到指定位置

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.样式预览 4.PositionControl.axaml <UserControl xmlns"https://github.com/avaloniaui&quo…

TimesNet:时间序列预测的最新模型

2020年发布的N-BEATS、2022年发布的N-HiTS和2023年3月发布的PatchTST开始。N-BEATS和N-HiTS依赖于多层感知器架构&#xff0c;而PatchTST利用了Transformer架构。 2023年4月发表了一个新的模型&#xff0c;它在时间序列分析的多个任务中实现了最先进的结果&#xff0c;如预测、…

pdf怎么压缩?pdf文件缩小的方法在这里

PDF文件由于其跨平台、可打印性强等特点&#xff0c;成为了我们日常工作中经常使用的一种文件格式。然而&#xff0c;这种格式的文件有时候会因为过于庞大而给我们的存储和传输带来困扰&#xff0c;其实&#xff0c;这种情况只需要通过一些工具对PDF文件进行压缩&#xff0c;即…

网站为什么需要https证书以及如何申请

随着互联网的快速发展&#xff0c;网站的安全性问题越来越受到人们的关注。因此&#xff0c;越来越多的网站开始使用https证书&#xff0c;以保护用户的数据安全和隐私。那么&#xff0c;网站为什么需要https证书呢&#xff1f; 首先&#xff0c;https证书可以提供加密保护&…

《RISC-V体系结构编程与实践》的benos_payload程序——mysbi跳转到benos分析

1、benos_payload.bin结构分析 韦东山老师提供的开发文档里已经对程序的结构做了分析&#xff0c;这里不再赘述&#xff0c;下面是讨论mysbi跳转到benos的问题&#xff1b; 2、mysbi跳转到benos的代码 3、跳转产生的疑问 我认为mysbi.bin最后跳转到0x22000地址处执行&#xff0…