软件测试 —— jmeter(2)

news2025/1/27 4:25:50

软件测试 —— jmeter(2)

  • HTTP默认请求头(元件)
  • 元件作用域和取样器作用域
  • HTTP Cookie管理器
  • 同步定时器
  • jmeter插件
  • 梯度压测线程组(Stepping Thread Group)
      • 参数解析
      • 总结
  • Response Times over Time
  • Active Threads Over time
  • 聚合报告
  • 测试报告
      • 性能分析
        • 响应时间
        • 错误率(可靠性)
        • 吞吐量

上一次我们简单介绍了一下jmeter和简单使用了一下jmeter,今天我们继续介绍一下jmeter中的其他插件:

HTTP默认请求头(元件)

我们之前创建了一个HTTP请求,我们的手动输入信息:
在这里插入图片描述如果我们有很多的HTTP请求,每一个我们都要手动输入的话,那就太麻烦了,所以我们可以默认配置HTTP的默认请求:

在测试计划上右击:
在这里插入图片描述在这里插入图片描述
里面填上相应的信息:
在这里插入图片描述这个时候我们可以把原来HTTP请求中信息抹掉:
在这里插入图片描述这个时候点击运行:
在这里插入图片描述并且我再添加HTTP请求,都是会按照我们默认请求值里面的信息配置:
在这里插入图片描述

元件作用域和取样器作用域

如果我们此时再创建一个线程组,添加HTTP请求:
在这里插入图片描述这个时候,HTTP请求3会报错:
在这里插入图片描述我们发现HTTP请求3没有按照之前的配置填入信息,但此时我把HTTP请求默认值给它拉到外面:
在这里插入图片描述在这里插入图片描述
此时请求通过了,这就说明我们改变了HTTP请求默认值元件的作用范围。
在这里插入图片描述在这里插入图片描述这就要谈到元件取样器的作用范围了
元件作用域只对它的子节点有作用

在这里插入图片描述
取样器(sampler)元件内组件不依赖其他元件就可执行,因此取样器不存在作用问题
在这里插入图片描述

HTTP Cookie管理器

我们还有另外一个元件,HTTP Cookie管理器
在这里插入图片描述HTTP Cookie管理器像Web浏览器⼀样存储和发送Cookie。如果HTTP请求并且响应包含cookie,则Cookie管理器会⾃动存储该cookie,并将其用来于将来对该特定网站的所有请求。每个JMeter线程都有自己的"cookie存储区"。因此,正在测试使用cookie存储会话信息的⽹站,则每个JMeter线程都将拥有自己的会话。此类Cookie不会显⽰在Cookie管理器显⽰屏上,可以使⽤"查看结果树监听器"查看。

缓存配置可选择standard(标准)或compatibility(兼容的),当然也可以手工添加⼀些cookie.添加了HTTP Cookie管理器后,会自动存储并发送Cookie。

同步定时器

我们看到右上角的黄色三角形符号:
在这里插入图片描述点击之后会进入到界面,这个时候,我们再次运行:
在这里插入图片描述
我们就可以看到各个线程的执行情况,我们看到所有的线程并不是同一时间准备好的,这样我们无法模拟并发的场景,这个时候我们要添加同步计时器
在这里插入图片描述在这里插入图片描述

模拟用户组的数量和线程组的数量是一致的。这里注意一下,配置好之后放到全局范围我们再来看:
在这里插入图片描述我们发现两个线程组是同时启动的,这样就可以模拟并发场景了。

jmeter插件

如果我们还想要安装其他的插件,我们就要安装一下小蝴蝶
点击这个跳到对应官网:

https://jmeter-plugins.org/install/Install/

在这里插入图片描述
在这里插入图片描述
下载好了之后,把插件移动到lib下的ext下:
在这里插入图片描述
关闭jmeter之后,再次打开,右上角就会多了一个小蝴蝶的标志:
在这里插入图片描述
点击进去就可以搜索下载对应的插件:
在这里插入图片描述
我们先安装一个线程组的插件:
在这里插入图片描述
点击下方的Apply,就会安装好了重启,之后我们右击查看关于线程组的元件多了两个:

在这里插入图片描述
然后我们安装一下extra,帮助我们看到结果:
在这里插入图片描述

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

右击,添加梯度压测线程组(Stepping Thread Group)
在这里插入图片描述在这里插入图片描述
我们来解释一下这几个参数是啥意思:
在这里插入图片描述
这张图显示了JMeter中线程组(Thread Group)的调度参数配置。以下是各个参数的详细解析:

参数解析

  1. This group will start [number] threads:
  • 设置为 100:表示这个线程组将启动100个虚拟用户(threads)。
  1. First, wait for [number] seconds:
  • 设置为 0:表示在启动任何线程之前,等待0秒。这意味着线程会立即开始执行。
  1. Then start [number] threads:
  • 设置为 0:表示在等待时间结束后,立即启动0个线程。这里设置为0,意味着不会立即启动任何线程。
  1. Next, add [number] threads every [number] seconds, using ramp-up [number] seconds:
  • 设置为 20 threads every 3 seconds, using ramp-up 3 seconds:
    • 表示每3秒增加20个线程,并且每个线程的启动间隔为3秒。
    • 例如,在第3秒时启动第一个线程,在第6秒时启动第二个线程,以此类推,直到所有20个线程都启动完毕。
  1. Then hold load for [number] seconds:
  • 设置为 6:表示在所有线程启动后,保持负载(即所有线程都在运行)6秒。
  1. Finally, stop [number] threads every [number] seconds:
  • 设置为 20 threads every 10 seconds:
  • 表示在保持负载6秒后,每10秒停止20个线程。
  • 例如,在第7秒时停止前20个线程,在第17秒时停止接下来的20个线程,以此类推,直到所有线程都停止。

总结

  • 初始阶段
  • 立即启动0个线程。
  • 每3秒增加20个线程,每个线程的启动间隔为3秒。
  • 负载保持阶段
  • 在所有线程启动后,保持负载6秒。
  • 停止阶段
  • 每10秒停止20个线程,直到所有线程都停止。

为了能够看到启动了梯度压测线程组的变化,我们也得添加一些监听器:

Response Times over Time

右击添加,Response Times over Time:
在这里插入图片描述
在这里插入图片描述这样我们在启动的时候,就会在这上面看到实际的情况,记得往线程组中添加请求:
在这里插入图片描述在这里插入图片描述

Active Threads Over time

我们还可以添加Active Threads Over time来查看线程的活动情况:
在这里插入图片描述在这里插入图片描述

聚合报告

从聚合报告可以看到性能测试过程中整体的数据变化:
在这里插入图片描述
在这里插入图片描述

指标说明
Samples发起的 HTTP 请求调用数
Average平均响应时间,单位为毫秒
Median请求调用响应时间的中间值,也就是 50% 请求调用的响应时间,单位为毫秒
90%Line90% 请求调用的响应时间,单位为毫秒
95%Line95% 请求调用的响应时间,单位为毫秒
99%Line99% 请求调用的响应时间,单位为毫秒
Min请求调用的最小响应时间,单位为毫秒
Max请求调用的最大响应时间,单位为毫秒
Error%调用失败的请求占比。调用失败一般指响应断言失败或者请求调用出错
ThroughputTPS/QPS,每秒处理的事务数
KB/sec每秒网络传输的流量大小,单位为 KB。这个指标是以网络传输的大小来衡量网络的吞吐量

测试报告

JMeter测试报告是⼀个全面而详细的文档,它提供了关于测试执行结果的详细信息,帮助用户全面评估系统的性能并进行性能优化。

生成性能测试报告的命令:

Jmeter -n -t 脚本文件 -l 日志文件 -e -o ⽬录
-n : 无图形化运⾏
-t : 被运行的脚本
-l : 将运行信息写入志文件,后缀为jtl的日志文件
-e : 生成测试报告
-o : 指定报告输出目录

在这里插入图片描述执行成功之后会有对应的报告文件:
在这里插入图片描述在这里插入图片描述

性能分析

通过三大指标来分析性能问题:

响应时间

定义:响应时间是指从客户端发出请求到接收到服务器响应的整个过程所需的时间。

瓶颈指示:如果响应时间超过了要求,这可能意味着系统已经到达了其处理能力的极限或存在其他性能瓶颈。

注意事项

  • 分析在多少线程的情况下发生了响应时间超标的情况。
  • 注意响应时间的变化趋势,以确定是否存在系统不稳定的问题。

响应时间变化的原因

  • 系统不稳定:系统有时快有时慢,可能是由于资源竞争、负载不均等因素导致。
  • 并发压力增大:随着并发用户的增加,响应时间可能会逐渐变长,表明系统在高负载下的性能下降。
错误率(可靠性)

定义:错误率衡量的是系统在高并发场景下能否正常处理业务请求的能力。通常要求达到极高的可靠性标准,如99.99%或更高。

错误率高的原因

  • 接口请求错误:API调用失败,可能是由于参数错误、网络问题等。
  • 服务器无法继续处理:当服务器达到其处理极限时,可能导致错误率上升。这可能是由于代码质量问题、内存泄漏或其他硬件资源限制。
  • 后端系统限流、熔断、降级:为了保护系统的稳定性,可能会对某些服务实施限流措施,或者在检测到异常时采取熔断和降级策略。

什么是熔断、降级?

  • 熔断:防止系统因某个服务的故障而整体崩溃。例如,在电商平台上用户支付时,若发现某支付渠道(如微信支付)失败率突增或超时严重,可以临时将该支付方式熔断,即停止使用这一渠道以保护系统的其余部分。
  • 降级:主动关闭一些非核心功能,确保核心功能的正常运行。例如,腾讯视频在出现问题时,用户名默认显示为“腾讯用户”,这是一种降级方式,使用兜底名称进行展示以保证基本服务的可用性。
吞吐量

定义:吞吐量指的是单位时间内系统能够处理的请求数量。一般而言,吞吐量越大,性能越好。

吞吐量变化规律

  • 波动很大:这代表系统性能不稳定,可能存在资源分配不合理等问题。
  • 慢慢变高,再趋于稳定:这种模式通常与并发量强相关。随着并发量从小到大逐渐增加,吞吐量也会相应增长,直到达到一个稳定的水平。
  • 慢慢变低,并发量也减少了:这可能是性能测试接近尾声,人为减少并发量的结果;但也可能是系统变得卡顿,响应时间变慢,从而导致单个线程发起的并发量减少。

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

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

相关文章

设计新的 Kibana 仪表板布局以支持可折叠部分等

作者:来自 Elastic Teresa Alvarez Soler, Hannah Mudge 及 Nathaniel Reese 在 Kibana 中构建可折叠仪表板部分需要彻底改造嵌入式系统并创建自定义布局引擎。这些更新改进了状态管理、层次结构和性能,同时为新的高级仪表板功能奠定了基础。 我们正在开…

用Python和Tkinter标准模块建立密码管理器

用Python和Tkinter标准模块建立密码管理器 创建一个简单的密码管理器应用程序,帮助用户存储和管理他们的密码。使用Python的tkinter模块来创建一个图形用户界面(GUI)。 本程序支持 添加、查看、搜索、复制、修改、删除 功能。 本程序使用 …

day1代码练习

输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身) #include <stdio.h>// 判断一个数是否为完美数的函数 int panduan(int n) {if (n < 2) {return 0; // 小于2的数不可能是完美数}int sum 1; // 因子和初始化为1&#xff08;因…

为什么redis会开小差?Redis 频繁异常的深度剖析与解决方案

文章目录 导读为什么redis会开小差&#xff1f;1.连接数过多2.bigkey3.慢命令操作4.内存策略不合理5.外部数据双写一致性6.保护机制未开启7. 数据集中过期8. CPU饱和9. 持久化阻塞10. 网络问题结论 导读 提起分布式缓存&#xff0c;想必大多数同学脑海中都会浮出redis这个名字…

C# Interlocked 类使用详解

总目录 前言 在多线程编程中&#xff0c;确保多个线程对共享资源的安全访问是一个关键挑战。C# 提供了多种同步机制来处理并发问题&#xff0c;其中 System.Threading.Interlocked 类提供了一种轻量级的方法来进行原子操作。它允许您执行一些常见的增量、减量、交换等操作&…

VS Code i18n国际化组件代码code显示中文配置 i18n ally

VUE项目做i18n国际化之后&#xff0c;代码中的中文都变成了code这时的代码就会显得非常难读&#xff0c;如果有一个插件能把code转换成中文显示就好了 vscode插件搜索“i18n ally” 在项目根文件夹下创建文件&#xff1a;.vscode/settings.json settings.json 内容如下 {"…

MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log

文章目录 一、前言1.1 MySQL体系结构1.2 MySQL日志分类1.3 其他几种日志1.3.1 查询日志1.3.2 慢查询日志1.3.3 错误日志 二、bin log 二进制日志2.1 bin log简介2.2 binlog日志格式2.3 日志删除2.4 写入/刷盘机制 三、undo log 回滚日志3.1 undo log简介3.2 隐藏字段 —— 事务…

一文速通stack和queue的理解与使用

CSTL之stack和queue 1.stack1.1.stack的基本概念1.2.stack的接口 2.queue2.1.queue的基本概念2.2.queue的接口 3.priority_queue3.1.priority_queue的基本概念3.2.priority_queue的接口3.3.仿函数 4.容器适配器5.deque5.1.deque的简单了解5.2.deque的优缺点 &#x1f31f;&…

关于CAN(FD)转以太网详细介绍

一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置和 Web 网页配置。 两路…

orbbec 奥比中光相机单目及多目调用方式python代码

这篇文章会介绍使用orbbec相机的一些常用代码梯子 orbbec 奥比中光Astra相机单目及多目调用方式编译sdk调用单相机调用多相机orbbec 奥比中光Astra相机单目及多目调用方式 Orbbec相机是一个专注于深度感知和计算机视觉应用的设备,通常用于3D扫描、手势识别、增强现实(AR)以及…

力扣hot100-->滑动窗口、贪心

你好呀&#xff0c;欢迎来到 Dong雨 的技术小栈 &#x1f331; 在这里&#xff0c;我们一同探索代码的奥秘&#xff0c;感受技术的魅力 ✨。 &#x1f449; 我的小世界&#xff1a;Dong雨 &#x1f4cc; 分享我的学习旅程 &#x1f6e0;️ 提供贴心的实用工具 &#x1f4a1; 记…

PBFT算法

在我的博客中对于RAFT算法也有详细的介绍&#xff0c;raft算法包含三种角色&#xff0c;分别是&#xff1a;跟随者&#xff08; follower &#xff09;&#xff0c;候选人&#xff08;candidate &#xff09;和领导者&#xff08; leader &#xff09;。集群中的一个节点在某一…

跨境电商代购系统独立站深度分享

在全球化日益加深的今天&#xff0c;跨境电商代购系统独立站作为一种新兴的电子商务模式&#xff0c;正逐渐成为连接全球消费者与优质商品的重要桥梁。本文将详细介绍跨境电商代购系统独立站的基本功能以及技术实现的重难点&#xff0c;以期为相关从业者提供一些有价值的参考和…

携程旅行 登录分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 所有加密流程基本一样就说…

西藏酥油茶:高原上的醇香温暖

西藏酥油茶:高原上的醇香温暖 在西藏高原,有一种饮品,它不仅滋养了一代又一代的藏民,还承载着丰富的文化与历史,它就是西藏酥油茶。酥油茶,藏语称为“恰苏玛”,意为搅动的茶,是藏族人民日常生活中不可或缺的一部分,更是待客、祭祀等活动中的重要礼仪物品。 历史与文化渊源 酥…

刷题总结 回溯算法

为了方便复习并且在把算法忘掉的时候能尽量快速的捡起来 刷完回溯算法这里需要做个总结 回溯算法的适用范围 回溯算法是深度优先搜索&#xff08;DFS&#xff09;的一种特定应用&#xff0c;在DFS的基础上引入了约束检查和回退机制。 相比于普通的DFS&#xff0c;回溯法的优…

Antd React Form使用Radio嵌套多个Select和Input的处理

使用Antd React Form使用Radio会遇到嵌套多个Select和Input的处理&#xff0c;需要多层嵌套和处理默认事件和冒泡&#xff0c;具体实现过程直接上代码。 实现效果布局如下图 代码 <Formname"basic"form{form}labelWrap{...formItemLayoutSpan(5, 19)}onFinish{on…

Linux(Centos、Ubuntu) 系统安装jenkins服务

该文章手把手演示在Linux系统下如何安装jenkins服务、并自定义jenkins数据文件位置、以及jenkins如何设置国内镜像源加速&#xff0c;解决插件下载失败问题 安装方式&#xff1a;war包安装 阿里云提供的war下载源地址&#xff1a;https://mirrors.aliyun.com/jenkins/war/?s…

【基于无线电的数据通信链】Link 11 仿真测试

〇、废话 Link 11 仿真测试 涉及多个方面&#xff0c;包括信号仿真、协议模拟、数据链路层的仿真以及网络性能评估等。Link 11 是一种基于 HF&#xff08;高频&#xff09; 或 UHF&#xff08;超高频&#xff09; 波段的无线通信协议&#xff0c;主要用于军事通信系统中。为了…

VScode 开发 Springboot 程序

1. 通过maven创建springboot程序 输入 mvn archetype:generate 选择模板&#xff0c;一般默认选择为第 7 种方式&#xff1b; 选择之后&#xff0c;一般要你填写如下内容&#xff1a; groupId: 组织名称&#xff1b;artifactId: 项目名称&#xff1b;version: 版本&#xff0…