背景
最近由于工作原因,写了几个接口,分别是:
- 获取 user 的接口
- 获取 members 的接口
- 获取 friends 的接口
很快接口就写完了,然后进行了部署上线。
出现问题
上线之后由于这三个接口请求频率太高了,导致服务器直接报警
我们分析了几个原因:
- 接口性能问题
- 服务器不够强
但是其实作为一位开发,首要问题就是分析接口性能问题,那我们要怎么去分析呢?
这个时候接口压力测试就登场了
第二篇:Postman 压测
创建集合和接口
首先是创建一个集合,并且依次添加
- 获取 user 的接口
- 获取 members 的接口
- 获取 friends 的接口
然后为了保险起见,在 Test 中添加断言校验
pm.test('返回数据是 users', () => {
pm.expect(pm.response.text()).to.include('users')
})
然后点击发送,我们会发现接口发送成功了,断言检验也通过了~~
批量发送压测
但是其实单个接口发送不是我们想要的,我们想要的是:
- 批量发送接口
- 频繁发送进行压测
所以需要用到 Postman 的 Runner 功能
然后进行以下操作:
- 第一步:将整个集合拖拽进测试区
- 第二步:设置循环次数
- 第三步:设置每次循环的延迟
- 第四步:点击按钮进行压测
并且得到结果报告:
扩展知识:Postman 中文文档
Apifox —— 更方便做压测
如果你想要有更好的可视化体验,更加方便快捷地操作,以及对于中文有要求的同学,可以选择 Apifox 进行压测,它提供了以下功能:
- 可视化的,清晰的调试选项
- 本身支持中文显示
- 测试过程可视化展示
- 单个测试用例可点击进入查看
创建接口用例
可以通过可视化的后置操作选项,更加清晰地添加断言校验脚本。
创建测试用例
创建测试用例,可设置测试用例的优先级
开始压测
点击进入测试用例,并选择导入接口用例
右方的参数可设置一些重要运行参数:
- 运行环境
- 循环次数
- 循环次数延迟
- 遇到错误时忽略与否
点击运行按钮,可以清晰看到运行过程的可视化展示,包括:
- 运行数量百分比
- 通过率
- 失败率
- 未测数
等等
并且在运行完成后,也可获取到整体的:
- 总耗时
- 平均接口耗时
- 循环数
- 断言数
你也可以选择导出测试报告,并分享给其他同事进行观看
如果你想单独看某一个测试例子的具体数据,可以点击对应的更多详情按钮,进行查看
结语
Postman 与 Apifox 都提供了压测这一功能,但是个人 Apifox 有以下优点:
- 本身支持中文
- 可视化选择脚本操作
- 可视化展示运行过程
- 可查看单个运行用例的详细数据
知识扩展:
学习更多 Postman 相关使用技巧。