Postman是一款强大的API开发协作工具,它的功能十分丰富,但是在这里我们仅选取要运用的接口测试相关的功能。

安装Postman

点我去下载页面🔗https://www.postman.com/downloads/

这里作者是Windows环境,所以下载的是Windows版本的安装包。其实它还提供了vscode 插件命令行工具等不同的安装形式

认识Postman界面

首先是认识左侧选项卡底边选项卡

然后我们着重认识一下集合管理和创建接口测试

开始准备测试

创建集合

集合类似于文件夹,可以把一组相关的请求接口放在同一个集合里。

为了创建集合,我们点击图中的加号,创建一个空集合,然后右键集合再重命名为testForBlog

创建请求接口

如图,我们创建了一个请求接口,把它重命名为test1,调用的API默认为GET,然后输入了baidu.com的URL,发送之后我们就获得了响应报文。

这样就完成了一次接口的单次测试

使用其它请求接口

如图,Postman提供了多种接口

\

编写请求报文和测试脚本

如图,这里使用了我一个项目的一个查询接口,它使用POST接口,报文是JSON格式,响应也是JSON格式,我们将会依据此编写响应的测试脚本

戳我去官方的测试脚本文档🔗

配置URL和报文

配置测试脚本

关于测试脚本,有如下解释:

  • 创建测试:在Scripts选项卡中,每次调用pm.test()接口都会创建一次测试
    • 参数1:字符串,本次测试的名称,一般也用于顺便描述测试
    • 参数2:函数,可用lambda表达式,用返回值的true或者false表示本次测试的通过与否
  • 在测试中获取响应: Postman提供了pm.response用于获取本次请求获得的响应对象,可通过对它的成员的访问,完成对响应的访问
  • 格式化测试PM提供了简化的多条件测试方式,只需要在同一次测试中将不同的测试条件分行编写即可,示例如下:

官网的不同测试代码样例,其中汉化为个人汉化

  1. 返回状态码测试

    1
    2
    3
    pm.test("状态码测试", function () {
    pm.response.to.have.status(200);
    });
  2. 测试响应的报文为JSON格式,且有键"dish",没有键"error"

    1
    2
    3
    4
    5
    pm.test("响应的报文应该能够被正确处理", function () {
    pm.response.to.not.be.error;
    pm.response.to.have.jsonBody("");
    pm.response.to.not.have.jsonBody("error");
    });
  3. 测试响应正确,且有报文,且报文格式为JSON

    1
    2
    3
    4
    5
    pm.test("响应合法且有报文", function () {
    pm.response.to.be.ok;
    pm.response.to.be.withBody;
    pm.response.to.be.json;
    });

查看测试结果

以上的准备工作做好后,可以点击Send按钮获取响应并开始测试

单接口串行压力测试

在单次接口测试编写完成后,我们就可以开始使用Runner功能进行压力测试了

  1. 我们点击底边栏的Runner按钮,然后将待测试的集合拖动到工作区内

  1. 配置测试参数
    1. 选择待测试的接口(它们之间是轮询式串行运行),因为这里是单接口测试,所以只选一个
    2. 设置测试模式为Function
    3. 设置执行模式,这里使用手动模式(Run manually)
    4. 设置每个接口测试多少次
    5. 设置发送延迟
  2. 点击Run '集合名称'按钮

运行结果如下:

单接口并行压力测试

在单次接口测试编写完成后,我们就可以开始使用Runner功能进行压力测试了

  1. 我们点击底边栏的Runner按钮,然后将待测试的集合拖动到工作区内

  1. 配置测试参数
    1. 选择待测试的接口,因为这里是单接口测试,所以只选一个
    2. 设置测试模式为Performance
    3. 设置执行模式,这里使用手动模式(Run manually)
    4. 设置并发量(virtual user)的数量
    5. 设置发送延迟
    6. 设置并发测试的总时长
  2. 点击Run '集合名称'按钮

运行过程及结果如下:

小技巧

如果想要更加并发的测试,可以同时多个Runner实例