JMeter详解

news2024/11/27 8:36:58

一、线程组

作用:线程组就是控制Imeter用于执行测试的一组用户

位置:右键点击'测试计划’-->添加 -->线程(用户)--> 线程组

特点: 模拟多人操作线程组可以添加多个,多个线程组可以并行或串行取样器(请求)和逻辑控制器必须依赖线程组才能使用线程组下可以添加其他元件下组件

1,线程组分类

(1)线程组

普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户

(2)setup线程组

一种特殊类型的线程组,可用于执行预测试操作

(3)teardown线程组

一种特殊类型的线程组,可用于执行测试后工作

注:在并行情况下setup最先执行,teardown最后执行

2,线程组参数详解

(1)http请求参数详解

作用:向服务器发送http及https请求 位置:选中线程组->右键->添加->取样器->HTTP请求

案例一:GET请求,URL为test_百度搜索要求:使用HTTP请求-路径来传递get请求参数

案例二:GET请求,URL为百度安全验证要求:使用HTTP请求-参数列表来传递get请求的参数

案例三:POST请求,URI为百度安全验证,请求体为:wd=test(form表单要求:使用HTTP请求-参数列表来传递POST请求的form格式参数

不在演示和get一样将http请求方式更改为post即可

案例四:POST请求,URI为百度安全验证,请求体为:wd=test(form表单要求:使用HTTP请求-消息体数据来传递POST请求的form格式参数

(2)查询结果树

作用:查看HTTP请求的请求和响应结果

位置:选中测试计划/线程组->右键->添加->监听器->查看结果树

组成: 取样结果:查看响应信息头信息、响应状态码

请求:查看请求相关信息(ur1、方法、参数)

响应:查看响应信息

查询结果乱码解决方案

打开bin目录下的jmeter.properties文件

ctrol+f 查找sampleresult.default.encoding

更改为UTF-8,将#取消掉

重启jmeter

二、JMeter进行http接口测试的技术要点

1,参数化

(1)定义

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。

(2)JMeter中常见的参数化方式
1,用户定义的变量 ----------------全局变量

作用:定义全局变量 位置:测试计划 -->线程组-->配置元件 -->用户定义的变量

案例

请求:百度一下,你就知道

要求:使用用户定义的变量配置被测系统的协议、域名和端口

引用

2,用户参数--------------------------为每个用户分配不同的参数值

作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值

位置:测试计划 --> 线程组--> 前置处理器--> 用户参数

案例

请求:百度一下,你就知道 要求:第一个用户请求附带参数:name=“张三"&age=28;第二个用户请求附带参数:name="李四"&age=30

3,CSV Data Set Config----------文件方式参数化

作用:让不同用户在多次循环时,可以取到不同的值

位置:测试计划 -->线程组-->配置元件 -->CSV数据文件设置

csv参数含义

案例

请求:百度一下,你就知道 要求:循环请求3次,每次请求时附带参数username,password,code的值不相同

步骤

1:定义Csv数据文件

2:添加线程组,设置循环次数为3

3.添加Csv数据文件设置

4.添加HTTP请求

不在演示

5.添加查看结果树

不在演示

4,函数---------------------------------随机数据

作用:计数函数,一般做执行次数统计使用

位置:在菜单中选择-->工具-->函数助手对话框

2,JMeter断言

断言:让程序自动判断预期结果和实际结果是否一致 提示: JMeter在请求的返回层面有个自动判断机制(响应状态码)但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性。 JMeter中常用断言: 响应断言 JSON断言 持续时间断言(Duration Assertion)

(1)响应断言

作用:对HTTP请求的任意格式的响应结果进行断言 位置:测试计划-->线程组-->HTTP请求 -->(右键添加)断言 --> 响应断言

参数配置详细介绍: 测试字段:要检查的项(实际结果) 响应文本:来自服务器的响应文本,即主体响应代码:响应的状态码,例如:200 响应信息:响应的信息,例如:OK Response Headers:顺应头部 Request Headers:请求头部 Request Data:请求数据 URL样本:请求URL Document(text):响应的整个文档忽略状态:忽略返回的响应状态码

模式匹配规则:比较方式 包括:文本包含指定的正则表达式 匹配:整个文本匹配指定的正则表达式 Equa1s:整个返回结果的文本等于指定的字符串(区分大小写Substring:返回结果的文本包含指定字符串(区分大小写 否:取反 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK) 注意:Equa1s和substring模式是普通字符串,而包括和匹配式是正则表达式

(2)Json断言

作用:对HTTP请求的JSON格式的响应结果进行断言 位置:测试计划-->线程组--> HTTP请求 -->(右键添加)断言 --> JSON断言

参数介绍: Assert JsoN Path exists:用于断言的JSON元素的路径(实际结果)

Additionally assert value:如果您想要用某个值生成断言请选择复选框

Match as regular expression:使用正则表达式断

Expected value:期望值((期望结果)

Expect nu11:如果希望为空,请选择复选框

Invert assertion(will fail if above conditionsmet):反转断言(如果满足以上条件则失败)

(3)断言持续时间

作用:检查HTTP请求的响应时间是否超出要求范围 位置:测试计划-->线程组-->HTTP请求-->(右键添加)断言 -->断言持续时间

参数介绍 持续时间(亳秒):HTTP请求允许的最大响应时间(单位:毫秒)超过则认为失败

3,JMeter关联

关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。 Jeter中常用的关联方法: 正则表达式提取器 XPath提取器 JSON提取器

(1)正则表达式提取器

作用:针对任意格式的响应数据进行提取 位置:测试计划 -->线程组--> HTTP请求 -->(右键添加)后置处理器-->正则表达式提取器

参数介绍: 引用名称:存放提取出的值的参数名称,供下一个请求引用,如填写title,则可用${title}引用它正则表达式 ():括起来的部分就是要提取的。 匹配任何字符串。 -:一次或多次。 ?:不要太贪婪,在找到第一个匹配项后停止。 ,如果在正则表达式中有多个提取值,则可以模板:用$$引用起来是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值 匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值缺省值:如果参数没有取得到值,那默认给一个值让它取。

(2)XPath提取器

作用:针对HTML格式的响应结果数据进行提取 位置:添加方式:测试计划-->线程组--> HTTP请求(右键添加)--后置处理器--> xPath提取器

参数介绍: Use Tidy (tolerant parser): 当需要处理的页面是HTML格式时,必须选中该选项

当需要处理的页面是XML或XHTML格式时,取消选中该选项。

引用名称:存放提取出的值的参数名称 xPath &uery:用于提取值的xPath表达式

匹配数字:如果xPath路径查询出许多结果,则可以选择提取哪个0:表示随机,-1:表示提取所有结果,1表示第一个值

缺省值:参数的默认值

(3)Json提取器

作用:针对JSON格式的响应结果数据进行提取 位置:添加方式:测试计划-->线程组--> HTTP请求 -->(右键添加)后置处理器--> JSON提取器

参数介绍: Names of created variables:存放提取出的值的参数名称

JSON Path Expressions:JSON路径表达式

Match wo:如果JSON路径匹配出许多结果,则可以选择提取哪个。0:表示随机,-1:表示提取所有结果,1表示第一个值

Default values:参数的默认值

(4)JMeter属性

作用:是一个线程定义的变量在另外的线程中也能使用

使用"meter属性"的操作步骤? 1.添加线程组 2.添加HTTP请求 3.添加JSON提取器,添加Beanshe11取样器(将JSON提取器提取的值保存为JMeter属性)

4.保存meter属性:${setProperty(pro city,${city},)}添加HTTP请求-百度(读取JMeter属性)

5.读取JMeter属性:${ property(pro_city,,)}

6.添加查看结果树

略微复杂不在演示

4,脚本录制

JMeter录制脚本的操作步骤: 1.添加HTTP代理服务器,并进行配置加HTTP代理服务器:测试计划(右键>非测试元件->HTTP代理服务器配置代理服务器的参数

2.开启windows操作系统的浏览器代理

3.启动服务器开始录制

4,在浏览器页面中进行操作,成功后,,就能在JMeter当中看到抓取到的接口请求了

三、JMeter直连数据库

1,直连数据库的使用场景

用作请求的参数化 例如:登录时需要的用户名,可以从数据库中查询获取

清理垃圾数据 例如:添加商品(商品名/编号等不能重复),再执行该脚本不能成功,需要在下次执行前删除该商品数据

用作结果的断言 例如:添加购物车下订单,检查接口返回的订单号,是否与数据库中生成的订单号一致

准备测试数据 例如:通过数据库来准备大量(几十万条)的性能测试数据。

2,直连数据库配置

添加MySQL驱动jar包 方式一:在测试计划面板点击“浏览.“按钮,将你的JDBC驱动添加进来

方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter

配置数据库连接信息 添加方式:测试计划 -->线程组-->(右键添加)配置元件-->JDBC Connection Configuration

参数介绍

variable Name:mysql数据库连接池名称(JDBC请求时要引用)

Database URL: jdbc:mysql://localhost:3306/tpshop2.0组成:协议 +数据库IP +数据库端口 +连接的数据库名称

IDBC DRIVER class:com.mysql.jdbc.Driver(MySQL驱动包位置固定格式 - 下拉框选择) Username:root(连接数据库用户名,如实填写)

3,jmeter逻辑控制器

(1)if控制器

作用:II控制器用来控制它下面的测试元素是否运行 位置:测试计划-->线程组-->(右键添加)逻辑控制器--> 如果(I£)控制器

(2)循环控制器

作用:通过设置循环次数,来实现循环发送请求 位置:测试计划-->线程组-->(右键添加)逻辑控制器循环控制器

(3)foeach控制器

作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值

位置:测试计划-->线程组-->(右键添加)逻辑控制器-->ForEach控制器

参数介绍: 输入变量前缀:要读取的输入变量的固定前缀

开始循环字段:要读取的输入变量后缀数字的最小值-1

结束循环字段:要读取的输入变量后缀数字的最大值

输出变量名称:读取输入变量的值后保存的新变量名,用于后续HTTP请求来引用

4,jmeter定时器

(1)同步定时器

同步定时器:阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会 在同一个时间点一起释放,瞬间产生很大的压力。

位置:测试计划 -->线程组--> HTTP请求-->定时器(右键添加)-->Synchronizing Timer

参数介绍: 模拟用户的数量,即指定同时释放的线程数数量。Number of simulated Users to Group by:若设置为0,等于设置为线程组中的线程数量 Timeout in mi1liseconds:超时时间,即超时多少毫秒后同时释放指定的线程数: 如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等如果大于0,那么如果超过mimeout in milliseconds中设置的最大等待时间后还没达到设置的线程数Timer将不再等待,释放已到达的线程。默认为0

(2)常数吞吐量定时器

作用:让JMeter按指定的吞吐量执行,以每分钟为单位 位置:测试计划 -->线程组--> HTTP请求 -->(右键添加)定时器 -->Constant rhroughput Timer

参数介绍: Target throughput(in samples per minute):目标吞吐量。注意这里是每个用户每分钟发送的请求数

(3)固定定时器

定时器总结

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

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

相关文章

ECM和MEMS技术在心肺声学监测中的应用

心肺疾病是全球范围内导致死亡的主要原因。因此,对这些疾病迹象的准确和快速评估对于为患者提供适当的医疗保健至关重要。心血管疾病最重要的迹象之一是心脏周期的异常。大多数呼吸系统疾病则表现为呼吸周期的异常。有多种方法可以监测心脏和肺部的周期。听诊是监测…

【面试干货】Java中的访问修饰符与访问级别

【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认(没有访问修饰符)4、private 💖The Begin💖点点关注,收藏不迷路💖 在Java中,访问修饰符用于控制类、变量、方法和构造器…

blender 快捷键 常见问题

一、快捷键 平移视图:Shift 鼠标中键旋转视图:鼠标中键缩放视图:鼠标滚动框选放大模型:Shift B 二、常见问题 问题:导入模型成功,但是场景中看不到。 解决办法:视图-裁剪起点&#xff0…

“Docker入门指南:概念与安装详解“

目录 # 概念 1. Docker常见问题 2. docker概念和安装 2.1 Docker的组成 2.2 Docker 组件及关系表 2.3 docker核心思想 2.4 docker镜像与容器两个核心概念 2.5 容器概念图 2.6 docker核心技术 2.6.1 镜像 (Image) 概述 关系 示例 2.6.2 容器 (Container) 概述 关…

贪吃蛇——c语言版

文章目录 演示效果实现的基本功能技术要点源代码实现功能GameStart打印欢迎界面和功能介绍绘制地图创建蛇创建食物 GameRun打印提示信息蛇每走一步 GameEnd蛇死亡后继续游戏 演示效果 贪吃蛇1.0演示视频 将终端应用程序改为控制台主机 实现的基本功能 贪吃蛇地图绘制蛇吃食物的…

[Mysql] 数据库基本概念

前言---数据库系统发展史 当今主流数据库介绍 一、操作系统 Linux操作系统 :RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 会让系统逐渐国产化 国产系统:华为 欧拉 阿里 龙蜥 腾讯 tencentOS 银河麒麟 中标麒麟…

分享:MoneyPrinterTurbo只需一个视频主题或关键词全自动生成一个高清的短视频

MoneyPrinterTurbo是基于原有的MoneyPrinter项目进行优化和重构后推出的新版本。它利用先进的AI技术,通过用户提供的视频主题或关键词,全自动生成视频文案、素材、字幕以及背景音乐,并最终合成高清的短视频。 功能特性 AI智能文案生成&…

redis高可用-主从同步

目录 一:背景 二:实现方式 三:实际使用 一:背景 上一节我们介绍了centos下redis下的安装配置,是在单台服务器部署一个redis服务,这种模式是单机模式下使用的,如果出现服务故障,re…

Spring AI 调用 openAI 进行语音识别

Spring AI支持语音识别功能,目前仅支持OpenAI的Transcription模型。 项目搭建: 参考 Spring AI 介绍以及与 Spring Boot 项目整合 源码示例: RestController RequestMapping("/openai") public class OpenAiIAudioTranscriptionC…

幂集000

题目链接 幂集 题目描述 注意点 集合中不包含重复的元素 解答思路 可以使用深度优先遍历的思想按顺序将相应的元素添加到子集中&#xff0c;并将每个子集添加到结果集 代码 class Solution {public List<List<Integer>> subsets(int[] nums) {List<List&…

VirtualBox虚拟机下安装Ubuntu24.04操作系统

目录 0 背景1 虚拟机的安装1.1 下载安装包1.2 走安装向导 2 操作系统的安装2.1 下载光盘镜像文件2.2 安装操作系统到虚拟机上 3 基本配置3.1 网络连接方式3.2 共享文件夹3.3 设置显存大小 0 背景 首先说说Ubuntu系统&#xff0c;或者更普遍一点&#xff0c;Linux系统究竟有什么…

Java项目学习(员工管理)

新增、员工列表、编辑员工整体代码流程与登录基本一致。 1、新增员工 RestController RequestMapping("/admin/employee")EmployeeController 类中使用了注解 RestController 用于构建 RESTful 风格的 API&#xff0c;其中每个方法的返回值会直接序列化为 JSON 或…

Mirillis Action v4 解锁版安装教程(专业高清屏幕录像软件)

前言 Mirillis Action!&#xff08;暗神屏幕录制软件&#xff09;专业高清屏幕录像软件&#xff0c;被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件&#xff0c;拥有三大硬件加速技术&#xff0c;支持以超高清视频画质录制桌面和实况直播&#xff0c;超清视频画…

90 Realistic Arctic Environment Textures snow(90+种逼真的北极环境纹理--雪、冰及更多)

一组90多个逼真的雪、冰、雪地岩石和其他被雪覆盖的地面纹理,供在雪地环境中使用。每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准的Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。…

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代&#xff0c;数据已成为企业和应用不可或缺的核心&#xff0c;而数据库不仅是数据的仓库&#xff0c;更是支撑业务决策、系统运行的基石。对于求职者而言&#xff0c;掌握数据库知识已成为求职市场上的必考…

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件&#xff0c;类似STM32的STM32CubeMX工具软件。 &#x1f4cd;AT32 TOOL系列工具下载地址&#xff1a;https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

递归乘法00

题目链接 递归乘法 题目描述 注意点 保证乘法范围不会溢出 解答思路 使用加法代替乘法&#xff0c;递归计算A * B&#xff0c;每个递归的过程加上一个A&#xff0c;且对B减1&#xff0c;直到B为0为止 代码 class Solution {public int multiply(int A, int B) {if (B 0…

初学51单片机之数字秒表

不同数据类型间的相互转换 在C语言中&#xff0c;不同数据类型之间是可以混合运算的。当表达式中的数据类型不一致时&#xff0c;首先转换为同一类型&#xff0c;然后再进行计算。C语言有两种方式实现类型转换。一是自动类型转换&#xff0c;另外一种是强制类型转换。 转换的主…

哈尔滨等保的定级备案

哈尔滨等保的定级备案是确保信息安全&#xff0c;保障国家和人民利益的重要措施。在当前信息化社会&#xff0c;信息安全已成为国家发展的重要支撑&#xff0c;哈尔滨等保的定级备案工作显得尤为关键。本文将从哈尔滨等保定级备案的背景、定级标准、备案流程、实施意义等方面进…