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

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.hqwc.cn/news/133373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【手写数字识别】数据挖掘实验二

文章目录 Ⅰ、项目任务要求任务描述:主要任务要求(必须完成以下内容但不限于这些内容): II、实现过程数据集描述实验运行环境描述KNN模型决策树模型朴素贝叶斯模型SVM模型不同方法对MNIST数据集分类识别结果分析(不同方法识别对比率表及结果分析) 完整代…

2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)

一、前言 目前是2023.1.27,鉴于本人安装过程中踩得坑,安装之前我先给即将安装pytorch的各位提个醒,有以下几点需要注意 1.判断自己电脑是否有GPU 注意这点很重要,本教程面向有NVIDA显卡的电脑,如果你的电脑没有GPU或者使用AMD显…

2023-10-12 LeetCode每日一题(找出数组的串联值)

2023-10-12每日一题 一、题目编号 2562. 找出数组的串联值二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums 。 现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。 例如,15 和 49 的串联是 1549 。 nums 的 串…

QT运行界面与画布大小不一致问题(一步到位)

QT运行界面与画布大小不一致问题 出现的问题直接设置环境变量main函数中输入以下代码更改系统缩放比好了,看一下运行结果吧 出现的问题 当我们运行程序时,发现运行出来的大小和设计的几面大小有很大的差别,这使我们开发起来就特别的困难&…

iOS 面试题以及自我理解答案

1、简述push原理,push的证书和其他的有什么不一样? 第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iP…

数字孪生技术:新零售的未来之路

随着科技的不断进步,新零售产业正经历着巨大的变革。数字孪生作为一种新兴技术正在加速这一变革的进程。它不仅为新零售企业带来了更高效的运营方式,还为消费者提供了更个性化、便捷的购物体验。那么,数字孪生技术究竟如何在新零售产业中发挥…

angular项目指定端口,实现局域网内ip访问

直接修改package.json文件 "dev": "ng serve --host 0.0.0.0 --port 8080"终端运行npm run dev启动项目。 这里就指定了使用8080端口运行项目,同时局域网内的其他电脑可以通过访问运行项目主机的ip来访问项目 例如项目运行在ip地址为192.168.2…

BI工具:让数据分析井然有序一望而知

BI(Business Intelligence)工具是一类专门用于数据分析和决策支持的软件工具。 它们能够将企业内部和外部的数据进行整合、处理和可视化,帮助用户从海量数据中获取有价值的见解和洞察,并以直观、易懂的方式展示给决策者和相关人员…

当涉及到API接口数据分析时,主要可以从以下几个方面展开

当涉及到API接口数据分析时,主要可以从以下几个方面展开: 请求分析:可以统计每个API接口的请求次数、请求成功率、失败率等基础指标。这些指标可以帮助你了解API接口的使用情况,比如哪个API接口被调用的次数最多,哪个…

mysql数据库创建及用户添加和权限管理

1、创建数据库: CREATE DATABASE database_name; 例如: CREATE DATABASE mydatabase; 2、创建用户: CREATE USER usernamehostname; 例如: CREATE USER myuserlocalhost; 注意:替换 username 为你想要创建的用户名&a…

C语言之文件操作篇(1)

目录 为什么要使用文件 什么是文件 文件名 文件名的访问路径 相对路径 绝对路径 文件类型 文件缓冲区 文件指针 文件的打开与关闭 fopen fclose 打开方式如下 w r 今天我们来介绍C语言的文件操作。之前我们实现的通讯录有两个问题 信息太多,空间小了…

echarts实现横轴刻度名倾斜展示,并且解决文字超出部分消失问题

需求背景: xAxis.axisLabel. interval如果不手动设值的话,默认就是‘auto’,会采用标签不重叠的策略间隔显示标签。当数据量特别大的时候,展示出来的刻度标签就会很少,导致用户体验不好。如下图所示: 如果…