四、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、如果接口本身也配置了消息头管理器,根据就近原则以接口自己的配置为准发送

相关推荐
文人sec10 小时前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung2 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流2 天前
jmeter使用技巧
jmeter
春时似衿里2 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书2 天前
JMeter的安装部署
jmeter
程序员杰哥2 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎2 天前
Jmeter测试
jmeter
卓码软件测评2 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao3 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥3 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter