在接口开发的过程中,当我们完成了接口功能的开发之后,还必须要保证接口能够长期稳定的运行。
那么这就对接口的稳定和性能提出了要求,要能抗得住大数据量,能应对高并发场景(具体要求视项目具体情况而定)。因此在接口基本功能开发完成之后,我们有必要根据项目正式上线后的场景预测对接口做相应的性能测试和压力测试。
提到接口性能测试就要提要本文的主角:大名鼎鼎的 Apache JMeter
Snipaste_2018-07-03_21-17-01.pngJMeter 基本介绍
JMeter 是 Apache 软件基金会(Apache Software Foundation )下的一款优秀的开源性能测试工具。是接口开发中最常用的软件之一,也可用作接口功能测试,但是更多的是被用来做性能测试。
其有以下优点:
- 开源工具,可扩展性非常好 ,用户可自定义调试相关模块代码
- 精心简单的GUI设计,小巧灵活 (但是我个人认为略丑)
- 纯 Java 开发,可移植性、跨平台性非常强
- 完全 swing 和轻量组件支持(预编译的HAR使用javax.swing.*)包
- 完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样
- 支持脚本取样器
- 出了 GUI 界面操作,还支持所有功能的命令行操作
- 支持的接口类型非常丰富,基本涵盖了市面上所有类型的接口
支持的接口类型,包括但不仅限于以下类型:
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
其实 JMeter 官网的文档和使用引导已经很详细了,只是全英文的文档看起来还是有些费力。
这里我以自己做的一个 Web Service 接口测试为例,简单介绍一下 JMeter 做接口性能测试的基本步骤。
JMeter 使用实例
首先下载就不说了,直接去 Apache JMeter 官网下载当前最新版本即可。
下载下来是一个压缩包,不用安装,解压后执行 /bin/jmeter.bat
即可启动 JMeter。
- 点击 File -> New 即可新建一个测试计划,给这个测试计划起一个名字,如下:
- 然后在刚刚新建的这个 Test Plan 上右键,新建一个 Thread ,然后继续新建一个 Thread Group
- 设置线程组,起一个名字
这里有几个参数比较重要:
-
Number of Threads(users):这个参数是同时发起请求的线程数,可以模拟用户数量
-
Ramp-Up Period(in seconds):这个参数设置请求之间的间隔时间,单位为秒
-
Loop Count:这个参数设置请求的重复次数,勾上
Forever
就是一直重复请求,直到停止脚本以上就模拟了50个用户在每隔10秒钟就会请求一次,每人请求10次的应用场景。(仅供参考)
-
在刚刚新建的线程组上面右键新建一个 HTTP 请求
新建一个请求 -
设置 HTTP 请求参数
一个典型的 Web Service 接口地址是这样的:
http://ebsmig.livzon.cn:2333/hgxp/ws/WsQualifyCheck?wsdl
这里我们需要把这些参数分别填入到请求中,如图中标识:
设置请求参数
- 使用 HPPT 请求测试 Web Service 需要发送报文给服务器,所以这里还需要设置一下请求内容的编码方式。右键刚刚新建的那个请求,点击 ADD,新建一个 Config Element,然后选择 HTTP Header Manager
然后新建一行,为我们的报文设置格式
Snipaste_2018-07-04_15-11-13.png-
经过这一番设置,我们的 web service 测试就已经可以跑起来了,现在我们需要添加报文和查看请求结果。
首先我们在前面设置的 HTTP 请求的 Body Data 那里添加报文:
- 然后我们在线程组上右键,添加接口请求监听器
如图所示,JMeter 提供了多种不同的监听器,这里我们选取最常见的三种监听器:View Result Tree、Aggregate Graph 和 View Result in Table
JMeter 结果查看
我们运行上面的请求,分别查看这三个监听器的内容。
View Result Tree
Snipaste_2018-07-04_15-28-15.png在这个监听器下我们可以查看每一个请求的详细内容,包括 HTTP Request 和 HTTP Response 的一些内容,包括请求的报文以及服务器返回的消息,如下图
Request Content
Snipaste_2018-07-04_15-29-56.pngResponse Data
Snipaste_2018-07-04_15-30-07.pngAggregate Graph
这个监听器反应的就是这次接口测试得出的接口基本的性能情况:
Snipaste_2018-07-04_15-33-41.png我们能够直接在这个监听器中看到接口的最大响应时间,最小相应时间和平均响应时间,以及错误率等信息,是帮助我们分析接口性能的重要信息。
View Results in Table
这个监听器详细的记录了线程组中每一个线程请求花费的时间、发送请求数据的大小和返回数据的大小
Snipaste_2018-07-04_15-42-30.png除了这三个监听器,如上面所示 JMeter 还提供了许多种不同的监听器,不同的监听器能够帮助我们侧重分析一个接口在不同方面的健康状况、性能状况和稳定性等等,这个就需要我们根据实际需求去使用和分析了,此处不再赘述。
网友评论