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.mfbz.cn/a/729932.html

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

相关文章

自动化测试:Autorunner的使用

自动化测试:Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…

手机怎么自动切换ip地址

在数字化时代,网络IP地址不仅是设备在网络世界的标识,也是确保用户网络安全和数据隐私的关键因素。对于手机用户来说,在某些情境下可能需要自动切换IP地址,本文将为您介绍手机怎么自动切换IP地址。 随着网络技术的发展&#xff0c…

python项目(课设)——飞机大战小游戏项目源码(pygame)

主程序 import pygame from plane_sprites import * class PlaneGame: """ 游戏类 """ def __init__(self): print("游戏初始化") # 初始化字体模块 pygame.font.init() # 创建游戏…

CocosCreator 微信小游戏上架流程准备工作

前言 事前准备非常重要,因为有creator的助力,实际上开发小游戏往往很快,但是如果准备不足,上架及审核过程非常慢,往往游戏做好了,还得各种排队等审核,大多数开发者又不是腾讯白名单之内&#x…

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天,很多人都希望通过网络来增加收入,而加入亚马逊联盟计划(Amazon Associates)无疑是一个不错的选择。如果你有一个WordPress网站,那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

什么样的企业适合运用裂变拉新工具?深入解析

在当今数字化快速发展的时代,裂变拉新工具已成为许多企业吸引新用户、扩大市场影响力的重要手段。然而,并非所有企业都适合运用这种工具。林叔将探讨哪些类型的企业更适合运用裂变拉新工具,并分析其背后的原因。 首先,拥有高度用…

DDK电通拧紧MFC-S060控制器过流维修

一、DDK伺服拧紧轴控制器过流故障的成因 1. 电源电压过低:当电源电压过低时,控制器可能会出现过流现象。 2. 负载过大:当负载过大时,DDK电通拧紧机控制器MFC-S060的电流也会随之增大,可能导致过流故障。 3. 控制器内部…

2024年7月JLPT日语N1真题试卷和答案解析,《Navi日语社》小程序在线答题考试,你的专属考试助手,日语学习神器!

掌握日语,从日语社小程序开始。这款小程序专为日语学习者设计,提供全面的JLPT备考资源,包括日语N1至N5等级考试的历年真题和2024年最新题目。无论你是日语新手还是备考高手,都能在这里找到适合自己的学习路径。 核心功能&#xf…

采购管理系统:反向竞价失败的 6 个常见原因

在当今快节奏和竞争激烈的商业环境中,采购专业人员一直在寻找创新战略来节约成本和简化供应链流程。反向竞价就是其中一种广受欢迎的策略。 反向竞价提供了一种独特的采购方法,允许买家邀请多个供应商参与实时竞标,以争取他们的业务。虽然反…

明基的台灯值得入手吗?书客、柏曼横向测评大比拼!

在当今社会,孩子们的学习负担日益加重,熬夜学习屡见不鲜,随之而来的是视力问题的凸显。中国青少年的近视率已位居世界前列,且地区间的近视率差异亦不容忽视。鉴于眼睛健康的重要性,选购一款优质的护眼台灯显得尤为重要…

vscode CMAKE 配置调试

概述 记录使用VSCODE中的CMAKE拓展构建项目时出现的报错 CMakePresets.json: {"version": 6,"configurePresets": [{"name": "x64-debug","displayName": "x64-debug","cmakeExecutable":…

1台SW工作站5人同时使用能实现吗

在当今的数字化时代,高效的工作方式和技术创新是企业竞争力的重要组成部分。SolidWorks作为一款功能强大的三维设计软件,广泛应用于机械、电子、建筑等多个领域。然而,随着企业规模的扩大和团队人数的增加,如何充分利用有限的资源…

如何将 ChatGPT 集成到你的应用中

在当今快速发展的技术环境中,将人工智能聊天解决方案集成到你的应用程序中可以显著提升用户体验和参与度。OpenAI 的 ChatGPT 以其对话能力和高级语言理解而闻名,对于希望在其应用程序中实现智能聊天功能的开发人员来说是一个绝佳的选择。那我们今天就来…

图片的格式怎样在线转换?在线改图片格式的操作技巧

图片作为日常生活中常用的内容展示方式,面对不同的用途图片的格式也是不同的,那么怎样快速完成图片格式转换呢?通过软件来修改图片格式比较麻烦,现在可以在网上使用图片格式转换器工具来在线改图片格式,这种方式会更加…

马斯克的Grok-1:开源AI模型的突破与挑战

在人工智能(AI)飞速发展的当下,xAI公司推出的最新作品Grok-1,不仅标志着技术的一大突破,也预示着AI领域的一次重大里程碑。这个经过四个月辛勤开发的模型,拥有高达3140亿参数的专家混合体系结构&#xff0c…

AI PPT生成器,一键在线智能生成PPT工具

PPT作为商业沟通和教育培训中的重要工具,PPT制作对于我们来说并不陌生。但是传统的PPT制作不仅耗时,而且想要做出精美的PPT,需要具备一定的设计技能。下面小编就来和大家分享几款AI PPT工具,只要输入主题,内容就可以在…

【R语言】对一个Plot绘制多个图,并且每个图单元也包含多个图

以一个Plot绘制五行六列共30个图&#xff0c;然后每30个图单元包含两个图为例&#xff1a; 如下图所示&#xff1a; 代码如下&#xff1a; for (i in 1:(5*6)) {create_subplots <- function() {library(ggplot2)library(dplyr)library(tidyr)# 创建一个随机的数据框simula…

IPD笔记

IPD笔记 先弄一个一图流&#xff0c;改天再过来继续补充 IPD&#xff08;Integrated Product Development&#xff09;即集成产品开发&#xff0c;是一套产品开发的模式、理念与方法。华为的IPD的核心思想是基于市场需求&#xff0c;将产品开发作为一项投资来管理&#xff0c;以…

灵活的招聘管理系统有五种方法帮助成功招聘

还记得以前的时代吗&#xff1f;这取决于你的年龄&#xff0c;直到智能手机、流媒体电视和电子邮件出现。今天&#xff0c;任何活着的成年人都经历了技术上的巨大变化&#xff0c;这创造了一种新的行为方式。人才获取也是如此。 一个值得推荐的招聘管理系统 招聘团队被困在满足…

非常难找的AI衣服图片处理工具推荐,一键轻松AI编辑

在当今数字化时代&#xff0c;AI技术已经渗透到我们生活的方方面面。特别是在图片处理领域&#xff0c;AI的强大功能让很多原本繁琐复杂的操作变得简单易行。今天&#xff0c;我要为大家推荐一款好用的AI衣服图片处理工具——让你一键轻松完成AI编辑&#xff0c;快速实现专业效…