为什么要有这次测试
起因在于在开发中遇到的一个问题,要用线程池执行100多个HTTP请求,但是有时候都成功,有时候个别响应的数据不完整,被截断了。这种错误不是必然发生的,于是就想弄明白是接口的问题还是代码的问题,就有了这次测试的旅程。
测试要达到的效果,批量执行111个请求,且要使用3个线程来并发请求。
准备
由于平时都是使用Postman,于是第一时间就想起了它,开始在搜索引擎输入"postman批量请求",会有很多的答案,找了几个观看之后发现都需要创建关联的参数文件(txt或者csv或者json),这里我选择了csv,至于为什么选择csv,我也忘了😀。于是万里长征第一步就变成了创建一个有数据的csv文件。
首先有一个接口返回一个集合,集合有111个元素。我拿到每个元素的id再去请求详情接口,也就是创建的csv文件里要包含这些111个元素的id。于是就搜索了js导出csv,于是找到了一个相对简单的方案Javascript:使用js将数据导出到excel/csv,
关于csv文件格式可参考这篇文章,彻底理解使用JavaScript 将Json数据导出CSV文件
Postman
Postman模拟批量请求要用到Collection和Runner
- iterations运行次数,这是根据你表格中写的数据行数而定的,有多少行就写几
- Data项,便是选择你创建的表格,选择完可以预览一下,然后就可以点击运行了。
- 如果需要对结果进行校验的话,也可以使用Postman的断言,参见官方文档
- 实现了批量请求,但是没有使用3个线程。有博客说
iterations的值就是线程的数量。反正就是没达到要求 - 于是又搜索了
java 并发测试工具,最后选择了JMeter
JMter
-
Jmeter的下载安装也很简单,官方下载免安装版解压然后配置环境变量即可,
-
经过一段时间摸索,最终以下方案满足我的要求
-
在测试计划创建线程组,线程数量设置为3,其他默认
-
在线程组上新建逻辑控制器->循环控制器,循环次数选择无限循环
-
在循环控制器下分别创建配置元素->csv数据文件设置,取样器->http请求,如果需要可添加配置元素->http信息头管理
-
查看执行结果可添加查看结果树-输出结果可选择JSON输出,会把响应格式化输出
配置截图如下
-
1. 使用csv文件的时候可能会有数据格式错误,此时只需要把csv文件用文本文件打开,把多余的字符删除即可
我们不做知识的创造者,只做知识资源的整合者,🤭
这次还是学到了以下知识
- js导出数据到csv以及csv的数据格式
- postman批量请求
- JMeter的使用和并发请求
\