热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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



作为一个敏捷开发团队中程序员,最怕的问题是什么?毫无疑问: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做自动化接口测试时,我们不仅保证已有的接口测试功能实践,还积极探索其他的扩展功能,例如接口并发,接口切换等功能。『团队能够做到开发与测试同时进行,保证软件的可靠性,平台的稳定性。』最终的测试目标是构建标准的接口测试用例,每次迭代上线时,运行接口测试用例,能完全覆盖软件的重点接口,最大限度的保证上线成功率。






推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • 软件测试对于减少程序BUG有多大帮助?有经验的程序员通常认为测试与代码同等重要,测试可以减少代码变更或扩展的不确定性。测试应该方便阅读简单且能快速运行 ... [详细]
  • SAP接口编程PyRFC 调用 BAPI_FIXEDASSET_CREATE1创建固定资产
    本篇演示通过PyRFC调用BAPI_FIXEDASSET_CREATE1在SAP系统中创建固定资产,再一次体验一下Python与其它语言相比的简洁性。首先简单说明B ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 【云计算】Dockerfile、镜像、容器快速入门 ... [详细]
  • 节省成本配置网站HTTPS加密网址(6个免费SSL证书申请网站)
    节省成本配置网站HTTPS加密网址(6个免费SSL证书申请网站)在这篇文章中,老左整理目前看到的一些免费SSL证书,如果有需要降低成本配置网站HTTPS加密的,可以选择使用,需要的 ... [详细]
  • 云原生SRE
    序言年底了,没有分手的朋友的赶紧分了,所谓新年新气象,年年不重样。去留无意,望看风卷残云。。。运维不会消失,但 ... [详细]
author-avatar
快乐皇妃800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有