四、Jmeter工具接口脚本编写

目录

[1 Jmeter工具的不同控件的功能概述](#1 Jmeter工具的不同控件的功能概述)

[1.1 线程组](#1.1 线程组)

[1.2 取样器](#1.2 取样器)

[1.3 配置元件](#1.3 配置元件)

[1.4 监听器](#1.4 监听器)

[1.5 定时器](#1.5 定时器)

[1.6 逻辑控制器](#1.6 逻辑控制器)

[1.7 前置处理器](#1.7 前置处理器)

[1.8 后置处理器](#1.8 后置处理器)

[1.9 断言](#1.9 断言)

[2 Jmeter写单接口测试脚本](#2 Jmeter写单接口测试脚本)

[2.1 添加线程组 - 普通线程组](#2.1 添加线程组 - 普通线程组)

[2.2 添加取样器](#2.2 添加取样器)

[2.3 添加消息头管理器](#2.3 添加消息头管理器)

[2.3 添加查看结果树](#2.3 添加查看结果树)

[2.4 拓展介绍 ​编辑](#2.4 拓展介绍 编辑)


注:还不会安装的同学,参考Mac环境下安装JDK与JMeter详细教程-CSDN博客

1 Jmeter工具的不同控件的功能概述

1.1 线程组

用来性能场景设计的,默认有三种:setup、teardown、普通线程组。

还有一些通过插件增加的其他线程组,后续将性能场景设计的时候会讲到。

1.2 取样器

根据不同的协议,选择不同的取样器

http取样器用的最多;jdbc请求连接数据的;调试取样器用来调试脚本

1.3 配置元件

整个脚本的公共信息,它的优先级最高,运行时最先执行

如:信息头管理器、用户定义变量等

1.4 监听器

从不同维度展示测试的结果

如:查看结果数、聚合报告等。还有一些插件带来的监听器,也是后续讲到

1.5 定时器

控制运行节奏,比如控制某个请求延迟发送请求,不过这个性能测试用的比较少

1.6 逻辑控制器

控制脚本运行逻辑,比如循环和判断

1.7 前置处理器

取样器执行之前,先执行的一类元件。如:用户参数等

1.8 后置处理器

取样器执行之后,对数据处理的一类元件。如:json提取器、正则提取器等

1.9 断言

用户给接口请求做结果断言判断是否符合预期。

接口测试会用到比较多,性能测试一般不会使用

2 Jmeter写单接口测试脚本

注:这里尽量找项目的接口文档,编写接口脚本

接口测试五大要素:
请求地址 : 取样器 / 配置元件 - http请求默认值
请求方法 : 取样器
请求参数 : 取样器
请求头部 : 配置元件 - http信息头管理器
响应消息体 : 监听器 - 察看结果树

2.1 添加线程组 - 普通线程组

右键测试计划,添加线程组

2.2 添加取样器

线程组右键,添加取样器 --> http请求

注:

1、协议:当http请求时,可以不写。但是https时一定要写

2、服务器ip: 项目的ip或者域名,前后不能有空格

3、端口:不写默认8080,如果项目有自己的端口一定要带上。https协议这里是443

4、请求方法:根据接口协议定,不要写错

5、路径:接口地址,前后不能有空格

6、编码:utf8 -- 支持中文格式字符

6.1 当消息体是json格式,并其中有中文或特殊字符时,【两个二选一】

1、配置编码为 utf8;

2、在请求头里配置:ContentType:application/json;charset=utf8

6.1 当参数为表单的数据,以上两个配置无效,需要勾选参数列表种的'编码'

(这是对参数进行 urlencode 编码,否则会乱码;一般建议默认都勾上)

7、请求体:

7.1 参数和消息体数据是互斥,不能同时使用。
7.2 当接口请求体为json或xml ,就把请求体写在消息体数据中;
json格式: {"name":"tricy"} --键值对的
XML格式: <name>polly</name> 【soap协议 webservice接口】
7.3 当接口为 GET方法的时候, 请求体一般都是表单格式

请求体就写在【参数】中
请求体的参数值的类型为数字/ 字符串类型时,值是没有双引号。
表单数据的值是没有类型之分的。(因为这个值都是跟在URL地址后

面的,会进行urlencode编码,都是文本,所以没有类型之分)

8、自动重定向:直接跳跃到最终的地址上,查看结果树中看不到中间过程,所以无法提取到中间过程的数据。【一般不勾选】
9、跟随重定向:默认勾选,查看结果树中看到重定向的过程,而且我们可以提取过程中的数据。
10、使用keepalive: 默认勾选,使用http的长连接;不勾选,就是短连接。(http协议默认是长连接协议,连上之后保持一段时间再释放。节省TCP三次握手和四次挥手的资源消耗,默认是长连接
11、对post使用multipart/form-data:文件上传的接口需要勾选这个二进制流的数据格式

2.3 添加消息头管理器

线程组右键 --> 配置元件 --> http信息头管理器

注:

如果是json消息体数据,必须添加消息头,写上 Content-Type:application/json;

application/json :json数据,请求体为json就一定要配置添加消息头

application/x-www-form-urlencoded : 表单数据,可以不加content-type请求头

form-data:post方法提交表单数据,可以不加content-type请求头

还有其他的请求头是否要加看开发接口封装: 接口文档 + 抓包+沟通开发确认

2.3 添加查看结果树

线程组右键 --> 监听器 --> 查看结果树

发送请求成功会出现如下信息

注:查看结果树的结果检查

1、绿色,仅仅代表网络成功,服务器收到并处理了请求;http的响应状态码为 1xx 2xx 3xx,不代表结果符合预期,要进行响应结果的确认 判断接口是否执行通过。

2、红色,仅仅代码网络请求失败,响应状态码为 4xx\5xx。

3、HTTP取样器结果分析【单位是ms】

3.1 load time加载时间=响应时间:

从发送请求到收到最后的响应时间,所花费的时间,即响应时间(RT)

3.2 Latency延迟时间 <= 响应时间:

从发送请求到收到第一个响应【报文太大,需要分组分包发送】,所花费的时间。

3.3 connect time(连接时间):建立连接所花费的时间,例如TCP的三次握手。

http协议不太熟悉的同学,可以参考(7)http请求、https请求详解-CSDN博客

4、如果响应结果是中文乱码:需要修改jmeter配置文件

4.1 进入Jmeter的bin目录下,找到jmeter.properties文件,

4.2 将#sampleresult.default.encoding=ISO-8859-1的注释去掉,

4.3 改成:sampleresult.default.encoding=UTF-8,

4.4 重启Jmeter,会再次重新加载配置文件

2.4 拓展介绍

右上角的运行结果:

前面是运行时间

三角形: Jmeter工具的日志,运行报错红色的数字

后面的数字:目前正在运行的线程数 / 将要启动的线程数 【负载测试】

http请求默认值:
1、多个接口的公共部分可以放在默认值里,简化配置。就不用给每一个接口添加一个(2.3 添加消息头管理器)
2、如果接口本身也配置了消息头管理器,根据就近原则以接口自己的配置为准发送

相关推荐
qq_433716952 小时前
压力测试Monkey命令参数和报告分析!
自动化测试·selenium·测试工具·单元测试·pytest·接口测试·压力测试
林中伊人3 小时前
Jmeter的简单使用
jmeter
yeki_307 小时前
JMeter工作区介绍
jmeter
天才测试猿8 小时前
基于jmeter+perfmon的稳定性测试记录
自动化测试·软件测试·python·测试工具·jmeter·单元测试·压力测试
nanzhuhe8 小时前
jmeter分布式原理及实例
分布式·jmeter
小白成长记Ymr1 天前
使用Beanshell前置处理器对Jmeter的请求body进行加密
jmeter
小码哥说测试1 天前
接口自动化入门 —— Jmeter实现在接口工具中关联接口处理方案
自动化测试·selenium·测试工具·jmeter·压力测试·性能测试
ramsey171 天前
jmeter-AES加密
java·jmeter
kehua_gao1 天前
JMeter 5.6.3 jdk 1.8 不能录制https网页脚本的解决办法
java·jmeter·https