Jmeter接口测试

server/2024/11/15 4:56:46/

Jmeter 核心组件执行优先级:测试计划>>>线程组>>>配置元件>>>前置处理器>>>定时器>>>取样器>>>后置处理器>>>断言>>>监听器 

逻辑控制器结合取样器实现一些复杂的逻辑
配置元件配置信息,用于设置一些默认值以供后续范围内的组件使用
前置处理器在请求之前的工作,主要包括参数的设定和传递
定制器负责在请求质检的延迟间隔。固定、高斯、随机
取样器服务器发送请求的最小单元
后置处理器在请求之后的工作,比如判断、参数关联、逻辑处理等,为业务逻辑中的重要环节
断言提供成功与否的判断机制,通常用于检查取样器的结果是否正确
监听器提供结果检查机制,用于查看、检查、汇总、分析取样结果

 一、线程(用户)

1.1线程组

右击测试计划 >>> 添加 >>> 线程(用户) >>> 线程组
线程属性
线程数

等同于模拟的用户数量,一个用户占用一个线程,模拟多少用户就是多少线程;

Ramp-Up时间(秒)

线程加速时间,设置多长时间内启动全部线程;

例如线程数100,时间设定10s,则10s加载100个线程,每秒启动的线程数为10;

循环次数

如果填具体的数值,就是循环对应的次数,例如线程数为200,循环次数为10,则总请求数为200*10=2000;

如果勾选“永远”,则一直执行下去,直到手动停止运行脚本;

1.2setUP线程组

1.3tearDown线程组

二、配置文件

2.1、CSV 数据文件设置(CSV Data Set Config)

CSV能够读取外部csv文件中的数据并生成变量,被JMeter脚本引用,从而实现参数化。

1、txt文件

username,password

lucy,111111

mark,222222

lily,333333

2、编辑csv数据文件

右键–>添加–>配置元件–>CSV Data Set Config
设置csv数据文件
文件名

支持csv,txt,dat三种格式,填写文件路径

文件编码编码格式,与所选文件编码格式保持一致/utf-8
变量名称(西文逗号间隔)多个变量,用英语的逗号隔开;username,password

3、将变量名称编辑到HTTP请求处,HTTP值处添加CSV数据设置处变量名称,格式为:${username}、${password};

2.2、HTTP信息头管理器

右键 >>> 添加 >>> 配置元件 >>> HTTP信息头管理器
Content-Typeapplication/json(json格式必须添加HTTP信息头管理器)
cookie
token
User-Agent

2.3、HTTP Cookie管理器(HTTP Cookie Manager)

HTTP请求的返回结果里包含一个cookie,那么HTTP Cookie管理器会自动将该cookie保存起来,而且后期所有的对该网站的请求都使用同一个cookie;

2.4、HTTP请求默认值

管理公用的HTTP请求配置数据;一个线程下可以同时存在多个http请求,可以把公共参数,提取到HTTP请求默认值组件中,比如:协议、IP、端口号、编码等;然后在每个http请求的配置元件中,编辑自己独有的信息即可;

右键 >>> 添加 >>> 配置元件 >>> HTTP 请求默认值
基本
web服务器
协议:https服务器名称或IP:端口号:443
HTTP请求
请求方式:路径:内容编码:utf-8
参数消息体数据文件上传

参数传递格式:application/x-www-form-urlencoded

参数传递格式:application/json

一般 POST 使用;参数长度无限制

参数传递格式:multipart/x-www-form-data 

2.5、计数器(Counter)

在迭代过程中增加计数器,一般用于统计和模拟序列等

右键 >>> 添加 >>> 配置元件 >>> 计数器
计数器
starting value给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器 
递增每次迭代后,给计数器增加的值
最大值计数器的最大值
Number format可选格式,比如000
引用名称(Reference Name) : 用于控制在其它元素中引用该值,形式:$(reference_name}

三、定时器

3.1、同步定时器(Synchronized Timer)

一、集合点

        集合点是测试脚本中的一个标记,当每个虚拟用户执行到标记处时,会停留在标记处等待其他的虚拟用户,当达到预期设置的并发数时,标记处的所有用户同时启动执行后续的请求;

         集合点会产生瞬间高并发,但是也会降低平均压力。所以在压测过程中,如果有要求瞬间高并发的业务,就需要使用集合点,比如抢购,秒杀之类的业务

        可以在某一逻辑点模拟创建最大负载量进行测试;Synchronizing Timer 的技术原理是通过在某一点阻塞线程,直到 X 个线程被阻塞,然后同时释放

右键 >>> 添加 >>> 定时器 >>> 同步定时器(Synchronized Timer)
模拟用户组的数量

0表示执行所有线程组

超时时间

设置0表示一直等待

四、取样器

4.1HTTP请求(HTTP Request)

右键 >>> 添加 >>> 取样器 >>> HTTP请求(HTTP Request)
基本
web服务器
协议:https服务器名称或IP:端口号:443
HTTP请求
请求方式:路径:URL内容编码:utf-8

参数

消息体数据

文件上传
参数传递格式:application/x-www-form-urlencoded参数传递格式:application/json

一般 POST 使用;参数长度无限制

参数传递格式:multipart/x-www-form-data
文件名称参数名称MIME类型
请求 URL 中添加参数,函数定义中参数,而argument指的是函数调用时的实际参数,简略描述为:parameter=形参(formal parameter)消息体数据(Body Data): 实体数据,就是请求报文里面主体实体的内容,一般我们向服务器发送请求,携带的实体主体参数,可以写入这里(一般 POST 使用;参数长度无限制)从 HTML 文件获取所有有内含的资源:被选中时,发出 HTTP 请求并获得响应的 HTML 文件内容后还对该 HTML(可以上传文件,对文件进行性能测试)

五、后置处理器

5.1、正则表达式提取器(Regular Expression Extractor)

接口需要关联时,可以通过正则表达式提取所需要的值

右键 >>> 添加 >>> 后置处理器 >>> 正则表达式提取器(Regular Expression Extractor)

Name of created variable

请求要引用的变量名称,如填写 result_num

Regular Expression

万能正则表达式   "id":"(.+?)"

Template对应正则表达式的组号,从1开始;比如:$n$ 表示取对应到表达式中的第n个括号
Match No. (0 for Random

0 代表随机取值

-1匹配所有

n取第几个匹配值,比如:取1表示报文中的第1个对象匹配,取2表示报文中的第2个对象匹配

Default Value如果参数没有取得到值,那默认给一个值让它取

5.2、JSON提取器(JSON Extractor)

数据关联,可以通过JsonPath提取所需要的值,功能非常强大(注意取样器返回必须为 Json);底层采用jackson实现;

右键 >>> 添加 >>> 后置处理器 >>> JSON提取器(JSON Extractor)
Name of created variable

请求要引用的变量名称,如填写 result_num;

自定义,多个变量用分号分隔

JSON Path expressions

$..字段名 (JSON path表达式)
Match No. (0 for Random)

0 代表随机取值

n取第几个匹配值

-1匹配所有;

比如:取1表示报文中的第1个对象匹配,取2表示报文中的第2个对象匹配

Compute concatenation var (suffix _ALL)如果找到许多结果,则插件将使用’,‘分隔符将它们连接起来,并将其存储在名为 _ALL的var中
Default Value如果参数没有取得到值,那默认给一个值让它取

六、断言

6.1、响应断言(Response Assertion)

当响应中有明显的业务标志时,我们可以采用该断言器检测响应报文返回的特征值,进而判断在业务上是否确定;使用频率非常高,大部分场景均可以使用该断言器。

右键 >>> 添加 >>> 断言 >>> 响应断言(Response Assertion)
测试字段(Field to Test)
响应文本(Text Response)服务器返回的响应文本Response Body
响应代码(Response Code)Response code,如200
响应消息(Response Message)Response message,如success
响应头(Response Headers)Response headers,如 Set-Cookie 头

请求头(Request Headers)

请求的请求——Request Headers)
URL样本(URL Sample)请求的地址:Request Body 中的地址)

请求数据(Request Data)

请求的请求——Request Body

模式匹配规则(Pattern Matching Rules)

包括(Contains)响应内容包括匹配的内容,支持正则表达式
匹配(Matches)响应内容完全匹配需要匹配的内容,支持正则表达式
Equals响应内容要完全等于需要匹配的内容,需要匹配的内容是字符串,不支持正则表达式
Substring响应内容包含指定结果的字串,不支持正则字符串
否(Not)不进行匹配

6.2、JSON断言(JSON Assertion)

 可以对 Jmeter 取样器的响应消息以 JSON 方式进行检查;检测响应报文返回的特征值,进而判断取样器在业务上是否正确;

右键 >>> 添加 >>> 断言 >>> JSON断言(JSON Assertion)
Assert JSON Path exists用于断言的JSON元素的路径(JSONPath);检测JSONPath是否存在;使用XPATH语法书写,如$.code

Additionally assert value

勾选,验证根据JSONPath提取值是否预期
Match as regular expression

勾选,预期值可以使用正则表达式表示

Expected Value预期值;支持脚本语言写法;如0

Expect null

若验证提取的值为null,则勾选此项;

验证null值,还是需要勾选“Additionally assert value”,否则验证的是JSONPath能否找到路径;

预期值不填表示空字符,与null不等价

Invert assertion (will fail if above conditions met):若勾选,表示对断言结果取反

七、监听器

7.1、查看结果树(View Results Tree)

7.2、汇总报告(Summary Report)

7.3、聚合报告(Aggregate Report)

可以查看事务或者取样器在某个时间范围内执行的汇总结果

右键 >>> 添加 >>> 监听器 >>> 聚合报告(Aggregate Report)

Label

样本平均值中位数90% 百分位95% 百分位99% 百分位最小值最大值异常 %吞吐量接收 KB/sec发送 KB/sec
HTTP请求取样器名称总共发给服务器的请求数量平均响应时间50%的用户响应时间不超过这个值90%的用户响应时间不超过这个值95%的用户响应时间不超过这个值99%的用户响应时间不超过这个值最小响应时间最大响应时间异常百分比(错误请求数量/请求总数)每秒取样器执行的数量,相当于 TPS每秒接收的千字节数每秒发送的千字节数

八、逻辑控制器

8.1、IF 控制器(If Controller)

IF控制器:可以控制其下面的子/后代元素是否执行;如果为 true 则执行;如果为 false 则都不执行

右键 >>> 添加 >>> 逻辑控制器 >>> IF 控制器(If Controller)

Interpret Condition as Variable Expression?默认勾选项,将条件解释为变量表达式:${__jexl3(条件)}

8.2、循环控制器(Loop Controller)

可以对部分逻辑按常量进行循环迭代

右键 >>> 添加 >>> 逻辑控制器 >>> 循环控制器(Loop Controller)
循环次数

8.3、仅一次控制器(Once Only Controller)

可以让控制器内部的逻辑只执行一次;单次的范围是针对某一个线程,无论线程外面迭代多少次或者里面循环多少次,均只执行一次;单次控制器一般可用于登陆,全局参数设置这种只执行一次的逻辑控制;

右键 >>> 添加 >>> 逻辑控制器 >>> 仅一次控制器(Once Only Controller)

九、函数助手

9.1、Random函数

Tools–>函数助手对话框–>选择一个功能–>_Random
函数参数
名称
一个范围内的最小值1
一个范围内允许的最大值100
拷贝并粘贴函数字符串${__Random(1,100,)}生成

9.2、RandomString随机字符串

9.3、CSVRead

9.4、time

        ${__time(,)}:获取当前13位时间戳(当前时间的毫秒数),默认精确到毫秒级别, 如1650356704900等;

9.5、UUID

        ${__UUID}生成永不重复的字符串,格式类似8e9464d2-4561-453e-8005-ad0a44507640;


http://www.ppmy.cn/server/25527.html

相关文章

C# 异步编程

异步编程是一种思路异步相当于对线程池的封装await相当于让另一个线程来干这个事 常见概念已经有多线程了,为何还要异步多线程与异步是不同的概念多线程与异步的适用场景不同*多线程**异步* 什么是异步任务(Task)包含了异步任务的各种状态的一个引用类型对于异步任务…

Rabbitmq消息应答,持久化,权重分配(7)

消息应答 概览 消息应答机制是 RabbitMQ 中确保消息处理的可靠性和一致性的重要机制之一。当消费者从队列中接收到消息并处理完成后,通常需要向 RabbitMQ 发送一个明确的消息应答,以告知 RabbitMQ 消息已经被处理,并可以安全地从队列中移除…

基于Spring Boot的校园博客系统设计与实现

基于Spring Boot的校园博客系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页、文…

【漏洞复现】IP-guard WebServer 权限绕过漏洞

0x01 产品简介 IP-guard WebServer 是 IP-guard 网络安全管理系统的一部分,用于提供 Web 界面以进行用户权限管理、监控和审计。 0x02 漏洞概述 IP-guard WebServer的权限验证机制中存在设计缺陷,未授权的攻击者能够规避安全验证,通过后端接口执行文件的任意读取和删除操…

Git泄露和hg泄露原理理解和题目实操

一.Git泄露 1.简介 Git是一个开源的分布式版本控制系统,它可以实现有效控制应用版本,但是在一旦在代码发布的时候,存在不规范的操作及配置,就很可能将源代码泄露出去。那么,一旦攻击者发现这个问题之后,就…

H3C无线AP管理命令

先上链接 01-AP管理命令-新华三集团-H3C display wlan ap all

SpringCloud Hystrix 实战

一、配置 1.引入jar包 单独使用hystrix ,不配合openFegin使用的话,单独使用hystrix,需要引入spring-cloud-starter-netflix-hystrix包。要使用的hystrix-dashboard 界面的话需要引入spring-boot-starter-actuator 包和spring-cloud-starter-netflix-hy…

[电脑软件] 实时打字翻译工具【跨境电商必备软件】

简介 可以边打字边翻译,支持翻译结果直接输出到文本,使用英文输出的朋友会有很大帮助。 目前支持搜狗翻译、百度翻译和有道翻译,支持Windows平台。感兴趣的朋友安装使用~ 目前有2个版本,网页调用版本【推荐】和API版本&#xf…