性能测试工具LoadRunner

news2024/9/25 17:20:41

  前言👀~

上一章我们介绍了性能测试的一些基本概念,重要的是性能测试的各项指标,今天我们使用性能测试工具LoadRunner简单的完成一次性能测试

性能测试Load Runner

LoadRunner是什么?

LoadRunner安装

LoadRunner脚本录制

1.录制基本的用户脚本

2.删减无用脚本

3.编译

4.运行(回放)

LoadRunner脚本加强

1.插入事务

2.插入集合点

3.插入检查点

4.参数化

5.打印日志

掌握Controller的使用

1.创建场景的方式

2.场景的设置

3.场景的运行

掌握analysis的使用(重要)

如何生成测试报告?

图表分析


如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞

ef6d41484d4b43bf93b46a58ad5d5717.png

个人主页:N_0050-CSDN博客

相关专栏:java SE_N_0050的博客-CSDN博客  java数据结构_N_0050的博客-CSDN博客  java EE_N_0050的博客-CSDN博客


性能测试Load Runner

LoadRunner是什么?

LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,可用来模拟用户负载完成性能测试工作,从用户关注的响应时间、吞吐量, 并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。简单点说就是一个性能测试工具,通过模拟用户负载对系统操作来完成性能测试,然后验证系统的各项性能指标是否符合预期

原理:LR启动以后,在任务栏会有一个Agent进程,通过Agent进程,监视各种协议的Client与Server端的 通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在录制不到的,然后LR调用这些 脚本向服务器端发出请求,接受服务器的响应。至于服务器内部如何处理,它不关心


LoadRunner性能测试流程:


LoadRunner安装

这里我就不演示了,安装包在开头拿去下载就行了,如果下载不了私我我发你,因为我已经下载过了,删掉重新装有点麻烦,就是点击可执行文件.exe然后一路安装下去,直到出现HP身份认证设置的时候不勾选接着一路点下去即可

为什么选择LoadRunner:

1.具有强大的录制功能

2.可以设计丰富且灵活的场景

3.能够产出丰富且详细的性能测试报告

LoadRunner三大组件之间的关系:

VUG:录制脚本和生成脚本模拟用户的行为(编写性能测试脚本)


Controller:针对脚本以及具体场景来设置测试场景,然后执行性能测试脚本(设计场景、运行以及监控场景)


Analysis:根据性能测试的结果,然后产出性能测试报告


LoadRunner脚本录制

这里我们录制LoadRunner自带的系统webTours(软件/系统)

如何启动webTours?

1.下载完成LoadRunner,找到你安装路径下的webTours文件,然后双击

2.进入选择webTours文件后,双击startServer.bat

3.然后就是下面这样,注意webTours启动后不要关闭

4.接着找到conf文件夹下的httpd文件查询端口号


 5.结合刚才打开的webTours中IP地址去我们的浏览器中输入 http://上图中自己的地址IP:1080/WebTours内容即可访问到webTours,然后注册,也可以不用注册使用自带的jojo密码bean

如果要注册点这里

接着创建完后,可以去webTours文件下的cgi-bin文件夹下的user文件夹中就可以看到你刚才创建的账号名和密码了

1.录制基本的用户脚本

首先打开VUG软件,然后创建一个脚本文件

创建好了后,对图中三个脚本文件进行解释

然后开始录制

然后它会自动的跳转到刚才的我们WebTours那个界面去,我们登录后点击停止就会自动生成脚本了

注意:如果录制不到脚本可以试试打开如下图中的选项

2.删减无用脚本

然后删除一些没用的脚本,根据你实际的进行删除,我这边使用的360极速浏览器脚本产生的比较多,之前也用过chrome录制过,脚本内容有点少

3.编译

4.运行(回放)

点击运行后,如果是下图这样的效果就是成功了

但是里面的思考时间没有被执行,如果脚本中有写到思考时间去设置,这样在运行的时候也会被执行,如下图

还要设置一个,设置完这个选项后就能看到运行回放的界面了


LoadRunner脚本加强


为什么要对脚本加强?

1.录制的测试脚本达到不了预期的测试目的(也就是达不到预期的测试效果)

2.缺乏针对性

当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。通过一些方法来完善测试脚本,如果就单单一个简单的脚本是无法观察到这些性能指标,所以我们需要对脚本进行加强


脚本如何加强?

1.插入事务

开始事务:lr_start_transaction("事务名称");

结束事务:lr_end_transaction("开始时事务取的名称", LR_AUTO);

添加事务有两者方式:

1.直接在代码手动添加,就把上面的函数写到你要插入的位置即可

2.录制的时候手动插入事务,如下图

日志输出效果

注意:事务函数有开始就有结束,开始事务和结束事务的事务名称必须一致,可以试试不一致,在日志中会有报错信息

2.插入集合点

集合是什么?

就类似军训中一说集合大家同一时间快速集合到一起但每个人到位置的时间点都不同,所以在使用性能测试工具的时候我们该如何实现集合的效果让用户都集中到一起并且同时请求从而实现并发的效果呢?

集合点

集合点是LoadRunner为了实现并发而进行的一种运行机制,让虚拟用户进行短暂的集合,在满足特定的条件下然后放行达到并发的效果也就产生了并发数

集合点函数:lr_rendezvous("集合名称");

和事务一样可以在右侧搜索后进行添加


注意:集合点函数只能放到action中,并且集合点应当放到事务之前


3.插入检查点


什么是检查点?

检查点相当于"断言",在进行压力测试时,为了检查服务器返回的网页是否正确。在VUG中这些检查点验证网页上是否存在指定的Text

检查点函数:web_reg_find("Text=想要匹配的关键字",LAST);

日志输出效果

注意:检查点函数一般放在页面请求之前


4.参数化

概念:使用变量代替脚本中的常量目的是通过虚拟用真实的模拟现实用户对系统进行操

右击一个变量后如下操作

注意创建后点No,如果选择yes替换掉所有相同的变量话如果url中带有这个变量的话会出错

然后左侧点击可以看到我们刚才创建的参数,我们还可以添加多个

要想看到参数的具体信息,我们需要修改日志等级

日志输出效果

只有一个参数的具体信息,我们需要设置Action脚本运行次数

日志输出效果

5.打印日志

函数:lr_log_message("输入你想要输出的内容");

	if(strcmp("jojo",lr_eval_string("{UserName}"))==0){
		lr_output_message("OK %s",lr_eval_string("{UserName}"));
	}

如果当前登录的用户是对应的TestNan,就输出TestNan,这个lr_eval_string函数的意思就是把UserName的值输出和前面的进行比较。下面是日志输出效果


掌握Controller的使用

目的掌握创建场景、运行和监控场景,可以通过Controller设计简单的测试场景,并且可以简单的分析性能测试报告

为什么要把脚本放到Controller中运行,而不是选择在VUG里呢?

什么是性能测试不要忘记了,测试人员借助性能测试工具,模拟系统在不同场景的各项性能指标是否满足需求,所以我们需要观察系统的性能指标在VUG中运行看不到系统的性能指标

1.创建场景的方式


第一种是在VUG中对写好的脚本创建场景

第二种是手动打开Controller进行脚本的添加并创建场景,其实和上面的差不多


2.场景的设置


1.设置初始化

2.设置启动机制

3.设置性能测试脚本的执行时间,这块可以理解为对系统的可靠性测试,因为你可以设置脚本的运行时间

4.设置虚拟用户退出机制

设置场景的运行方式

1.按照场景的方式运行:不论场景中脚本的数量有多少,所有的脚本都是统一调度和运行的

2.按照Group运行:场景中脚本有各自设计运行方式,所以根据脚本各自设计的运行方式运行

设置完成后右侧的图表会发生变化


3.场景的运行


下图是运行场景中的各个区域,对于监控区域的数据都是上一篇性能测试中的性能指标介绍的

如下图设置后图表区展示的可多可少

注意:想要查看系统资源图表,需要手动修改配置

1.打开任务管理器,启动对应的服务器

2.选中监控区域中的System Resource Graphs下的Windows Resource,然后在指标详细数据区域右键,选中add Measurements
 

3.监控指标的选择,选择你要观察的系统资源即可
 

4.观察设置后的效果

开启场景:

下图是运行起来的效果

运行结束的效果

仔细观察图表各项指标会发现有一共有四个事务,为什么有四个事务呢?

LR中认为每一个脚本文件都是一个事务,图中的vuser_init、action、vuser_end三个脚本文件就是三个事务,其中action是用户自定义事务,ts这个事务就是我们自己加的

分析Controller中的运行时图:

Running这条紫色的折线表示正在进行测试的用户数量,测试初期,需要时间来分配资源或初始化用户,也就是刚开始的时候虚拟用户需要初始化,所以一开始是0随着虚拟用户的启动,折线逐渐上升,随着虚拟用户都启动完成,折线趋于平稳。当运行时间到了,折线逐渐下降

Ready这条棕色的折线代表处于就绪状态但尚未进入测试的用户数量,测试系统开始调用这些就绪的用户进行实际的测试任务,用户的状态从就绪转为运行,这条折线不断下降直至所有的虚拟用户都转为运行状态,最终变为0。这里一开始就在2和我们前面设置了每5秒生成一个虚拟用户有关系,其中一部分用户先进入就绪状态然后被调到测试中,所以Ready这条线先上后降

finished这条黄色的折线代表已经完成测试的用户数量,随着测试即将结束时也就是Running这条折线逐渐下降的时候,finished折线才不断上升,表明所有的虚拟用户几乎在同一时间完成了测试


注意:这里设置的虚拟用户和运行时间是我们一开始设置所以根据你设置的观察


掌握analysis的使用(重要)

生成测试报告,分析测试结果

如何生成测试报告?

首先映入眼帘的是汇总报告,汇总报告包含数据摘要、事务摘要、HTTP响应摘要,其中事务摘要,不要看最大最小值,主要看平均值和标准偏差,标准偏差越大,说明系统越不稳定

图表分析

首先知道下面这两个概念

负载的定义:比较宽广的概念,涵盖了所有影响系统性能的因素,负载更加泛指系统当前的工作状态,它不仅包括负载量,还包括这些负载对系统资源(如CPU、内存、网络等)的使用情况。例如系统的负载可能包括负载量中的用户数,但也会涉及这些用户所执行的操作对服务器硬件的压力

负载量的定义:负载量是负载的一部分,通常是指在特定时间段内系统能处理的工作量(这个"工作"可以是请求数、事务、用户操作等),在性能测试中可以通过负载量衡量系统在特定条件下的性能表现,比如每秒处理请求数、每秒处理的事务数等。也这样理解,负载量是一个用来衡量系统能够处理多少工作的指标

1.运行的虚拟用户图:通过此图可以观察系统运行期间执行脚本的Vuser数量以及状态,可以确定任何给定时刻服务器上Vuser负载,也就是不同时间点系统能处理的并发用户数

2.点击数图:通过此图可以观察系统运行期间Vuser每秒向服务器发送的http请求数,根据点击次数对Vuser生成的负载量(可以理解为请求数)来衡量系统能够处理多少请求数进行评估,前面提到点击数也属于是性能指标之一。此图可以搭配平均事务响应图进行比较,查看点击次数对事务性能的影响,因为请求数增加相对的响应时间可能会变长

为什么说统计在特定时间段内所有虚拟用户总共发起的请求数量来评估负载量呢?

可以通过用户总共发起的请求数量,告诉我们系统需要处理多少个请求,也反映了系统的并发处理能力如果用户发起的请求数远多于系统能有效响应的数量,这可能指示系统需要优化或增强其处理能力。所以通过负载量帮助我们评估系统在不同压力条件下的性能表现

3.吞吐量图:通过此图我们可以根据服务器的吞吐量对Vuser生成的负载量进行评估,也可以搭配平均事务响应图进行比较,查看吞吐量对事务性能的影响

4.吞吐量和点击数图:通过此图可以观察Vuser生成的负载量以及服务器的吞吐量,会发现吞吐量在点击数之后,首先吞吐量表示系统处理请求的数量也可以理解为响应后返回的资源数量,所以得先有请求才有返回

注意:点击量上升了,但是吞吐量没有上升的情况,有很多种可能例如服务器处理请求的速度慢或硬件设备的问题,或者可能没有收到请求出现丢包的可能等等原因

补充一下如何将两张图表设置成一张进行观察,右击后选择对应的图表即可

5.平均事务响应时间图:通过此图可以观察系统在处理事务时的平均响应时间,可以根据平均响应时间对Vuser生成的负载量进行评估。如果响应时间随着负载增加而显著增加,那么就需要对系统进行性能优化

6.系统资源使用情况图:通过此图查看系统各项资源的使用情况来衡量系统的性能表现,例如运行时cpu使用率、可用的物理内存等

好了以上便是本章的内容,性能测试的内容很多并且不是短时间就能掌握的起码需要几年时间沉淀,并且性能测试的难点就在于性能分析不好分析以及性能优化的解决方案,我们下一章再见💕

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

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

相关文章

振弦式钢筋计的主要应用领域有哪些?

在现代工程建设中,钢筋作为重要的结构材料,其应力状态直接关系到工程结构的安全性和稳定性。因此,对钢筋应力的实时监测成为了保障工程质量的关键环节。振弦式钢筋计作为一种高精度、稳定性好的应力监测仪器,在桥梁、建筑、隧道等…

pg一些常用语句记录

查看数据库大小 pg_size_pretty:将数据库用量展示为KB、MB、GB等样式,查看更直观查看具体某个数据库的大小 select pg_size_pretty(pg_database_size(postgres)); 查看所有数据库的大小 select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datnam…

Sqli-labs-master靶场--布尔盲注

目录 1、布尔盲注 2、布尔盲注的流程(以靶场less-8为例) 2.1输入id尝试是否存在注入点 2.1.1通过以上尝试,联想到可能是布尔盲注 2.2猜测数据库长度 2.3获取数据库名 2.3.1python脚本获取 代码: 获取结果为: …

后期调色学习笔记

关于调色曲线的学习: 学习链接:一看就懂的曲线调色教程【手机摄影后期】_哔哩哔哩_bilibili 从左向右就是由暗部越来越到亮部 越靠近右侧的越是亮部

机械学习—零基础学习日志(数学基础汇总1)

零基础为了学人工智能,正在艰苦的学习 我比较推荐,《三个月从零入门深度学习,保姆级学习路线图》的整体学习思路,但因为数学基础太差,而且针对所需的数学系统知识,我依然没有很明确的学习方向。 所以直接…

杀手级的AI LLM产品还有多久面世

AI产品落地:Killer App依然缺席的原因与未来展望 🚀 在当今科技领域,人工智能(AI)无疑正处于一个快速发展的阶段。尽管如此,关于AI产品的实际应用和市场落地,仍然存在诸多挑战。本文将探讨当前…

使用 Matplotlib 绘制折线图

使用 Matplotlib 绘制折线图 数据可视化是数据分析的重要组成部分,通过图表,我们可以更直观地理解数据背后的趋势和模式。Matplotlib 是 Python 最基础也是最常用的绘图库之一,非常适合初学者。本文将带你从零开始,逐步创建和自定…

Python Static Typing: 提升代码可靠性与可读性的使用技巧

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

Java毕业设计 基于SSM和Vue的酒店管理系统小程序

Java毕业设计 基于SSM和Vue的酒店管理系统小程序 这篇博文将介绍一个基于SSM框架和Vue开发的酒店管理系统微信小程序,适合用于Java毕业设计。 功能介绍 用户 登录 注册 忘记密码 首页 图片轮播 房间信息 房间详情 预订 收藏 评论 我的 订单信息 酒店管理…

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…

vue2学习 -- vuex

文章目录 1. 理解2. 语法2.1 安装使用2.2 getters配置项2.3 四个map方法的使用2.4 vuex模块化 1. 理解 概念:专门在ue中实现集中式状态(数据)管理的一个ue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写&…

Java基础 1. Java开发环境搭建

Java基础 1. Java开发环境搭建 文章目录 Java基础 1. Java开发环境搭建1.1. 常用的DOS命令1.1.1. 常用的Windows组合键:1.1.2. 常用的DOS命令:1.1.3. 批处理文件 1.2. 通用文本编辑快捷键1.2.1. Sublime Text文本编辑器的安装与使用安装中英文打开方式调整字体大小文件扩展名 1…

LlamaIndex 如何可视化跟踪日志

LlamaIndex 中无论是 RAG 还是 Agent,都是需要和 LLM 进行交互,在这个流程流中包括搜索、Retrieve和推理等多个阶段。提示词在整个流程通过模板进行控制,LlamaIndex 通过整合和调度完成最终任务。 大模型的一个最大特点就是无法保证回答百分…

假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中?

假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中? 问题解释:你有一个嵌套的集合,想要通过 Stream 流的方式将其中嵌套的集合放到一个新的集合中。可以使用 flatMap 方法来实现。这种方法非常适合处理嵌套集合的情况。…

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利…

Basic Pentesting:2-打靶渗透【附代码】(权限提升)

靶机下载地址: https://www.vulnhub.com/entry/basic-pentesting-2,241/https://www.vulnhub.com/entry/basic-pentesting-2,241/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:1D:4A:27 1.2. 端口扫描 …

MongoDB学习记录

1、初识Mongo 概述:与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储,通常称这种格式为Bson,Bson不仅支持JSON中已有的数据类型,还增加了一些额外的数据类型,例如日期和二进制数据&a…

第二十三天培训笔记

上午 在同步时,对删除和修改都比较慎重(监控同步时) mysql 主从搭建 前提软件 libaio , rsync 注意:先执行从服务器的脚本,再执行主服务器脚本 master-mysql 配置脚本 2 、其他常⽤函数 ( …

【ML】pre-train model 是什么如何微调它,如何预训练

【ML】pre-train model 是什么如何微调它,如何预训练 0. 预训练模型(Pre-trained Model)0.1 预训练模型的预训练过程0.2 如何微调预训练模型0.3 总结 1. Contextualized word Embedding2. 怎么 让 bert 模型变小3. 如何微调模型 0. 预训练模型…

# 利刃出鞘_Tomcat 核心原理解析(三)

利刃出鞘_Tomcat 核心原理解析(三) 一、 Tomcat专题 - Tomcat架构 - 启动流程 1、Tomcat 启动流程 2、Tomcat 启动 步骤 : 1) 启动tomcat , 需要调用 bin/startup.bat (在linux 目录下 , 需要调用 bin/startup.sh) &#xff0c…