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(发送):每秒发送到服务器端的数据量。
一次测试结果示例

4、线程组的一些参数含义

线程数:是指总共开启多少线程,图中是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);
}