自动化测试系列之——接口测试篇

Posted 麒麟敏捷社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试系列之——接口测试篇相关的知识,希望对你有一定的参考价值。

作为一个敏捷开发团队中程序员,最怕的问题是什么?毫无疑问:BUG。对于程序员来说,如何及时的发现BUG,处理BUG,对团队整体进度有着很大的影响。在此过程中,测试就显得尤为重要。『麒麟ADCloud项目团队从UI自动化测试和接口自动化测试两方面来实现软件测试,保证软件的可靠性』。


本文主要介绍项目团队的接口自动化测试。众所周知,接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。针对现阶段麒麟ADCloud项目团队接口测试自动化程度不高,压力测试不完善,测试体系分散等相关问题,提出合适的自动化测试接口方案。『旨在实现自动化测试持续集成,由此减少回归测试人力成本与时间,缩短测试周期,支持后端快速发展需求』。


现阶段存在很多的自动化接口测试方案,例如python自建测试系统,postman在线接口测试,robotframework自动化测试方案等。麒麟ADCloud项目团队使用了SwaggerUI+Jmeter自动化测试方案,该测试方案的优点在于:

1、合适的投入产出比。

如果选择python新建一个新的测试系统,那么将消耗大量的开发成本,投入产出比例较高。而Jmeter现今已是较为成熟的自动化接口测试工具,使用起来投入产出的比例较合适。


2.友好的使用界面。

清晰的使用流程。Robotframework也可以用来做自动化接口测试,但是使用起来的语法较为复杂,不易理解。Postman界面比较友好,使用也简单,但没有相关的断言验证步骤。


3.便于性能压力测试。

自动化接口测试不仅仅是测试平台的相关接口,对于多用户高并发来说,性能压力测试更是系统稳定性的主要保障手段。Jmeter在性能压力测试方面有成熟的经验。


麒麟ADCloud项目团队测试的接口主要为服务器接口测试。服务器接口测试是指测试浏览器与服务器的接口。用户输入的数据是输入到的前端页面上,通过http协议的get与post请求来实现前后端的数据传递。服务器接口测试主要是ADCloud项目本身前后端接口之间的测试。由于ADCloud项目主要用于ADCloud项目每次上线时接口测试。


 
麒麟ADCloud接口测试案例整体思路

1、分析测试需求。将麒麟ADCloud项目团队的整个后台代码进行接口的梳理,整理出接口文档,可以用相关工具SwaggerUI直接同步导出接口文档。SwaggerUI是在线整理接口的工具,所以使用该工具,可以检测到每次新更新的接口。


2、整理测试案例。从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点。


3、评审测试案例。和开发人员一起对接口测试案例进行评审。


4、整理数据文档。结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的数据文档。


以接口测试案例文档和csv格式的数据文档为基础,编写测试用例。测试用例编写主要用到边界值法,正交表等设计方法,以黑盒测试的思路将接口测试用例整理出来,由此为依据做接口测试案例的自动化案例开发。SwaggerUI生成的接口文档如下图所示:

自动化测试系列之——接口测试篇

 
麒麟ADCloud接口测试案例详细分析

1、发送请求

自动化测试系列之——接口测试篇

2、输入结果断言

在接口测试用例当中,断言是及其重要的一环。编写断言就是预先设定好接口的返回类型和返回参数,由此来作为接口是否稳定成功的依据。根据编写的发送请求,给出服务器或是前端返回的数据,将返回的结果录入结果断言。

自动化测试系列之——接口测试篇

3、验证结果

我们团队利用查看结果树对发送的请求和结果断言进行匹配验证。执行测试用例后,查看接口返回的接口数据是否正确。如果一致,说明该接口测试执行成功,反之亦然。查看结果树可以详细分析整个线程下每一个接口的所有参数。如果需要进行整体分析,我们使用概要报表,可以统计整个测试结果,并写入一个测试报告,生成一份测试报告文件。


 
拓展:Jmeter并发压力测试

我们团队不仅验证接口的正确性,更对接口进行性能压力测试。设置多用户使用场景或者高并发场景,看在设定的场景下能接口是否能够正常工作。现今ADCloud系统用户已经达到800多人,每月平均构建数达到3000多次,所以性能压力测试对于ADCloud系统至关重要。利用Jmeter并发压力测试得到的测试报告如下图所示:


 
拓展:Badboy录制功能

在整理接口时,由于后端工程中的接口数目相对较多,人工整理接口详情较为复杂。在使用swagger UI整理出接口清单后,还可以使用Badboy对接口进行分模块录制操作。现阶段还有很多相关浏览器插件,也能对各种请求响应进行录制。但如果在生产环境中,接口如果进行了安全加密工作,那录制接口将无法进行。我们项目团队的接口测试主要在测试环境进行。


 
拓展:ADCloud接口测试流水线

ADCloud项目现已经构建好一站式发布的流水线,并且专门构建了接口测试和性能测试的流水线。对流水线进行构建后,接口用例会在服务端自动执行,执行完毕后,生成接口用例的测试报告。下载并查看测试报告,可以对接口测试的结果进行分析和存档。


总结

在我们麒麟ADCloud项目团队使用SwaggerUI+Jmeter做自动化接口测试时,我们不仅保证已有的接口测试功能实践,还积极探索其他的扩展功能,例如接口并发,接口切换等功能。『团队能够做到开发与测试同时进行,保证软件的可靠性,平台的稳定性。』最终的测试目标是构建标准的接口测试用例,每次迭代上线时,运行接口测试用例,能完全覆盖软件的重点接口,最大限度的保证上线成功率。





以上是关于自动化测试系列之——接口测试篇的主要内容,如果未能解决你的问题,请参考以下文章

Python接口自动化之unittest单元测试

Python接口自动化之登录接口测试

软件测试:Python接口自动化之unittest单元测试

接口自动化测试系列之PHPUnit-接口测试的步骤

Python接口自动化测试之cookiesession应用

接口自动化测试系列之PHPUnit-POST请求接口测试方法