窥探性能的接口测试工具,性能优化的开端

686 阅读5分钟

对于后端程序员来说可能经常会有一些写接口的需求需要实现。比如以下几种情况:

①对接APP的接口调用

②H5页面的接口调用

③其他服务的接口调用,像webservice一类

接口开发算是非常常见的工作,但是我们在工作团队中意识到很多同学在接口开发过程中不能够有效地利用接口测试工具而导致效率非常低下。

推荐使用JMeter进行接口测试,理由如下:

①按照模块类别进行分组

②能够保存测试参数

③能够直观的观察到每个接口的请求和响应的细节,不论是请求成功或者失败

④可以对接口的测试结果根据需要选择可视化方案

⑤可以根据需要对接口进行压测

以上这几点基本上能够综合当前市面上各种各样测试工具的优点。不过本身来说JMeter也是测试人员常用的测试工具之一。

只是对于非测试人员可能并不太熟悉它,或者不知道如何使用它。其实它还是很好入门的。

下面举个例子,假如需要测试本地开发环境下所写所有接口的响应时间的情况下,如何使用JMeter来实现呢?

也许使用Fiddler对请求进行抓包能够观察到对应的数据,但是使用JMeter来说可能更加直观方便,并能够保存测试过程,以及测试结果所见即所得。

1.官网

image-20220718230031379.png (图片来自:jmeter.apache.org/

2.下载入口

image-20220718230117375.png (图片来自:jmeter.apache.org/download_jm…

3.windows上下载zip包,并且解压

image-20220718230445480.png

4.管理员身份运行jmeter.bat,打开jmeter的主界面,也可以将其创建快捷键到桌面,便于每次打开启动。如下:

image-20220718230556744.png

5.根据习惯设置语种,如下:

image-20220718230721516.png

6.可以使用测试项目名称作为测试计划的名称,并且保存,如下:

image-20220718231000281.png

7.添加线程组及线程组下的请求,如下:

image-20220718231244309.png

8.拿一个百家号的文章作为请求示例,如下:

image-20220718231547266.png

9.添加ViewTree察看结果图,如下:

image-20220718231621300.png

10.添加“用表格察看结果”,如下:

image-20220718231923923.png

11.最终的主要配置结果如下:

image-20220718232007655.png

12.点击启动按钮,执行完成后查看察看结果树和用表格察看结果,内容如下:

image-20220718232129575.png

image-20220718232219735.png

到这儿基本上整个过程基本完成。

但是这里需要注意的是:

①参数的配置方式是url携带,还是form表单,亦或是post请求的请求体参数,还有可能是对于请求的contenttype需要单独设置http头

②请求的类型是http还是https

③就是对于线程组的线程属性的配置,这里需要根据实际的情况,如果是开发环境下根据固定参数进行接口调试那么使用线程组和循环次数均设置为1即可。如果接口完成,需要对单个接口性能预估,就需要结合实际的场景,模拟并发的用户数量,启用多个线程模拟多个在线用户进行循环请求。适当选择循环次数即可。

④自己在开发环境下为了突出问题的情况下对接口进行压测,测试样本较多的情况下可以结合图形去分析现象,如下:

image-20220718232849886.png

通过这种方式,一方面能够在开发阶段对接口的调试,节省接口参数每次重复输入浪费的时间,这是最直观的优点。另一方面是针对涉及到的场景均可以保存对应场景的测试参数,这样在接口维护、修改之后,在提交交付之前,可以进行复测,也有的地方称这一动作为“回放”,这种情况下的复测就非常简单明了,因为它对于过程的保存,再次测试的时候只需要重新点击启动按钮即可,执行完成之后只需要查看结果进行确认即可。再者是针对自己的开发环境下的接口进行粗略压力测试的情况下,不用等到测试部的测试环节开始的时候才掌握接口的压力承受情况。可以通过单一接口或者简单场景的测试粗略掌握接口的实现情况。

但是需要注意的一点是,这里的接口测试侧重点是在开发环境下对于接口涉及业务的开发调试。它一定程度上可以通过增加线程数来进行接口压测。但是,这只是性能优化的冰山一角。它严格意义上来讲并不能称之为性能测试、性能优化。

原因是性能优化是一个系统工程,它的内容涉及到很多方面,比如软件、硬件、中间件。

但是从这儿的接口测试开始,最起码算是开始了性能优化的征程。针对性能优化来说,辅助的工具是必不可少的。比如如果我们需要掌握接口的性能,那首先就要让接口在测试环境中运行起来,然后使用visualvm、visualstudio、dottrace、netbeans profiler等等这一类工具去查看内存、CPU、线程等相关指标监控情况。

只有掌握了对应场景下的性能数据,才能够有针对性、有目的性的去分析解决性能问题。

前两篇文章分别简单描述了,内存管理的基本原理,堆栈的区别的基础概念。这一篇从接口测试的场景结合JMeter工具的样例使性能问题能够落地,促进性能问题的发现。后面会继续深入结合实际分析具体场景的性能问题的发现和解决。

我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿