1、下载地址

http://archive.apache.org/dist/jmeter/binaries/

2、修改语言

默认是英文,找到Options -> Choose Language -> chinese(simple)

3、常用基本概念

线程组:一系列http请求的组合吧。
HTTP请求:用于调用接口,设置好请求IP、端口、接口等
配置元件:里面包含很多元素,如:请求头等
监听器:监听请求信息,如:查看结果树,聚合报告
查看结果树:用于查看请求的信息,如请求体,返回值,请求头等
聚合报告:常用于压力测试中,给出一些结果,如:90%的请求耗时,QPS等
前置处理器:请求前的一些处理,需要写脚本
后置处理器:请求结果处理,需要编写脚本

4、核心介绍

1、请求结果获取

//获取响应代码
String statusCode = prev.getResponseCode(); 
//获取响应body内容
String response_body = prev.getResponseDataAsString(); 
//获取响应头
String response_headers = prev.getResponseHeaders();   
 //获取响应信息
String response_reason = prev.getResponseMessage();  

log.info("=====响应代码:=====>>"+statusCode);
log.info("=====响应body:=====>>"+response_body);
log.info("=====响应头:=====>>"+response_headers);
log.info("=====响应信息:=====>>"+response_reason);

2、引用外部jar包

将打包好的包放入到jmater安装目录的 lib目录下,然后代码中引用包就行。
jar包放入lib目录下,需要重新启动项目,否则报错

3、聚合报告的含义

1、Label:请求的名称,就是脚本中Sampler的名称。

2、#Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次。

3、Average(平均值):默认情况下是单个Request的平均响应时间,当使用了Transaction Controller(事务控制器) 时,也可以用Transaction的时间,来显示平均响应时间 ,单位是毫秒。

4、Median(中位数):50%用户的响应时间小于该值。

5、90% Line(90% 百分位):90%用户的响应时间小于该值。

6、95% Line(95% 百分位):95%用户的响应时间小于该值。

7、99% Line(99% 百分位):99%用户的响应时间小于该值。

8、Min(最小值):最小的响应时间。

9、Maximum(最大值):最大的响应时间。

10、Error%(异常%):错误率=错误请求的数量/请求的总数。

11、Throughput(吞吐量):默认情况下表示每秒完成的请求数(Request per Second)。

12、Received KB/sec (接收数据):每秒从服务器端接收到的数据量。

13、Sent KB/sec(发送):每秒发送到服务器端的数据量。

一次测试结果示例
1680859715140.png
4、线程组的一些参数含义
1680859757983.png
线程数:是指总共开启多少线程,图中是10个
Ramp-Up : 多少秒启动
循环次数:勾选是永远,不勾选是按数字进行循环,图中是500次循环

4、脚本示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

//提取响应内容
String statusCode = prev.getResponseCode(); //获取响应代码
String response_body = prev.getResponseDataAsString(); //获取响应body内容
String response_headers = prev.getResponseHeaders();   //获取响应头
String response_reason = prev.getResponseMessage();   //获取响应信息

log.info("=====响应代码:=====>>"+statusCode);
log.info("=====响应body:=====>>"+response_body);
log.info("=====响应头:=====>>"+response_headers);
log.info("=====响应信息:=====>>"+response_reason);

JSONObject jsonObject = JSON.parseObject(response_body);
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
for (int i = 0; i < jsonArray.size(); i++) {
  JSONObject arrayJSONObject = jsonArray.getJSONObject(i);
  String idString = arrayJSONObject.getString("id");
  log.info("=====解析i:"+i+"结果:=====>>"+idString);
  vars.put("id",idString);
}