jmeter接口性能记录
JMeter接口测试流程
1.获取接口文档
JMeter
1.创建测试计划
2.增加线程组
3.http请求
4.参数填入
5.断言
6.增加察看结果树
7.运行
作用域,元件在谁下面,作用域就是谁
登录请求前如果需要请求头cookie
添加一个访问首页的http请求,获取cookie
再添加一个cookie管理器,Cookie管理器要放到http请求之前的第一行(添加-》配置元件-》http Cookie管理器)
增加“断言”-》“响应断言”,在“要测试的模式”中点“添加”就可以了
加集合点,同步定时器“Synchronizing Timer”,当集合点时,可以看“聚合报告”的Average平均时间,可大概估算出性能
添加监听器“察看结果树”“用表格察看结果”“聚合报告”
性能断言,主要是断言是否成功例如:message=success
加请求头,“添加”-》“配置元件”-》“HTTP信息头管理器”
ip地址,端口都一样的,可以在线程组加一个请求默认值 “添加”-》“配置元件”-》“HTTP请求默认值”
存储token值,在获取token的HTTP请求下 “添加”-》“后置处理器”-》“正则表达式提取器” ,提取后就会自动保存变量
添加调试请求 线程组 “添加”-》“Sampler”->"Debug Sample" 就可以看到提取的变量值等信息,无需打印验证
使用变量的方式 ${变量值}
取随机值,点击 “菜单栏” “函数助手”-“选择一个功能”-》选择random函数,选择范围 最小值 和 最大值,可实现区间内的随机值
压测参数说明
如token只需要获取一次,可加一个“添加”——》" 逻辑控制器 "——》"仅一次控制器",再将HTTP请求放在 “仅一次控制器” 下,仅对每一个用户做一次,每个用户重复操作时不再访问
“仅一次控制器”,需要将请求放在控制器中,而无法将控制器放在请求中
“Switch Controller”控制器,Switch Value取值方式(0表示第一个请求,1表示第二个请求,依次类推)可参数化、放函数等灵活使用,请求也应该放在控制器下才管用
“吞吐量控制”,作用是分流,Total Executions指具体的,Percent Executions请百分比方式 吞吐量参数设为多少,就有多少个用户会跑控制器下的请求
不需要的控制器,可以右键 禁用
思考时间: “添加”-》“定时器”-》“固定定时器”,定时器一般在请求之前执行
“Constant Throughput Timer” 固定吞吐量定时器,模拟弱网下的情况,Target Throughput 目标吞吐量,指每分钟控制的请求数
性能测试的项目流程
1.需求场景分析
2.脚本开发(badboy录制、Jmeter代理服务器录制、Fiddler抓包、Fidder抓包导出jmx)
3.实战操作
并发数的计算是有公式的
badboy录制,“输入网址”-》“点击红色圆录制”-》“点击file”-》“Export to Jmeter”
Jmeter代理服务器录制,“浏览器设置本地地址,端口8888的代理”-》Jmeter "添加"-》“非测试元件”-》“HTTP代理服务器”
Http代理服务器 “目标控制器” -> "测试计划》线程组"
Http代理服务器 Requests Filtering 过滤掉不需要的请求 排除模式(正则表达式,例如:.*\.jpg.* .*\.txt.*)
HTTPS请求,需要浏览器信息Jmeter, 在Chrome 设置 隐私设置和安全性 管理证书 受信任的根证书颁发机构 导入 (证书在Jmeter安装目录bin下)
Fiddler抓包开发脚本
1.过滤 Filter Hosts 选择"No Zone Filter" "Show only the following Hosts" 下方填写 (例:192.168.99.123,只抓这个IP地址的请求) 如果有多个,用分号隔开
设置好之后,需要点执行 “Actions” ->"Run Filterset now"
找请求通常是看原型 即request response 的 Raw
通过浏览器操作,查看响应内容 与Filler抓包对比(find查询) 可正确找到请求
fiddler 按M键,可备注请求,再通过插件导入Jmx文件给Jmeter (飞测QQ群可下载插件)
Jmeter测试参数化
(1)用户自定义变量
用户自定义变量中的定义的所有参数的值在测试计划的执行过程中不能发生取值的改变,因此一般仅将测试计划中不需要随迭代发生改变的参数(只取一次值的参数)设置在此处。
(2)用户参数 (在“前置处理器”中添加)
与用户自定义变量不同的是,用户参数列表中的参数取值可以在测试计划执行过程中发生变化。
修改线程数即可按顺序循环执行
(3)CSV data set Config(“配置元件“中添加)
对“输入用户名和密码”http请求进行CSV参数化进行演示
上图,如要使用变量,直接${name} ${password}就可以使用,并且会依次取值
Filename:获取参数值的文本文件。
File Encoding:文件编码方式,一般采用utf-8。
Variable Names:从文本文件中获取内容的参数列表。参数列表中可以包含多个参数,用逗号分隔。
Ignore first line: 忽略第一行内容
Delimiter:文本文件中分隔记录域的分隔符,“\t”表示tab键。
Allow quoted data?:当该项值是False时,CSV Data Set Config原封不动地将文本文件中相应域的值取为参数值;当为Trues时,将处理文本中用双引号引用的部分,把双引号中的内容取为参数值。
Recycle on EOF:当该项取值为True时,允许循环取值。当文件中的全部记录被取完后,重新从文件的第一行取值。为False时,根据stop thread on EOF的取值决定测试计划的执行行为。
Stop thread on EOF?:当Recycle on EOF为true时,无论该项取何值,测试计划的执行行为相同;当Recycle on EOF为False时,该项值为True时,文件记录取完后,线程停止运行,如果该项取值为False,则线程后续执行时给定参数的取值为<EOF>。
Recyclon EOF |
Stop thread on EOF |
结果 |
True |
True/False |
循环取值 |
False |
True |
取值完毕,停止线程 |
False |
False |
取值完毕后的值为<EOF> |
Sharing mode:
All threads,该测试计划的所有线程共享csv文件中的记录(所有线程按照顺序取文件中的记录)。
Current thread group,该测试计划中的每个thread group中的所有线程共享csv文件中的记录。
Current thread,每个线程各自独立使用csv的记录