背景
如果你是一个合格的开发者,当你开发完一个接口,并且部署到服务器上后,难道就不去管它了吗?
并不是的,我举几个例子:
- 你能保证你写的接口性能没问题吗?
- 你能保证你的服务器能承受住高并发吗?
所以,在你部署前,做一轮压测,去测试一下稳定性,这样才能减少线上的事故!
压测?
what?
压测即压力测试,通过压力测试您可以获取服务器的最大承受能力,以便实现更好地运营和开发。
why?
如果未来要迈向高级工程师,压测就是必备的技能之一,只有测试阶段进行了反复的压测及优化,最终投入生产环境才会更安全可靠,这样的团队才会更被客户单位所认可。
how?
最快捷的方式就是以模拟高并发的方式,去对你的服务器进行压力测试。
那我们要怎么低成本地去模拟高并发呢?不会真有人傻傻地去手动拿几十台电脑去请求接口吧哈哈哈哈哈~~~
所以我建议是用一些工具来进行压测,方便。快捷、省事、成本低
工具?
现在市面上用的比较多的工具有 Postman、Apifox、JMeter,接下来我给大家介绍一下~
JMeter
界面

添加线程组

添加请求

模拟多用户请求


查看压测结果

太麻烦啦!!
我用了JMeter一段时间,让我感觉配置起来太麻烦了,而且可视化程度也不足~~
所以我把目光转向了Postman、Apifox
刚好最近最近由于工作原因,写了几个接口,分别是:
- 获取user的接口
- 获取members的接口
- 获取friends的接口
正好需要对这几个接口和服务器进行压测~
Postman 压测
创建集合和接口
首先是创建一个集合,并且依次添加
- 获取user的接口
- 获取members的接口
- 获取friends的接口
然后为了保险起见,在Test中添加断言校验
pm.test('返回数据是 users', () => {
pm.expect(pm.response.text()).to.include('users')
})
然后点击发送,我们会发现接口发送成功了,断言检验也通过了~~

批量发送压测
但是其实单个接口发送不是我们想要的,我们想要的是:
- 批量发送接口
- 频繁发送进行压测
所以需要用到Postman的Runner功能

然后进行以下操作:
- 第一步:将整个集合拖拽进测试区
- 第二步:设置循环次数
- 第三步:设置每次循环的延迟
- 第四步:点击按钮进行压测

并且得到结果报告:

Apifox —— 更方便做压测
如果你想要有更好的可视化体验,更加方便快捷地操作,以及对于中文有要求的同学,可以选择 Apifox 进行压测,它提供了以下功能:
- 可视化的,清晰的调试选项
- 本身支持中文显示
- 测试过程可视化展示
- 单个测试用例可点击进入查看
创建接口用例
可以通过可视化的后置操作选项,更加清晰地添加断言校验脚本

创建测试用例
创建测试用例,可设置测试用例的优先级

开始压测
在自动化测试中,选择「性能测试」

右方的参数可设置一些重要运行参数:
- 运行环境
- 测试数据
- 并发用户数
- 运行时间
- 爬坡时间

你也可以选择导出测试报告,并分享给其他同事进行观看
如果你想单独看某一个测试例子的具体数据,可以点击对应的更多详情按钮,进行查看
结语
JMeter 配置起来有点麻烦,可视化程度也大大不足,所以暂时不考虑~
Postman 与 Apifox 都提供了压测这一功能,但是个人觉得 Apifox 有以下优点:
- 本身支持中文
- 可视化选择脚本操作
- 可视化展示运行过程
- 可查看单个运行用例的详细数据

知识扩展: