关闭

接口自动化测试落地实战(下)

发表于:2024-2-19 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:喻峰    来源:稀土掘金

  三、接口测试自动化
  为什么要将接口测试实现自动化
  为了提升项目质量,我们将接口测试纳入了质量管理体系,在提升了质量的同时但也增加了项目的交付时长,与之前相比,项目的平均交付周期多了0.5天左右,业务方对此不太满意并希望可以如期交付。我们通过分析项目开展中的各个时间节点后发现,绝大多数的时间都消耗在了回归测试上。因此如何利用平台工具缩短回归测试时间,缩短项目交付周期成了我们需要立即解决的问题。
  接口测试自动化方式的选择
  为此我们调研了一些开展接口自动化的常用方式,并对比了优缺点。
  基于Pytest编写用例效率高,且Python语法优雅简单、第三方库丰富、支持多种编程范式、可以调用JAVA,C等语言编写的模块、学习门槛低等优势下,我们结合公司目前的业务规模和复杂程度最终选择了以Pytest为核心来开展接口自动化。
  接口自动化框架介绍
  该框架围绕Pytest为核心开发,其分层结构图如下所示:
  框架遵循测试脚本与测试数据隔离的原则,使用者安装依赖后,在其项目中编写接口定义以及测试数据即可。对于接口测试数据的编写,框架提供了TestCase类,封装了发送HTTP请求的常用参数以及对响应的断言等,TestCase类结构如下:
  自动化项目在运行完成后,框架会收集运行数据并在我们的测试平台上展示详细的测试报告,包括接口定义,入参,预期以及实际响应,断言等,如下所示:
  基于以上的步骤,自动化项目运行的整体流程如下:
  效果评估
  自2021年推行接口自动化以来,我们组织了多期关于python语言,pytest框架以及自动化框架的培训,并在1.0版本的框架上持续迭代并增加了许多新特性,如自定义断言,接口用例串联,链路追踪,运行失败通知等,并将自动化用例编写数量、自动化用例运行成功率、自动化发现的有效BUG数纳入绩效考核指标。
  基于此框架,测试同学可以在接口测试阶段直接写自动化用例进行测试,也可以在接口功能稳定后编写自动化用例。截至到目前为止,测试同学已经为65个应用写了约上万条自动化用例。得益于测试同学投入了大量时间对自动化测试的持续维护,通过自动化测试,后端应用中核心场景回归测试时间缩短到了5分钟之内,项目的交付周期减少了1天左右,项目的平均交付周期减少了约0.5天,受到了业务同学的广泛好评。
  四、接口测试自动化+AIGC
  接口自动化在提高了回归测试的效率的同时也存在一些弊端,最为显著的一点便是需要投入大量的时间维护测试脚本,遇到运行失败的情况也需要花费精力排查原因。针对于前者,我们发现AIGC在代码生成方面有着天然的优势,且在开发领域已经出现了例如github copilot等反响不错的优秀工具。所以我们希望借助AIGC的能力帮我们减少一部分编写测试脚本的时间。
  思路
  我们在Prompt中传入了接口的定义、基础的验证点,入参的类型,并要求GPT根据入参类型生成一些测试数据,Prompt内容如下:
  ChatGPT生成的代码如下所示,与测试同学在接口自动化项目中编写的脚本相差无几,且运行成功率达到了90%以上,后续修改只需要加入测试数据和验证点即可。
  基于以上pytest代码的正确生成,我们决定在测试框架中提供了利用ChatGPT批量生成测试脚本的能力,大致思路是解析swagger接口文档获取接口定义,根据接口定义组装Prompt,再调取ChatGPT接口生成代码并写入测试脚本文件。
  效果评估
  ChatGPT生成测试代码的功能加入测试框架中后,利用此编写测试脚本的时间有了明显的缩短,以一个应用119个接口为基准进行对比,常规手工编写测试脚本大约需要4小时左右,而通过GPT批量生成测试脚本与常见的测试数据只需要30分钟。
  实验数据
  效果对比数据
  五、总结及展望
  自2021年开展接口自动化以来,测试同学经过了一系列的培训以及学习,已经可以独立的完成项目中接口自动化工作并可以发现潜藏其中的问题。尤其对于功能测试同学而言,熟悉了对应接口的数据流转、逻辑交互后,在系统测试阶段便可以从更丰富的视角,更深入的角度来发现可能存在的缺陷。
  对比20年初,项目交付周期环比减少了约0.5天,核心应用的行代码行覆盖率维持在45%左右,自动化脚本BUG发现率约60%左右 (计算公式:自动化测试发现的bug数 / 有效bug数),偏中台纯服务端的应用BUG发现率更是达到了80%。通过接口自动化的有效开展,成功地解决了回归测试繁琐易出错且效率慢的问题。
  结合ChatGPT的接口自动化测试目前正处于探索尝试阶段,虽然减少了一部分测试脚本编写时间,但是还未能完全解决自动化测试维护成本高,排查问题花费时间长的问题,对此我们希望未来可以借助ChatGPT的能力分析自动化出错的日志,并利用一些机器学习算法预测出错的分类,并能够给出合适的修复建议,实现自动修复。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号