【性能测试】Jmeter如何做一份测试报告(3)

ops/2025/3/13 16:45:03/

 

本篇文章主要介绍Jmeter中下载插件(Jmeter  Plugins)

如何使用监听器插件,线程组插件,梯度压测线程组

测试报告需要去关注的数据,怎么看测试报告图表

目录

一:插件下载

1:下载地址

2:插件下载

3:下载两个插件

(1)监听器插件

(2)线程组插件

4:下载成功的标志

二:梯度压测线程组(Stepping Thread Group)

1:This  group  will  start

2:First  waitfor

3:Then  start

4:Next  add

5:thread  severy

6:using ramp-up

7:Then hold load for

8:Finally , stop

9:threads every

三:测试报告 重要数据

1:TPS吞吐量

2:响应时间

四:运行结果图

1:启动运行

2:退出阶段

五:全局观理解测试

六:出具测试报告

1:测试报告

2:测试报告分析

(1)响应时间

(2)错误率(可靠性)

(3)吞吐量


一:插件下载

1:下载地址

Install :: JMeter-Plugins.org  附上下载链接地址

在压测场景中,我们通常为⼀点⼀点的逐步增加线程数,因此需要安装新的插件来⽀持线程数的配置。

通过插件管理⼯具下载其他插件:将该jar文件放到exe文件夹中后,此时我们的Jmeter工具就支持安装插件了,重启

2:插件下载

下载成功的标志,可以看到这个像蝴蝶一样的图标

3:下载两个插件

(1)监听器插件

点击Available

(2)线程组插件

这里临时修改了一下界面颜色,黑色太高冷了,阿华是屌丝

4:下载成功的标志

我们的监听器中多了很多选项

我们的线程组中多了很多的选项

二:梯度压测线程组(Stepping Thread Group)

重点理解图上三个打圈的参数 这里指的是 这个线程组中有20个线程,等待0秒后开始压力测试,一开始有0个线程,每3秒,增加5个线程进来,这5个线程需要在1s内启动完毕,

以上图数据为例

1:This  group  will  start

启动多少个线程,同线程组中的线程数

2:First  waitfor

等待多少秒才开始压测,⼀般默认为0

3:Then  start

⼀开始有多少个线程数,⼀般默认为0

4:Next  add

指的是下一次要额外增加的线程数量。例如,当前有 10 个线程在运行,设置 Next add 为 5,那么下一次线程数量会增加到 15 个。


5:thread  severy

一组线程(5个)执行完之后,等待3秒后再启动下一组线程

指的是在一组线程执行完之后,等待多长时间再启动下一组线程。也就是相邻两组线程启动之间的时间间隔。


6:using ramp-up

这一组(5个)线程,在1秒内均匀的启动

设置为 1秒,表示在 1 秒的时间内均匀地启动指定数量的线程。例如,设置线程数为 10 个,ramp-up period 为 1 秒,那么 Jmeter 会在 1 秒内逐步启动这 10 个线程,平均每秒启动 10 个线程 

7:Then hold load for

20个线程启动完成后,一直运行60s 

8:Finally , stop

9:threads every

解读——每隔1s,结束5个线程,可以看到这边是直降,与左边是有区别的

三:测试报告 重要数据

1:TPS吞吐量

全称Transactions per Second

2:响应时间

这里通常是一个折线图 

逆天,有时候并发数可能太多,造成莫名其妙的报错,那就在run一次

四:运行结果图

1:启动运行

活跃的线程数折线图

响应时间——由低变高

吞吐量——整体比较平稳

2:退出阶段

活跃的线程数,逐步下降

响应时间——中间部分比较高

吞吐量 老样子 四平八稳

五:全局观理解测试

对应过来就是下面这条蓝色的线。

看第一个红色方框——我们的响应时间降低,吞吐量就上升了

再看第二个红色方框——我们的响应时间增大的时候,吞吐量就下降了。

这里其实可以得出——我们的响应时间和吞吐量呈现负相关的关系

这里细心的老铁会发现最后结束的的时候,为什么响应时间反而激增了呢?这是因为我们有一个线程请求一直没有得到响应,我们观察聚合报告,列表页,有一个最大的请求时间为59s,图标中的绿色最高峰也可以看出来。

六:出具测试报告

1:测试报告

JMeter测试报告是⼀个全⾯⽽详细的⽂档,它提供了关于测试执⾏结果的详细信息,帮助⽤⼾全⾯评估系统的性能并进⾏性能优化。这份测试报告也要交给我们的后端开发同学(如果有异常的话)

1:⽣成测试>性能测试报告的命令

Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录
-n : ⽆图形化运⾏                  (可以理解成后台运行,有 点像Linux中的nohup操作!)
-t : 被运⾏的脚本
-l : 将运⾏信息写⼊⽇志⽂件,后缀为jtl的⽇志⽂件
-e : ⽣成测试报告
-o : 指定报告输出⽬录

举例:

开始执行——等待大概1min左右结束

最后生成一个first.jtl日志文件,这个不是重点

重点去我们创建的first文件中查看测试报告

双击index.html

静态数据,其实可以理解成我们的聚合报告

这里还有很多数据展示,在左边的菜单栏展开。

总结:我们测试人员,做出来测试报告本质上是从宏观角度去测试项目,去发现问题,但是不能排查问题,具体去解决问题还是我们后端开发人员去做。

2:测试报告分析

我们测试人员主要去干的事情还是要从这三方面进行分析

(1)响应时间

如果响应时间超过了请求,代表系统到了瓶颈,响应时间发生变化的原因——我们的系统不稳定啊,有时快有时慢,随着并发压力变大而慢慢变慢,响应时间变高

(2)错误率(可靠性)

高并发场景下,系统能否正常处理业务

要求:99.99%可靠  99.9999%(也就是我们常说的4个9——10w次请求只能出现一次错误)

错误率高的原因:

①接口请求错误

②服务器无法继续处理请求,达到了瓶颈

③后端系统限流

④熔断 

解释:防止因为某个服务的故障而整体崩溃。可以理解成及时止损——比如说给一个场景,电商用户支付场景,忽然微信支付失败率激增,超时严重,此时我们就先临时把微信支付这个方式先熔断掉,先保证我们整体的这个服务还是完好的(先保大头)

⑤降级

主动关闭一些非核心功能,以确保核心功能正常运行。比如说,某次大型直播,那么直播间显示的用户名称给成一个统一默认的名字

(3)吞吐量

①吞吐量越大,性能越好;吞吐量稳定或者变低,可能系统达到了性能瓶颈。

②吞吐量变化的规律

吞吐量波动很大的话,说明我们系统的性能不稳定;

吞吐量如果是慢慢变大,再趋于稳定,说明我们的并发量在上升,和并发量是强相关的

如果吞吐量慢慢变低,我们的并发量也在慢慢变低,说明我们的测试>性能测试要结束了。

换一个角度,我们并发量在增,吞吐量变低,一般就是系统处理不过来这么多响应了,造成系统卡顿啊什么的。


http://www.ppmy.cn/ops/165450.html

相关文章

[mybatis]resultMap详解

resultMap Mybatis中提供了resultMap功能,可以将数据库查询结果映射到Java对象,用于解决 字段名与属性名不一致 或 复杂关系(如一对多)的映射问题。 比如一个User类,在它的属性里还有另一个子对象(或者多…

无服务架构:设计一个基于 AWS Lambda 和 S3 的音乐网站

作为开发者,我一直对如何构建高效、可扩展的网络应用感兴趣,尤其是如何在云平台上创建一个简单而强大的音乐网站。为了实现这个目标,我决定使用 AWS Lambda、S3 和一些其他 AWS 服务来设计和开发这个项目。以下是我在构建这个音乐网站时所采用…

全局引用scss文件定义的变量

在vite.config.ts文件中写如下代码 css: {preprocessorOptions: {scss: {additionalData: use "/assets/styles/index.scss";,//这一句javascriptEnabled: true}} }在scss文件中定义变量 $color:#000;在其他文件引用变量 <style lang"scss" scoped&g…

PHP版多语言多商家海外商城源码开源无加密

PHP版多语言多商家海外商城源码开源无加密 支持各种功能逻辑二次开发 附带详细搭建教程 后台支持POS批量下单、定时爆单、商家直通车 前后台多国语言、多货币切换、汇率自动换算 支持PayPal等多种在线国际支付方式 离线支付方式&#xff1a;银行卡、USDT等手动支付方式&a…

数据结构:排序详解(使用语言:C语言)

1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录…

数据分析人员需要掌握sql到什么程度?

学习SQL三个层次 熟悉基本的增删改查语句及函数&#xff0c;包括select、where、group by、having、order by、delete、insert、join、update等&#xff0c;可以做日常的取数或简单的分析&#xff08;该水平已经超过90%非IT同事&#xff09;;掌握并熟练使用高阶语法&#xff0…

蓝桥杯备考:新二叉树

这道题和正常的前序遍历没啥区别&#xff0c;就是改成char而已吧 #include <iostream> using namespace std; const int N 300; char l[N],r[N]; void dfs(char root) {if(root *) return;cout << root;dfs(l[root]);dfs(r[root]);} int main() {int n;cin >&…

Java链接redis

一、准备工作就像谈恋爱 首先咱们得来点仪式感是不是&#xff1f;打开你的Maven&#xff08;Gradle玩家别打我&#xff09;&#xff0c;把这两个宝贝依赖给我焊死在pom.xml里&#xff1a; <!-- 经典永不过时的Jedis --> <dependency> <groupId>redis.cli…