由于安全等原因,需要弃用Postman迁移至JMeter。
下载及安装
macOS的话,安装及配置参考记从Windows办公迁移至MAC办公,Windows的话,直接官网下载就好了。
简单入门
新增一个Thread Group
右键Test Plan -> Add -> Threads(Users) -> Thread Group
因为是代替Postman,所以目前保持如下设置即可,不用调整线程数等参数

新增一个HTTP Request并尝试请求
右键Thread Group -> Add -> Sampler -> HTTP Request
将HTTP接口的相关信息填入其中,如下:

右键Thread Group -> Start或者通过上方的绿色播放按钮来执行。
查看结果并保留Response报文
通过上面的步骤,可以发送请求,但是请求发送的成功失败,啥情况,咱不知道。所以需要增加两个Listener来看下结果。
右键Thread Group -> Add -> Listener -> View Result Tree
右键Thread Group -> Add -> Listener -> Save Responses to a fail
此时再次尝试发送请求便可以通过View Result Tree来看到响应的结果了。

但是由于报文体中的内容并不能进行复制(或者说我暂时没有找到复制的方法),暂时通过Save Responses to a fail来将响应保存下来。

增加HTTP Header Manager
JMeter的话,相对Postman,很多东西需要自己维护好,若后端对于中文不识别,或者请求的报文体的格式没有正确识别的话,可能需要我们手动的维护下Header
右键Thread Group -> Add -> Config Element -> HTTP Header Manager

此时再次请求的话,可以在View Result Tree中的Request - Request Headers中增加了刚刚设置好的Header了。
这里我曾经遇到过一个Bug,当时使用了Add from Clipboard按钮,页面看起来一起正常,但是请求的时候就在Header中莫名其妙的增加了一个空格,导致后端一直解析出错。后来删除了之后重新手撸了一遍就好了。
简单的参数化
JMeter支持BeanShell的方式进行参数化,详细的使用方式参考官网,我这就是简单实现一个替换。
右键Thread Group -> Add -> Pre Processors -> BeanShell PreProcessor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//这是一个注释,token是xixi拼装了当前的时间戳。
String token = "xixi" + "${__time(,)}";
String name;
String age;
int flag = 2;
switch (flag) {
case 1:
name = "liutianyu";
age = "18";
break;
case 2:
name = "liuwuxin";
age = "108";
}
vars.put("token", token);
vars.put("name", name);
vars.put("age", age);
log.info(">>>>>>>>>>>");
log.info("刚刚发送的数据flag为:" + flag);
此时HTTP Request中需要做如下改造。

BeanShell PreProcessor中是可以打印日志的,日志通过JMeter -> Options -> Log Viewer来激活日志窗口。
更新日志
- 2021年3月17日:初稿。