Jmeter 安装
安装jdk
若机器上已安装jdk,则跳过;
若机器上未安装jdk,官网下载并安装jdk,地址:
https://www.oracle.com/java/technologies/downloads/
安装 Jmeter
- 下载Jmeter,地址:https://jmeter.apache.org/download_jmeter.cgi
- 解压 Jmeter 安装包
- 启动 Jmeter,双击…\apache-jmeter-4.0\bin\ jmeter.bat
- 启动Jmeter,界面中的测试计划Test Plan用于执行并发测试
Jmeter并发测试
Jmeter并发测试需要在测试计划中,添加线程组、配置接口请求、添加结果查看来执行并发测试和获取结果。
添加线程组
测试里每个任务都要线程去处理,所有的任务必须在线程组下面创建。
- 创建线程组
在 “Test Plan(鼠标右击)-> Add ->Threads (Users) -> Thread Group” 来添加线程组。
- 设置线程组
- Number of Threads (users): 一个用户占一个线程, 100 个线程就是模拟 100 个用户。
- Ramp-Up Period (in seconds): 设置线程需要多长时间全部启动。如果线程数为 200 ,准备时长为 10 ,那么需要 1 秒钟启动 20 个线程。也就是每秒钟启动 20 个线程。
- Loop Count: 每个线程发送请求的次数。如果线程数为 200 ,循环次数为 10 ,那么每个线程发送 10 次请求。总请求数为 200*10=2000 。如果勾选了 “永远”,那么所有线程会一直发送请求,直到停止。
- Duration: 线程执行的持续时间,如果设为300s,即300s后未执行完直接退出。
以100个用户并发登录为例,添加100个线程(即100个用户),请求循环次数设为1,持续时间可设置为300s。
配置接口请求
- 添加HTTP 请求
在 “Thread Group(鼠标右击)-> Add -> Sampler -> HTTP Request” 来添加HTTP请求。
- 设置HTTP 请求方法
- Name: 请求的名称。
- Protocol:协议方法,默认不填写为http协议,其他可填写的协议如https等。
- Server Name or IP:服务器地址,不包含协议,直接写IP,如172.16.40.22。
- 接口请求类型:包含 GET、POST等类型。
- Path:请求的接口地址,不包含协议、服务器地址,如/api/v2/oauth2/access-token.json。
- 接口可选择请求参数、请求报文、文件上传方式。
以用户登录接口为例,Sevrer IP设置为服务地址:172.16.40.22,用户登录接口的请求类型为POST,接口地址为/api/v2/oauth2/access-token.json。
- 添加HTTP请求头
在 “Thread Group(鼠标右击) -> Add -> Config Element -> HTTP Header Manager” 来添加HTTP请求头。
- 设置HTTP 请求头
添加方式可选择逐个添加变量,或从剪贴板中复制(Add from Clipboard推荐)。
在浏览器的开发者工具中获取接口的请求头数据,并从剪贴板复制至Jmeter。
Jmeter 参数化
参数可以从csv读取文件生成,实现变化的参数数据。
- 从csv文件中读取,需要在线程组里面添加配置元件 - CSV Data Set Config
在 “Thread Group(鼠标右击) -> Add -> Config Element -> CSV Data Set Config” 来添加Jmeter参数。
- 配置CSV Data Set Config
- Filename:csv文件的路径(csv文件中包含变化的参数值,以列区分不同的参数)
- Variable Name:参数名称,用于后续使用 ${参数名称} 调用参数
- Delimiter:csv文件中多个参数所使用的分隔符
- Recycle on EOF: 设置 True 后,允许循环取值
- Stop thread on EOF:设置True后,允许读取到EOF后停止线程
- 参数调用
在参数替换的变量中,使用${参数名称}的方法来替换变量。
以用户登录接口为例,接口的请求报文中username的值替换为${User}。
Jmeter 关联参数
接口请求之间存在参数调用,为了保存这个参数,可以通过建立 Jmeter 关联。比如用户登录接口返回的 token 信息,在添加用户、删除用户等其他接口时需要使用。
Jmeter 关联就可以保存这个 token 信息,便于其他接口使用。Jmeter 关联可以通过正则表达式提取器,来获取到返回结果中指定的值。
- 在需要提取返回参数的接口中,添加正则表达式提取器
在 “HTTP Request(鼠标右击) -> Add ->Post Processors-> Regular Expression Extractor” 来添加正则表达式提取器。
- 正则表达式提取参数
- Name of created variable:关联参数的名称
- Regular Expression:正则表达式匹配
- Template:匹配模板,通常写 1 1 1
- Match No.:匹配到的第几个值
- Default Value:匹配不到的时候的缺省值
提取规则:
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表 + 号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0 次或 1 次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0 次、1 次或者多次)
(.):贪婪模式,匹配尽可能多的字符
(. ?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。
以用户登录接口为例,请求接口的返回值中提取accessToken的值,在Regular Expression中输入"accessToken":“(.*)”,“refreshToken”,Match 中输入1。
在HTTP Header Manager中的Authorization输入Bearer ${accessToken},即可动态加载accessToken于请求头中。
添加查看结果
- 添加查看结果树
在 “Thread Group(鼠标右击) -> Add ->Listener -> View Results Tree” 来添加查看结果树。
- 添加聚合报告
在 “Thread Group(鼠标右击) -> Add ->Listener ->Summary Report” 来添加聚合报告。
- 添加响应时间图
在 “Thread Group(鼠标右击) -> Add ->Listener ->Response Time Graph” 来添加响应时间图。
执行并发测试
测试计划添加线程组、配置接口请求、添加查看结果后,可以执行并发测试,点击Start按钮。
- 查看结果树
在执行接口测试后,点击查看结果树可以查看接口返回信息,用于判断接口是否请求成功。
- 查看聚合报告
执行接口测试后,点击聚合报告中查看压力测试结果。
聚合报告的各属性说明:
- Label:每个 JMeter 的 element 的 Name 值。例如 HTTP - Request 的 Name;
- #Samples:样本数量。多少个请求;
- Average:平均响应时间(单位:)。默认是单个
- Request 的平均响应时间;
- Min:最小值,最小的响应时间;
- Max:最大值,最大的响应时间;
以100个用户并发登录为例,login请求的平均响应时间、最小响应时间、最大响应时间。
3.查看响应时间图
执行接口测试后,点击响应时间图中,查看响应时间详情,获取各请求样本的响应时间的折线图。
以100个用户并发登录为例,login请求的各线程(样本)执行的响应时间。