当前位置: 首页 > news >正文

软件测试 —— jmeter(2)

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

什么是熔断、降级?

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

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

吞吐量变化规律

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

相关文章:

软件测试 —— jmeter(2)

软件测试 —— jmeter(2) HTTP默认请求头(元件)元件作用域和取样器作用域HTTP Cookie管理器同步定时器jmeter插件梯度压测线程组(Stepping Thread Group)参数解析总结 Response Times over TimeActive Thre…...

为什么LabVIEW适合软硬件结合的项目?

LabVIEW是一种基于图形化编程的开发平台,广泛应用于软硬件结合的项目中。其强大的硬件接口支持、实时数据采集能力、并行处理能力和直观的用户界面,使得它成为工业控制、仪器仪表、自动化测试等领域中软硬件系统集成的理想选择。LabVIEW的设计哲学强调模…...

【机器学习】自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

一、使用tensorflow框架实现逻辑回归 1. 数据部分: 首先自定义了一个简单的数据集,特征 X 是 100 个随机样本,每个样本一个特征,目标值 y 基于线性关系并添加了噪声。tensorflow框架不需要numpy 数组转换为相应的张量&#xff0…...

.NET Core缓存

目录 缓存的概念 客户端响应缓存 cache-control 服务器端响应缓存 内存缓存(In-memory cache) 用法 GetOrCreateAsync 缓存过期时间策略 缓存的过期时间 解决方法: 两种过期时间策略: 绝对过期时间 滑动过期时间 两…...

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于GA-CNN-LST…...

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了,需要本地生成一个密钥,配置到gihub中才能使用 2 步骤 (1)首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…...

《企业应用架构模式》笔记

领域逻辑 表模块和数据集一起工作-> 先查询出一个记录集,再根据数据集生成一个(如合同)对象,然后调用合同对象的方法。 这看起来很想service查询出一个对象,但调用的是对象的方法,这看起来像是充血模型…...

深入理解 C 语言函数指针的高级用法:(void (*) (void *)) _IO_funlockfile

深入理解 C 语言函数指针的高级用法 函数指针是 C 语言中极具威力的特性,广泛用于实现回调、动态函数调用以及灵活的程序设计。然而,复杂的函数指针声明常常让即使是有经验的开发者也感到困惑。本文将从函数指针的基本概念出发,逐步解析复杂…...

【JavaSE】图书管理系统

前言:为了巩固之前学习的java知识点,我们用之前学习的java知识点(方法,数组,类和对象,封装,继承,多态,抽象类,接口)来实现一个简单的图书管理系统…...

【C++数论】880. 索引处的解码字符串|2010

本文涉及知识点 数论:质数、最大公约数、菲蜀定理 LeetCode880. 索引处的解码字符串 给定一个编码字符串 s 。请你找出 解码字符串 并将其写入磁带。解码时,从编码字符串中 每次读取一个字符 ,并采取以下步骤: 如果所读的字符是…...

C++/stack_queue

目录 1.stack 1.1stack的介绍 1.2stack的使用 练习题: 1.3stack的模拟实现 2.queue的介绍和使用 2.1queue的介绍 2.2queue的使用 2.3queue的模拟实现 3.priority_queue的介绍和使用 3.1priority_queue的介绍 3.2priority_queue的使用 欢迎 1.stack 1.1stack…...

浅谈APP之历史股票通过echarts绘图

浅谈APP之历史股票通过echarts绘图 需求描述 今天我们需要做一个简单的历史股票收盘价格通过echarts进行绘图,效果如下: 业务实现 代码框架 代码框架如下: . 依赖包下载 我们通过网站下载自己需要的涉及的图标,勾选之后进…...

Ubuntu 20.04 x64下 编译安装ffmpeg

试验的ffmpeg版本 4.1.3 本文使用的config命令 ./configure --prefixhost --enable-shared --disable-static --disable-doc --enable-postproc --enable-gpl --enable-swscale --enable-nonfree --enable-libfdk-aac --enable-decoderh264 --enable-libx265 --enable-libx…...

【橘子Kibana】Kibana的分析能力Analytics简易分析

一、kibana是啥,能干嘛 我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。 当我们进入kibana的主页的时候你可以看到这样的布局。…...

【STM32】-TTP223B触摸开关

前言 本文章旨在记录博主STM32的学习经验,我自身也在不断的学习当中,如果文章有写的不对的地方,欢迎各位大佬批评指正。 准备工作 今天这篇文章介绍的是触摸开关这一外围硬件。 ST-link调试器STM32最小系统板单路TTP223B触摸传感器模块LE…...

三星手机人脸识别解锁需要点击一下电源键,能够不用点击直接解锁吗

三星手机的人脸识别解锁功能默认需要滑动或点击屏幕来解锁。这是为了增强安全性,防止误解锁的情况。如果希望在检测到人脸后直接进入主界面,可以通过以下设置调整: 打开设置: 进入三星手机的【设置】应用。 进入生物识别和安全&a…...

Frida使用指南(三)- Frida-Native-Hook

1.Process、Module、Memory基础 1.Process Process 对象代表当前被Hook的进程,能获取进程的信息,枚举模块,枚举范围等 2.Module Module 对象代表一个加载到进程的模块(例如,在 Windows 上的 DLL,或在 Linux/Android 上的 .so 文件), 能查询模块的信息,如模块的基址、名…...

网络安全 | F5-Attack Signatures-Set详解

关注:CodingTechWork 创建和分配攻击签名集 可以通过两种方式创建攻击签名集:使用过滤器或手动选择要包含的签名。  基于过滤器的签名集仅基于在签名过滤器中定义的标准。基于过滤器的签名集的优点在于,可以专注于定义用户感兴趣的攻击签名…...

004 mybatis基础应用之全局配置文件

文章目录 配置内容properties标签typeAlias标签mappers标签 配置内容 SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandler…...

【岛屿个数——BFS / DFS,“外海”】

题目 推荐阅读 AcWing 4959. 岛屿个数&#xff08;两种解法&#xff0c;通俗解释&#xff09; - AcWing 1.岛屿个数 - 蓝桥云课 (lanqiao.cn) 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second int dx4[4] {-1, 0, 1, 0}, dy4[4] …...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...