1.压测执行
压测脚本编写:压测一般分为录制和压测脚本编写, 录制一般只能录制简单的页面,对于逻辑复杂的录制下来就比较乱,因此更倾向于使用脚本压测; url在jmeter测试中可以当作是一个接口
用户并发与数据传递: 不挂token是无效的压测接口,因此数据传递也是非常重要的
压测结果分析、性能监控体系与指标收集:其他博客中会写到
分布式压测与JMeter静默运行:有时候发压机性能不一定好,一次一台不一定使系统能够达到瓶颈,因此需要使用分布式压测
2.压测实战
下载github应用代码,并启动,该应用为含有登录、查询菜单、下单,注销登录四个接口的一个应用demo
2)用户登录接口添加JSON Extractor
主要目的为了解析acess token, 登录接口返回response之后解析token, 在之后的接口里面去引用,在哪里去引用呢,通过接口中的header去引用;
变量名:access_token, 通过Json path expression 来解析token,注意语法
$.access_token
3)添加 HTTP Header Manager
通过接口中的header去引用access_token,添加access_token模版
${access_token}
4) 通过json assertion校验是否登录成功, 压测考虑要建立在接口正确性的基础上的,因此要对接口正确性做校验
校验接口返回的字段中
{ "access_token": "3b6754f00bb0063071c5b71ce2b56b4ed056a63493e785bea85b74c41ce200", "code": "200", "message": "login success" }
5)添加用户变量User Defined Variables
查询菜单接口定义可以写成如下引用变量的形式。这样当我们域名或端口有修改的时候就可以统一的在User Defined Variables中修改
6)5中的wait其实是用户自定义的变量,wait毫秒数,模拟用户停留时间,因此在每个接口中可以添加一个Constant Timer
7)订单确认接口
8) 压测考虑要建立在接口正确性的基础上的,因此要对接口正确性做校验,因此需要对重要的接口返回添加校验,接口返回如下:
{ "code": "200", "message": "Order success.", "total": 8 }
9)注销登录接口
10)添加用户数据CSV Data Set Config
用户数据的导入,filename可以写相对路径,也可以写绝对路径
11)添加监听器listener
这样压测数据就可以写入influxdb数据库中,并在grafana中图形化显示
12)图形化界面显示