背景
我们最近在做一个图书管理平台,我主做的模块涉及到的后端接口有这几个:
- 获取 books 的接口
- 获取 likes 的接口
- 获取 collections 的接口
应对高并发?
当我们写一个接口时,并且部署时,一定要考虑一个问题:
- 你所做的产品访问量大吗?
- 你所写的接口和服务器能应对访问量大的场景吗?
其实就一句话:你的接口和服务器能应对高并发场景吗?
什么是高并发?举个例子,地铁只有一个入口,10 秒内能通过 1w 个人吗?
那肯定是不行的,那怎么办呢?那就要看你这个地铁入口怎么去做优化了
高并发模拟
但是你再怎么优化,你也不能马上就部署上线吧?肯定要在上线前,做一个规范的高并发模拟,看看你写的接口,以及你的服务器,到底能不能承受住这样的压力
Postman 高并发模拟
创建集合和接口
首先是创建一个集合,并且依次添加
- 获取 books 的接口
- 获取 likes 的接口
- 获取 collections 的接口
然后为了保险起见,在 Test 中添加断言校验
pm.test('返回数据是 books', () => {
console.log(pm.response.text())
pm.expect(pm.response.text()).to.include('books')
})
然后点击发送,我们会发现接口发送成功了,断言检验也通过了~~
高并发模拟
但是其实单个接口发送不是我们想要的,我们想要的是:
- 批量发送接口
- 频繁发送
所以需要用到 Postman 的 Runner 功能
然后进行以下操作:
- 第一步:将整个集合拖拽进测试区
- 第二步:设置并发次数
- 第三步:设置每次并发的延迟
- 第四步:点击按钮进行高并发模拟
并且得到结果报告:
Apifox : 更方便做高并发模拟
如果你想要有更好的可视化体验,更加方便快捷地操作,以及对于中文有要求的同学,可以选择 Apifox 进行高并发模拟,它提供了以下功能:
- 可视化的,清晰的调试选项
- 本身支持中文显示
- 模拟过程可视化展示
- 单个测试用例可点击进入查看
创建接口用例
可以通过可视化的后置操作选项,更加清晰地添加断言校验脚本。
创建测试用例
创建测试用例,可设置测试用例的优先级
开始高并发模拟
点击进入测试用例,并选择导入接口用例
右方的参数可设置一些重要运行参数:
- 运行环境
- 循环次数
- 循环次数延迟
- 遇到错误时忽略与否
点击运行按钮,可以清晰看到运行过程的可视化展示,包括:
- 运行数量百分比
- 通过率
- 失败率
- 未测数
等等
并且在运行完成后,也可获取到整体的:
- 总耗时
- 平均接口耗时
- 循环数
- 断言数
你也可以选择导出测试报告,并分享给其他同事进行观看
如果你想单独看某一个测试例子的具体数据,可以点击对应的更多详情按钮,进行查看
结语
Postman 与 Apifox 都提供了高并发模拟这一功能,但是个人 Apifox 有以下优点:
- 本身支持中文
- 可视化选择脚本操作
- 可视化展示运行过程
- 可查看单个运行用例的详细数据
知识扩展
了解更多 Postman 相关使用技巧: