Jmeter 配置元件
- CSV 数据集配置
- HTTP Cookie 管理器
- HTTP Header 信息头管理器
- 增加多个用户案列
使用Jmeter发送请求的时候,需要配置元件,配置请求Header、Cookie、数据集合等。可以模拟多个在线用户登录,修改请求头数据。
CSV 数据集配置
CSV Data Set Config元件可以从文件中读取数据,将CSV作为测试数据输入源,可以构造不同的输入参数给不同的线程使用。官方手册地址https://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config
添加路径,右键选择需要添加的API接口 -> 配置元件 -> CSV DATA Set Config
主要配置项目的含义
- 文件名 Filename, 文件名,可以指定绝对路径或者相对路径
- 文件编码 File Encoding,文件编码,不配置,默认使用系统编码读取文件
- 变量名称 Variable Names,参数名字列表,需要用逗号隔开。如果不配置,读取文件的第一行作为参数列表
- 忽略首行 Use first line as Variable Names,设置了变量名称之后,配置这个才会生效
- 分隔符 delimiter, 每一行数据的分隔符
- 是否允许带引号 Allow quoted data, CSV 数据是否带引号
- 遇到文件结束符再次循环 Recycle on EOF, 如果配置为 True, 线程数大于数据行数,超过的部分从第一行重新开始读取数据
- 遇到文件结束符停止线程 Stop thread on EOF
- 线程共享模式 Sharing mode, 默认为所有线程共享,第一个线程读取第一行数据,第二个线程读取第2行数据
HTTP Cookie 管理器
cookie 用来识别当前请求的用户身份的,一般在登录验证之后,服务端返回给客户端,之后请求其它接口,客户端携带了 Cookie 就不需要再进行登录验证了。官网手册地址 https://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cookie_Manager.
- 默认情况下Jmeter 每个线程都有各自Cookie, 线程之间隔离的,但是如果手动添加的Cookie, 则所有的线程是共享的。
- 默认情况下Jmeter 会校验Cookie 不支持跨域的。如果需要跨域,需要配置
CookieManager.check.cookies=false
。比如登录认证服务器域名是a.test.com.cn, 其它请求的域名在 b.dev.com.cn - Cookie 不会在管理器页签显示的,可以在查看结果数,请求的内容中查看
查看结果树中有, Cookie Data
HTTP Header 信息头管理器
请求头配置器,可以在请求头中配置 token, 签名串等。官方手册地址
https://jmeter.apache.org/usermanual/component_reference.html#HTTP_Header_Manager
增加多个用户案列
本地启动一个web项目来测试,接口的响应速度,吞吐率。
测试项目地址 : https://gitee.com/3281328128/bootdo/tree/bootdo2.0/。
启动服务之后,显示的首页
可以先录制一下相关的接口,参考上一篇博客,如何录制接口Jmeter 测试脚本录制器-HTTP 代理服务器。我录制的结果如下
-
新建线程组
-
复制上一步录制的接口
先分析登录流程,可以发现,整个过程如下,(1)调用获取验证码接口 blog/getVerify (2)调用登录接口 blog/login(3)调用保存用户接口 user-add-new/sys/user/save。没找到合适的OCR识别工具去识别验证码,后端修改了生成验证码的逻辑,固定成了1234
-
配置相关的元件
(1)准备csv 源文件,第一行是参数的名称,user_name,password,email
用记事本打开的格式如图
(2)配置 CSV Data Set Config
只需要配置文件名,其它配置项用默认的即可。使用绝对路径,如图
-
配置接口参数
name : ${user_name}
username: ${user_name}
password: ${password}
email: ${email} -
配置监听器
在线程组下面添加查看结果树、聚合报告
-
设置线程的数量
这里需要模拟100个用户同时添加的接口的负载,设置成100,和CSV 的数据量保持一致。
配置完成之后,启动线程
在查看结果树看到请求的 cookie
在聚合报告查看接口的性能