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

性能工具之 JMeter 常用组件介绍(二)

文章目录

  • 一、Thread Group
  • 二、断言组件
    • 1、Response Assertion:响应断言
    • 2、Response Assertion:响应断言
    • 3、Duration Assertion:响应时间断言
    • 4.、JSON Assertion:json断言

一、Thread Group

线程组也叫用户组,是性能测试时的虚拟用户资源池,该组件可以用来设置运行时间和虚拟并发数。

具体组件结构如下:在这里插入图片描述

参数说明:

  • Name:线程组的名称,可以随意修改

  • Comments:备注信息,记录一些参数设置的原因和策略可填可不填

  • Action to be taken after a Sampler error:线程内的采样器失败后,接下来采取的动作:

    • Continue:继续执行接下来的操作
    • Start Next Thread Loop:执行下一个线程循环
    • Stop Thread:退出该线程,不在执行该线程的任何操作
    • Stop Test:等待该线程的采样结束后,结束整个测试,不会立即停止
    • Stop Test Now:立即停止整个测试
  • Thread Properites:线程属性

    • Number of Threads(users):线程数,也就是一共要启动多少线程用来并发执行
    • Ramp-uo Period(in seconds):多长时间将上一步设置的线程数启动完毕。设置不同的值可以验证在不同并发的情况下验证系统的性能
    • Loop Count:设置sampler循环的次数,勾上Lnfinte后就会死循环一直执行
    • Specify Thread lifeTime:调度器,日程表。选上之后才能设置执行时间

操作说明:

  • Loop Count: 如果勾选就不断重复
    在这里插入图片描述

不会停止,除非自己停止服务;
在这里插入图片描述
按次数执行:
在这里插入图片描述

View Results Tree 结果:
在这里插入图片描述
按时间执行:
在这里插入图片描述

View Results Tree:
在这里插入图片描述

二、断言组件

在做性能测试中判断是不可缺少的组件,jmeter叫断言(Assertion),它的作用和loadrunner中的检查点类似;用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。
jmeter中断言的方式也有很多,我们只介绍以下最常用的几种。

以下是Jmeter中断言截图,其实在工作中只有掌握常见的几种满足工作,如果把断言全部学习,也可以参考官方文档或者自己把每个断言尝试下。
在这里插入图片描述

1、Response Assertion:响应断言

操作步骤:
在这里插入图片描述
添加断言内容:
在这里插入图片描述

作用:用来做检查点,对sampler做额外的检查,比如判断响应数据中是否存在指定的内容,也可以对请求数据做断言。

参数说明:

  • Apply to:指定断言的作用范围
  • Main sample and sub-sample:作用于主main sample和子sub-sample
  • Main sample only:只作用于main sample
  • Sub-samples only:只作用于sub-sample
  • JMeter Variable name to use:作用于JMeter变量

注意:

  • 1.大多数情况下,可只勾选“main sample only”,因为一般情况下,发起一个请求,实际就只有一个请求。但是在某些情况下,发起一个请求时,会触发多个服务器请求,这时候就有main sample和sub-sample之分,类似ajax请求,另外,如果发起重定向请求,并且勾选“跟随重定向”, 则把重定向后的请求视为main-sample。
  • 2.如果sub-sample断言失败,但main sample断言成功,那么main sample也被设置为失败状态。如果作用域JMeter变量,且该变量关联main sample,那么如果断言失败,则main sample也被设置为失败(If the JMeter variable option is used, it is assumed to relate to the main sample, and any failure will be applied to the main sample only)。
  • 3.如果执行完每个sampler的所有断言,变量JMeterThread.last_sample_ok会被设置为true或false。

Field to test:

  • Text Response:断言服务器返回的响应文本,比如body,不包含HTTP headers
  • Response Code :断言响应码, 比如 200
  • Response Message:断言响应码的具体信息,比如 OK
  • Response Headers:断言响应头,包括Set-Cookie 头,如果有的话
  • Resquest Headers:断言请求头
  • URL Sampled:
  • Document(text) -通过Apache Tika追踪的各种各种类型文档的文本
  • Ignore Status:指示JMeter设置sampler status的初始状态为success。sample status是否成功,由
  • Response status和断言结果决定,当选中Ignore Status时,Response status被强制设置为success,不执行进一步的断言判断。仅第一次断言时使用。
  • Resquest Data:断言请求数据
  • Pattern Matching Rules:模式匹配规则
    • Contains:如果文本中包含指定的正则表达式则为true
    • Matches:如果整个文本匹配指定的正则表达式则为true
    • Equals:如果整个文本等于给定的字符串(大小写敏感),则为true
    • Substring:如果整个文本包含给定的字符串(大小写敏感),则为true
    • Not:表示非,不匹配给定的模式,可以和前4个配合使用
    • Or:表示或,和前4个配合使用,有一个为true则为true
      在这里插入图片描述
      注意:
  • Contains,Matches:将字符串当做正则表达式处理
  • Equals,Substring:纯字符串,不会解析成正则表达式,大小写敏感

示例:用Substring模式和contains模式分别匹配:.*
Substring模式,将.*当做文本来匹配,所以会匹配失败
在这里插入图片描述
结果:
在这里插入图片描述

Contains模式:
在这里插入图片描述

结果:
在这里插入图片描述

  • Patterns to Test: 填写需要测试的模式列表, 每个模式都单独测试,如果某个模式失败了,不会往下检查剩余的模式。添加一个断言,多个测试模式(通过重复点击面板的添加按钮来添加多个测试模式),和多个断言,每个断言一个模式是一样的。
    在这里插入图片描述
    在这里插入图片描述
    演示:
    在这里插入图片描述

提示成功:
在这里插入图片描述
断言失败:
在这里插入图片描述

结果:
在这里插入图片描述

2、Response Assertion:响应断言

添加正在【Regular Expression Extractor】
在这里插入图片描述

打开结果查看树【View Results Tree】

在这里插入图片描述

打开后置处理器组件中的【Regular Expression Extractor】:
在这里插入图片描述

输入内容:
在这里插入图片描述

说明:

  • (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
  • (2)正则表达式:
    • ():括起来的部分就是要提取的。
    • .:匹配任何字符串。
    • +:一次或多次。
    • ?:抑制贪婪,在找到第一个匹配项后停止。
  • (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$ 表示解析到的第1个值
  • (4)匹配数字:有多个匹配值时,0代表随机取值;正数n代表取第n个匹配的值;负数代表将变量名和数字拼接,比如如果写-1的话,那么拼接后的变量就是title_1。通常情况下填0
  • (5)缺省值:如果参数没有取得到值,那默认给一个值让它取。

添加调试
在这里插入图片描述

结果查看树验证
在这里插入图片描述

3、Duration Assertion:响应时间断言

设置服务器响应的最大时间,如果超过设定的值则认为执行失败,组件如下:
在这里插入图片描述

结果显示:
在这里插入图片描述

参数说明:

  • Apply to:适用范围,也就是断言范围
  • Main sample only:只作用在主sample中
  • Sub-sample only:只作用在子sample中
  • Main sample and Sub-sample only:主sample和子sample中都起作用
  • Duration in milliseconds:响应允许的最大时间,单位为毫秒,超过此值即测试失败。

演示:
设置10ms
在这里插入图片描述

运行结果:
在这里插入图片描述
设置1000ms
在这里插入图片描述

结果显示:
在这里插入图片描述

4.、JSON Assertion:json断言

在这里插入图片描述
具体显示:

在这里插入图片描述
说明:

作用:对响应的json数据断言,查找指定的内容

参数说明:

  • Assert JSON Path exists:符合json path规则的断言表达式,json断言的规则就是json path,和xpath类似也是有类似根和子节点的概念,对比如下:
  • 在这里插入图片描述

json断言的表达式可以使用点运算符也可以使用括号;

  • Additionally assert value:勾选了此项之和才能在Excepted value中填写断言值
  • Match as regular expression:以正则的方式匹配,默认勾选
  • Excepted value:断言值
  • Excepted null:断言空值,断言的数据为null的话可以勾选此项,或者在Excepted value中直接写null
  • Invert assertion (will fail if above condition met):取反,也就是不包含断言表达式中的内容才成功

待演示数据:
在这里插入图片描述

增加json断言【正确】
在这里插入图片描述

结果:
在这里插入图片描述

断言失败:
在这里插入图片描述

验证结果:
在这里插入图片描述

相关文章:

性能工具之 JMeter 常用组件介绍(二)

文章目录 一、Thread Group二、断言组件1、Response Assertion:响应断言2、Response Assertion:响应断言3、Duration Assertion:响应时间断言4.、JSON Assertion:json断言 一、Thread Group 线程组也叫用户组,是性能测…...

Bev 车道标注方案及复杂车道线解决

文章目录 1. 数据采集方案1.1 传感器方案1.2 数据同步2. 标注方案2.1 标注注意项2.2 4d 标注(时序)2.2.1 4d标签制作2.2.2 时序融合的作用2.2.2.1 时序融合方式2.2.2.2 时序融合难点2.2.2.2 时序实际应用情况3. 复杂车道线解决3.1 split 和merge车道线的解决3.2 大曲率或U形车道…...

vue 将echart 下载为base64图片

1 echart是页面的子组件, 2 页面有多个echart 3 将多个echart下载为base64图片 // 子组件 echart,要保存echartconst chart this.$echarts.init(this.$refs.chart, light) this.chartData chart; //保存数据,供父组件alarmReport调用(th…...

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际…...

白杨SEO:小红书标题怎么写?小红书怎么推广引流到微信?小红书违规注销不了怎么办?33个小红书运营常见问题解答【干货】

前言:这是白杨SEO公号原创第533篇。为什么想到写这个?因为很多白杨SEO朋友在做小红书遇到这样或那样的问题来问我,所以我把一些问得较多的常见热门问题整理写出来,有需要的可以随时查看,收藏与分享。图片在公众号白杨S…...

Linux压测

目录 CPU压测 内存压测 本文主要是编写了shell脚本,对Linux系统进行CPU和内存的压测。 CPU压测 [rootlocalhost ~]# cat cpu_stress_test.sh #!/bin/bash # 定义压测CPU的函数 function test_cpu() { # 初始化时间变量 local time # 获取参数 while geto…...

Linux如何远程连接服务器?

远程连接服务器是当代计算机技术中一个非常重要的功能,在各种领域都有广泛的应用。本文将重点介绍如何使用Linux系统进行远程连接服务器操作。 SSH协议 远程连接服务器最常用的方式是使用SSH(Secure Shell)协议。SSH是一种网络协议&#xff…...

Java 应用部署与优化:简单介绍Java应用的部署策略,并讲解一些常用的Java应用性能优化技巧

I. Java 应用部署 A. 容器化部署 Docker 的简介及其优势 Docker是一种开源的容器化技术,它可以将应用及其依赖打包在一起作为一个可运行的独立单元进行运行。Docker的主要优势包括以下几点: 便携性:无论在哪种环境下,只要安装了Docker,就可以运行Docker容器。 一致性:…...

cudart link错误自动修复脚本

问题 在conda安装cuda环境时 mamba install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia -y mamba install nvidia/label/cuda-12.1.0::cuda安装的envs/xxx/lib/libcudart.so 会link到错的 如果手动修复太复杂,我写了一个脚本自动修复…...

个人笔记-随意记录

常见问题? 1.linux重启服务 端口被占用如何解决? 查看某个端口被占用的进程 netstat -tulnp | grep :23454 强制杀死进程 kill -9 1776 重启服务即可...

Linux:confluence8.5.9的部署(下载+安装+破ji)离线部署全流程

0.环境 Confluence也是比较吃运存了,我建议运行运存给到4g或者4g以上就可以了,核数可以给到1核或以上 我部署在centos7.9操作系统上,ip地址为:192.168.6.1,yum仓库使用的是自己的镜像文件,本章所有使用到…...

JavaDS-学习数据结构之如果从零开始手搓顺序表,顺带学习自定义异常怎么用!

前言 笔者开始学习数据结构了,虽然笔者已经会用了,不管是C 中的stl亦或是Java 中的集合,为了算法比赛多少都突击过,但只知其然而不知其所以然,还是会限制发展的,因此,笔者写下这篇博客.内容是手搓一个顺序表.顺带加一点异常的使用,大伙看个乐子就好了.有错误直接私信喷我就好了…...

汽车IVI中控开发入门及进阶(二十三):i.MX8

前言: IVI市场的复杂性急剧增加,而TimeToMarket在几代产品中从5年减少到2-3年。Tier1正在接近开放系统的模型(用户可以安装应用程序),从专有/关闭源代码到标准接口/开放源代码,从软件堆栈对系统体系结构/应用层/系统验证和鉴定的完全所有权,越来越依赖第三方中间件和平…...

HarmonyOS(29)onMeasureSize和PlaceChildren (View的测量和布局)

onMeasureSize和PlaceChildren onMeasureSize和PlaceChildren 说明官方使用示例参考资料 onMeasureSize和PlaceChildren 说明 在Android开发中View的测量onMeasure和布局onLayout是自定义组件必备的两个方法,HarmonyOS对自定义布局也提供了两个方法: on…...

如何管理和维护组件库?

管理和维护组件库是一个关键的任务,因为它直接关系到产品的稳定性和功能的实现。以下是一些有效的方法来管理和维护组件库: 创建清晰的命名和文件结构:为每个组件分配一个有意义的名称,并根据功能和类型进行有层次的分类。确保文件…...

使用Python和wxPython将PNG文件转换为JPEG文件

简介: 在图像处理中,有时候我们需要将PNG格式的图像文件转换为JPEG格式。本篇博客将介绍如何使用Python编程语言和wxPython图形用户界面库,以及Pillow图像处理库来实现这一转换过程。通过本文的指导,您将学习如何快速将指定文件夹…...

spark的简单学习二

一 spark sql基础 1.1 Dataframe 1.介绍: DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表 格,除了数据以外,还掌握数据的结构信息,即schema。同时,与Hive类似,DataFrame也支 持…...

测试文章27-这是一篇测试文章请忽略

这是一篇测试文章请忽略 这是测试的文字,如有打扰请谅解。稍后测试完毕会删除 ‍ ‍ 测试代码块 ‍ public static void main(String[] args){System.out.println("Hello, World!"); } aaa...

卡方分布和 Zipf 分布模拟及 Seaborn 可视化教程

卡方分布 简介 卡方分布是一种连续概率分布,常用于统计学中进行假设检验。它描述了在独立抽样中,每个样本的平方偏差之和的分布。卡方分布的形状由其自由度 (df) 参数决定,自由度越大,分布越平缓。 参数 卡方分布用两个参数来…...

音视频开发13 FFmpeg 音频 相关格式分析 -- AAC ADTS格式分析

这一节,我们学习常用的音频的格式 AAC,重点是掌握 AAC的传输格式 ADTS 头部的信息,目的是 : 当音频数据有问题的时候,如果是AAC的编码,在分析 头部信息的时候能够根据头部信息 判断问题是否出现在 头部。 A…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...