性能工具之 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断言【正确】
在这里插入图片描述

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【linux根分区扩容】

前言: 今天在安装软件的时候发现我的linux的根分区空间不足了,在网上搜索哈资料解决了。 解决根分区空间不足的问题方法: 第一:用lsblk命令查看 发现还有一些空间不在了。 第二:安装扩容工具: yum inst…

react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项目

文章目录 react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项目背景Vite 和 (Create React App) CRAVite?Vite 是否支持 TypeScript? 用Vite创建react项目参考 react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项…

SpringBoot3依赖管理,自动配置

文章目录 1. 项目新建2. 相关pom依赖3. 依赖管理机制导入 starter 所有相关依赖都会导入进来为什么版本号都不用写?如何自定义版本号第三方的jar包 4. 自动配置机制5. 核心注解 1. 项目新建 直接建Maven项目通过官方提供的Spring Initializr项目创建 2. 相关pom依…

什么是电风扇行情?

“电风扇行情” 是一个金融术语,用于描述证券市场中价格上下波动频繁、幅度较大,但总体趋势不明显的市场状况。   其名称来源于电风扇的扇叶在旋转时,风向不断变化的特征,形象地比喻了市场价格频繁变动但没有明确方向的情景。 …

桥田磁力换模系统|实现模具的自动化快速切换

作为橡塑材料包装及模具专业展会, 历时3天的广州橡塑展在广交会展中心圆满落幕。本次展会桥田智能携桥田快换盘、桥田工业连接器、桥田抓取系统以及新产品桥田MMC磁力换模系统四大产品系列亮相。同时利用动态演示、静态展示以及协作机器人互动等方式,多角度展示了桥…

两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析-文献精读20

Characterization of two O-methyltransferases involved in the biosynthesis of O-methylated catechins in tea plant 两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析 茶树三维基因组-文献精读19 比较转录组分析揭示了116种山茶属(Camellia)植物的深层系统…

大模型Chain-of-Thought(CoT)与Agent基础知识与介绍

大模型Chain-of-Thought(CoT)与Agent基础知识与介绍 参考文献:Exploring Equation as a Better Intermediate Meaning Representation for Numerical Reasoning of Large Language Models 仓库:https://github.com/zirui-HIT/Br…

基础篇04——多表查询

多表关系 一对多 多对多 多对多是通过中间表实现的 -- 创建学生表 create table student (id int auto_increment primary key comment ID,name varchar(10) comment 姓名,no varchar(3) comment 学号 ) comment 学生表;insert into student values (null, 黛绮丝, 001),(…

计算机基础(2)——冯诺依曼体系结构

💗计算机基础系列文章💗 👉🍀计算机基础(1)——计算机的发展史🍀👉🍀计算机基础(2)——冯诺依曼体系结构🍀👉&#x1f34…

LeetCode-day02-3067. 在带权树网络中统计可连接服务器对数目

LeetCode-day02-3067. 在带权树网络中统计可连接服务器对数目 题目描述示例示例1:示例2: 思路代码 题目描述 给你一棵无根带权树,树中总共有 n 个节点,分别表示 n 个服务器,服务器从 0 到 n - 1 编号。同时给你一个数组 edges &a…

11 - 员工奖金(高频 SQL 50 题基础版)

11- 员工奖金 -- join和left join的区别 -- 如果是join则右侧的数据有的就插,没的就啥也不干,交白卷,也不留null -- 但是left join让右侧数据在没有对应数据时补上了null select e.name,b.bonus from Employee e left join bonus b on e.empI…

【设计模式】结构型-组合模式

前言 在软件开发中,设计模式是一种被广泛应用的解决问题的方法论。其中,结构性设计模式是一类特别重要的模式,它们用于处理类或对象之间的组合关系,其中之一就是组合模式。组合模式允许客户端统一对待单个对象和对象的组合&#…

新手小白怎么学习接口自动化测试?

接口自动化测试是一种重要的测试技术,对于新手小白来说,学习这个技术需要一定的时间和耐心。在本文中,我将从零开始,详细而规范地介绍如何学习接口自动化测试。 1. 接口自动化测试的基础知识 在开始学习接口自动化测试之前&…

【教学类-13-05】20240604《数字色块图-5*7*8-A4横板-横切》中4班

背景需求: 【教学类-13-04】20230404《数字色块图判断密码是否正确-5*7*8-A4横板-横切》(中班主题《我爱我家》)_图案密码色块-CSDN博客文章浏览阅读530次。【教学类-13-04】20230404《数字色块图判断密码是否正确-5*7*8-A4横板-横切》(中班主…

270 基于matlab的模糊自适应PID控制

基于matlab的模糊自适应PID控制,具有10页报告。传统PID在对象变化时,控制器的参数难以自动调整。将模糊控制与PID控制结合,利用模糊推理方法实现对PID参数的在线自整定。使控制器具有较好的自适应性。使用MATLAB对系统进行仿真,结…

Python采集数据处理:利用Pandas进行组排序和筛选

概述 在现代数据处理和分析中,网络爬虫技术变得越来越重要。通过网络爬虫,我们可以自动化地从网页上收集大量的数据。然而,如何高效地处理和筛选这些数据是一个关键问题。本文将介绍如何使用Python的Pandas库对采集到的数据进行组排序和筛选…

安徽某高校数据挖掘作业4-5 (与一些碎碎念)

1. 编写程序求函数、、的极限。 解答: import sympy as sp# 定义符号变量 x x sp.symbols(x)# 定义函数 f1 sp.sin(20 * x) / x f2 (1 4 * x)**(2 / x) f3 (1 4 / x)**(2 * x)# 计算极限 limit1 sp.limit(f1, x, 0) limit2 sp.limit(f2, x, 0) limit3 sp…

测绘GIS和遥感领域比较好的公众号有哪些

测绘GIS和遥感领域,微信公众号作为信息传播和知识分享的重要渠道,为从业者提供了一个快速获取行业动态、技术进展和职业发展机会的平台。分享一些在测绘GIS和遥感领域表现突出的公众号推荐: 1. 慧天地:慧天地是一个知名的测绘公众…

倪师哲学。把智慧和时间都用在学习知识上

大家好,今天我们接着聊倪海厦老师的思想,一共整理出来了6点,之前4点已经讲过,今天我们讲第五点,这个呢也是倪老师的原话,不要浪费时间去做无谓的事情,把智慧和时间都用在学习知识上面。 其实啊现…

每天坚持写java锻炼能力---第一天(6.4)

今天的目标是菜单: B站/马士兵的项目菜单 package java1;import java.util.Scanner;public class Test {public static void main(String[] args) {while(true){ //3.加入死循环,让输入一直有System.out.println();System.out.println("--->项…