JMeter详解

一、线程组

作用:线程组就是控制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.mzph.cn/pingmian/31324.shtml

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

相关文章

Behind the Code:Polkadot 如何实现全球协作与去中心化治理?

2024 年 6 月 16 日,《Behind the Code: Web3 Thinkers》第二季第二集上线。本集中,ChaosDAO 联合创始人兼 Novasama Technologies 首席财务官 Leemo 深入探讨了 Polkadot 生态系统中的全球协作力量,以及这种协作如何推动去中心化治理的创新与…

C++:你用过MultiIndex容器吗?

作为C开发者,我们对键值容器非常熟悉,例如std::set、std::map、std::unordered_map等。这些容器以其强大的功能和高效的性能,成为我们处理数据存储和检索任务时的得力助手。但是你用过多键容器(MultiIndex)吗&#xff…

AI创作在论文写作中扮演什么角色?

近年来,随着科技的快速发展,AI已经逐渐渗透到了生活中的方方面面,其中也包含着学术领域。 作为学生党,你是否还在为期末论文,大学生实践报告而发愁? 有了这些AI写作神器,大学生们再也不用在期…

深度学习500问——Chapter11:迁移学习(3)

文章目录 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 11.3.2 边缘分布自适应 11.3.3 条件分布自适应 11.3.4 联合分布自适应 11.3.5 概率分布自适应方法优劣性比较 11.3.6 特征选择 11.3.7 统计特征对齐方法 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 数据分布自适…

Unity做一个剪辑声音的工具 在编辑器模式实时剪辑声音

Unity音频剪辑工具的实现 在游戏开发中,音频是一个至关重要的元素。音频剪辑工具能够帮助开发者高效地编辑和管理音频文件。本文将解析一个基于Unity编辑器的音频剪辑工具的实现方法 效果 工具功能 该音频剪辑工具允许用户在Unity编辑器中加载音频片段&#xff0…

Linux 一键部署 Nginx1.26.1 + ModSecurity3

前言 ModSecurity 是 Apache 基金会的一个开源、高性能的 Web 应用程序防火墙(WAF),它提供了强大的安全规则引擎,用于检测和阻止各种攻击行为,如 SQL 注入、XSS 跨站点脚本攻击等。而 nginx 是一个高性能的 Web 服务器,常用于处理大量的并发请求,具有很高的负载均衡能力…

如何修炼个人影响力,怎样有效地影响他人

一、教程描述 影响力是用一种别人所乐于接受的方式,改变他人的思想和行动的能力。影响力又被解释为战略影响、印象管理、善于表现的能力、目标的说服力以及合作促成的影响力等。影响力表明了一种试图支配与统帅他人的倾向,从而才使一个人采取各种劝说、…

iOS封装FrameWork

我们是整个项目封装给客户app用,项目里面有资源文件:xib和图片文件。有第三方,也有.a文件和第三方给我们的frameWork。下面记录下大体遇到的问题及遇到的冲突解决办法。 第一部分:封装frameWork 1.首先准备好,要封装的…

在阿里云服务器Linux系统上从头到尾实现Webapp的部署(安装卸载JDK、安装Tomcat、安装配置MySQL)

输入yum list | grep jdk 选择 devel是软件包中的典型命名格式 devel表示这个包是开发工具相关的 里面包含内容是最完整的 x86表示cpu架构是x86_64 还有openjdk表示开源版本 输入yum install java-1.8.0-openjdk-devel.x86_64 开始下载 遇到问你 is this ok? 输入y表示ok 输…

物联网APP设计艺术:技巧与未来科技的融合

从早期的智能家居,到今天的服装制造、医疗保健、物流运输、汽车工业...越来越多的行业开始使用物联网。物联网技术跨度大,适用范围广,设计师在面对物联网产品的UI设计项目时往往会感到受阻。这是什么原因呢?物联网应用程序界面设计…

基于国产飞腾2000制作的paddleocr hubserving服务docker镜像文件

paddleocr hubserving国产化飞腾、鲲鹏armv8 api服务镜像制作 一、编译paddle paddle官网说明在处理器飞腾2000和鲲鹏需要自行编译(FT2000/Kunpeng 920 2426SK) 如果自己编译可以参考官网飞腾/鲲鹏下从源码编译-使用文档-PaddlePaddle深度学习平台 二…

干货满满!亚信安慧亮相PostgreSQL峰会,分享AntDB数据库国产化运维之路

6月15日,PostgreSQL数据库技术峰会广州站圆满落幕。峰会上,亚信安慧数据库智能运维产品负责人李志龙带来了《AntDB数据库运维之路》的主题演讲。如何用好数据是企业数智化转型的重点,更智能的数据管理,在促进数据要素流转&#xf…

哪些医疗器械需要注意网络安全问题?医疗器械网络安全测试方法有哪些?

随着医疗设备的网络化程度不断提高,网络安全问题变得越来越突出。以下是一些需要特别注意网络安全的医疗器械类别:1. 医学影像类设备:包括CT、DR、医用X射线系统、超声诊断仪、磁共振设备、肿瘤治疗机、医用胶片及处理系统、医用3D打印设备等…

WindTerm软件的本地模式和远程模式

WindTerm作为一个多功能的远程终端控制软件,支持本地模式和远程模式两种键盘输入处理方式,这两种模式的主要区别在于键盘输入的处理逻辑和目标: 本地模式(Local Mode) 在本地模式下,WindTerm不对键盘输入…

怎么使用Consul当配置中心和动态刷新配置

一、背景 由于Eureka官方已经正式宣布,自2.0起不再维护该项目,如果需要使用2.x,自行承担风险。 项目之前使用的Eureka,现在不维护了则需要寻找替代方案。现在Spring Cloud官方推荐Spring Cloud Consul替换Eureka作为注册中心&…

VUE面试题汇总(九)

之间联系(Model 和 ViewModel 的双向数据绑定) 解析: MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件&#xf…

推荐5个AI辅助生成论文、降低查重率的网站【2024最新】

一、引言 对于忙碌的学生来说,毕业论文通常是一项艰巨的任务。幸运的是,随着人工智能技术的发展,现在有一些工具可以帮助学生轻松完成论文。本文将介绍五个免费的AI工具,它们能够一键帮助你生成毕业论文,让你的学术生…

实验一:Ubuntu系统中的USB设备绑定实验

实验一:Ubuntu系统中的USB设备绑定实验 一、实验目的二、实验原理三、实验环境四、实验步骤任务 1:绑定不同USB设备任务 2:绑定多个相同设ID的串口设备 五、注意事项六、拓展练习 一、实验目的 学习Ubuntu中USB设备命名方法;掌握…

ADI Trinamic tmc2209专为3D打印和激光雕刻打造的高性能解决方案

TMC2209-LA是专为3D打印机和激光雕刻机设计的一款高性能、超静音的两相步进电机驱动器IC。该芯片结合了Trinamic公司的先进技术,为设备提供了稳定、可靠且低噪音的动力驱动解决方案 TMC2209-LA与许多传统驱动器以及TMC2208-LA引脚兼容。TRINAMICS先进的StealthChop2…

springboot基于Web的社区医院管理服务系统 LW+ PPT+源码+讲解

3系统需求分析 3.1系统功能 通过前面的功能分析可以将社区医院管理服务系统的功能分为管理员、用户和医生三个部分,系统的主要功能包括首页、个人中心、用户管理、医生管理、预约医生管理、就诊信息管理、诊疗方案管理、病历信息管理、健康档案管理、费用信息管理…