Jmeter 一般理解为轻量级的性能压力测试工具,主要场景应用在单接口测试,也可以做负载的业务场景测试;
Jmeter接口性能测试流程:
1、接口信息确认,确认接口能正常调通并正确返回数据(一般可借助Fiddler,Postman等辅助工具)
2、创建测试计划 添加:Test Plan —> 添加 Thread Group —> 添加Http Request(即接口) —> 添加Http cookie/Header —> 添加Assertion —> 添加 listener
基本的接口性能测试,只需要上面6个步骤即可,如下图:

2.1、Test Plan
如下图,输入Name即可,一般不需要使用User Defined Variables等其他选项配置

2.2、Thread Group
添加线程组,设置用户并发数量及加压方式等信息,如下图:

Name:一般输入接口名称
Number of Threads (User): 就是并发用户数
Ramp-up period (Seconds): 就是加压方式,比如上面并发用户数200,Ramp-Up period 设置为100,理解就是200个虚拟用户要在100秒内全部加压,即:每秒加压2个虚拟用户的意思。
Loop Count: 循环跑多少次,比如设置1000,那么200Vu,总共就会调用200*1000次接口进行测试; Infinite,表示一直跑,直到手动点击Stop,这个可能会导致失败的接口,应你手动点Stop时,还会有VU正在跑,突然Stop了,可能会有Scoket closed 的错误,一般建议选infinite时,启用Duration(seconds),指定跑多少时间,这样不会有socket closed错误
2.3、Http Request(即接口)
添加要测试的接口,如下图所示:

Name:一般输入接口名称
Protocol: 协议,我们测试的接口基本都是http或https协议
Server Name or IP:被测接口对于的域名或者IP
Port Number: 端口,有就输入,没有就空着
Http Request: 请求方式,一般Get 或 Post
path: 就是接口路径,根据接口实际输入
Conent encoding: 编码类型
parameters: 一般就是接口的请求数据,比如请求body
输入上面的基本信息,要确保:Protocal + Server Name or Ip + Port Number + Path, 这几部分拼接起来就是接口的完整绝对URL地址
2.4、Http cookie/Header
要使接口能正常调用返回数据,一般都有进行身份验证,也就是添加接口的header和cookie等信息
一般可以首先在Fiddler或Postman里调式接口,看需要哪些Cookie和Header,然后添加到Jmeter里来即可,如下图:


2.5、Assertion
在进行接口测试时,不能只凭返回了http code 200,就认为接口正常了,200只表示接口调用成功了,但并不能证明接口就返回了预期的数据,所以一般我们要确保接口返回了我们想要的数据,才认为接口是通过的。
这个验证过程就是:Assertion(断言)
断言有很多种,我们在接口性能测试过程中,一般使用文本断言就可以了,就是调用接口后,我从接口返回的body里去找一个指定的字符串,如果找到了这个字符串,那就认为接口是成功了且正确返回了数据。比如查找地块的接口,我知道如果接口成功了,Response Data 的body里会有地块名称,那么我就把指定一个地块名称(比如:地块1)当成断言的字符串。


如上图,那么当执行测试时,如果从接口返回的body里找不到字符串“地块”,那么Jmeter就会判断接口Failed,就算返回的Http code 是200
2.6、listener
listener 就是监听的结果,也就是我们要的测试结果指标。
一般简单的接口测试,我们基本关注的指标有这结果:响应时间,TPS,并发用户数(这三个指标Jmeter本身没有对应的Listener或不好用,可以找三方的插件),服务器资源使用率,聚合报告,Summary Report等,如下图:

2.7 body data 参数化
添加cvs data set config 组件

请求里的data body 用cvs data set configf里的参数名就可以

参数文件为csv格式,格式如下:
{"agent_id": "5677437a0bb811f0981450ebf6bd1b4d","deep_think": "N","query": "水稻有几个生育期?","stream": true}
{"agent_id": "5677437a0bb811f0981450ebf6bd1b4d","deep_think": "N","query": "浙江地区水稻几月份收割?","stream": true}
{"agent_id": "5677437a0bb811f0981450ebf6bd1b4d","deep_think": "N","query": "水稻怎么施肥?","stream": true}
{"agent_id": "5677437a0bb811f0981450ebf6bd1b4d","deep_think": "N","query": "水稻怎么防治虫害?","stream": true}
3、点执行按钮,就可以直接执行测试了,先查看接口返回数据对不对,确定接口正确返回数据了,再执行压力测试

