用JMeter替换Postman

JMeter简易入门指南

Posted by Steve on March 17, 2021

由于安全等原因,需要弃用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日:初稿。