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

什么是熔断、降级?

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

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

吞吐量变化规律

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

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

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

相关文章

利用 SAM2 模型探测卫星图像中的农田边界

将 Segment Anything Model Version 2 应用于卫星图像以检测和导出农业地区田地边界的分步教程 🌟 简介 手动绘制田地边界是最耗时的任务之一,其准确性取决于绘制者的表现。然而,精确的边界检测在很多领域都有应用。例如,假设您…

初步搭建并使用Scrapy框架

目录 目标 版本 实战 搭建框架 获取图片链接、书名、价格 通过管道下载数据 通过多条管道下载数据 下载多页数据 目标 掌握Scrapy框架的搭建及使用,本文以爬取当当网魔幻小说为案例做演示。 版本 Scrapy 2.12.0 实战 搭建框架 第一步:在D:\pyt…

人脸识别打卡系统--基于QT(附源码)

逃离舒适区 项目源代码放在我的仓库中,有需要自取 项目地址 https://gitcode.com/hujiahangdewa/Face_recognition.git 文章目录 一、项目结构分析二、服务器的搭建三、客户端的搭建四、人脸识别库的申请五、基于人脸识别库的识别判断六、QT人脸识别----调用百度ai…

微信小程序中常见的 跳转方式 及其特点的表格总结(wx.navigateTo 适合需要返回上一页的场景)

文章目录 详细说明总结wx.navigateTo 的特点为什么 wx.navigateTo 最常用?其他跳转方式的使用频率总结 以下是微信小程序中常见的跳转方式及其特点的表格总结: 跳转方式API 方法特点适用场景wx.navigateTowx.navigateTo({ url: 路径 })保留当前页面&…

设计模式的艺术-享元模式

结构性模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解享元模式 当一个软件系统在运行时产生的对象数量太多,将导致运行代价过高,带来系统性能下降等问题。 在享元模式中,存储这些共享实例对象的地方称为享元池&…

20250122-正则表达式

1. 正则标记 表示一位字符:\\ 表示指定的一位字符:x 表示任意的一位字符:. 表示任意一位数字:\d 表示任意一位非数字:\D 表示任意一个字母:[a-zA-Z](大写或小写) 表示任意一个…

OpenEuler学习笔记(八):安装OpenEuler

在VMware Workstation中安装OpenEuler 准备工作 下载并安装VMware Workstation虚拟机软件。前往OpenEuler官网下载OpenEuler系统镜像文件。 创建虚拟机 打开VMware Workstation,点击“创建新的虚拟机”,选择“自定义”,点击“下一步”。选择…

“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““

主题与背景 本文主要介绍了如何在R语言中使用predict函数对已拟合的Cox比例风险模型进行新数据的预测和推理。Cox模型是一种常用的生存分析方法,用于评估多个因素对事件发生时间的影响。文章通过具体的代码示例展示了如何使用predict函数的不同参数来获取生存概率和…

Java导出通过Word模板导出docx文件并通过QQ邮箱发送

一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器:总告警次数:{{ServerTotal}} 服务器IP:{{IPA}},总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}},总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…

使用github提交Pull Request的完整流程

文章目录 1.Fork仓库2. git clone 仓库在本地3.对项目进行修改开发4.上传项目到远程仓库操作补充1. git add .2. git commit -m "提交信息"3. git pull4. git push总结完整工作流程示例 5.将更新的项目pull Request给原来的仓库主人 当多人进行项目的开发的时候&…

浅谈Unity中Canvas的三种渲染模式

Overview UGUI通过 Canvas 组件渲染和管理UI元素。Canvas 是 UI 元素的容器,它决定了 UI 元素的渲染方式以及它们在屏幕上的显示效果。Canvas 有三种主要的渲染模式,每种模式有不同的用途和特点。本文将介绍这三种渲染模式 1. Screen Space - Overlay 模…

Kafak 单例生产者实现-C#操作

前面写了一篇入门操作的文章,因为工作需要,简单修改了下如何实现单例生产者。 Kafka入门-C#操作_c# kafka-CSDN博客文章浏览阅读1.6k次,点赞20次,收藏9次。2).报错:“kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state…

第五天 Labview数据记录(5.1 INI配置文件读写)

5.1 INI配置文件读写 INI配置文件是一种简单的文本文件,通常用于存储软件的配置信息。它具有以下作用: 存储软件配置参数方便软件的维护和更新提高软件的灵活性和可扩展性便于用户修改和共享配置 5.1.1 前面板 1)新建项目SaveData_Exampl…

自动化01

测试用例的万能公式:功能测试界面测试性能测试易用性测试安全性测试兼容性测试 自动化的主要目的就是用来进行回归测试 新产品--第一个版本 (具备丰富的功能),将产品的整体进行测试,人工创造一个自动化测试用例,在n个版本的时候…

ElasticSearch(十一)— Elasticsearch中的SQL语句

一、总概 Elasticsearch 在 Basic 授权中支持以 SQL 语句的形式检索文档,SQL 语句在执行时会被翻译为 DSL 执行。从语法的角度来看,Elastisearch 中的 SQL 语句与RDBMS 中的 SQL 语句基本一致, 所以对于有数据库编程基础的人来说大大降低了使…

详解Redis的Zset类型及相关命令

目录 Zset简介 ZADD ZCARD ZCOUNT ZRANGE ZREVRANGE ZRANGEBYSCORE ZPOPMAX BZPOPMAX ZPOPMIN BZPOPMIN ZRANK ZREVRANK ZSCORE ZREM ZREMRANGEBYRANK ZREMRANGEBYSCORE ZINCRBY ZINTERSTORE 内部编码 应用场景 Zset简介 有序集合相对于字符串、列表、哈希…

【技术洞察】2024科技绘卷:浪潮、突破、未来

涌动与突破 2024年,科技的浪潮汹涌澎湃,人工智能、量子计算、脑机接口等前沿技术如同璀璨星辰,方便了大家的日常生活,也照亮了人类未来的道路。这一年,科技的突破与创新不断刷新着人们对未来的想象。那么回顾2024年的科…

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明:用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。 结果: 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据,减少数据库查询…

09_异步加载_单例模式_常量类配置_不可销毁

1.首先在 资源加载服务层ResSvc.cs中添加 自定义异步加载函数 using UnityEngine; using UnityEngine.SceneManagement; //异步加载 命名空间 //功能 : 资源加载服务 public class ResSvc : MonoBehaviour{public void InitSvc(){Debug.Log("Init ResSvc...");}//自定…

【Redis】事务

前言: 对比MySQL事务:【MySQL篇】事务的认识以及四大特性-CSDN博客 弱化的原子性: redis 没有 "回滚机制". 只能做到这些操作 "批量执行". 不能做到 "一个失败就恢复到初始状态". 不保证一致性: 不涉及 "约束". 也没有…