001.使用AI将自动化测试效率提升52%(搬运、翻译、总结)

57 阅读6分钟

原文出处:tech-blog.tabelog.com/entry/ai-fo… 转载背景:学习整体思路和AI相关AI实践,对部分非关键信息进行省略,无任何商业用途

背景

我们发起了一个项目,叫做「AI4QA」,在第一阶段中我们实现了手动测试用例:399件测试用例中,304件由AI生成。 但实际新的课题出现,即执行测试的时间占整体时间的50%+, 所以第一阶段的实践对整体效果的改善有限。 我们需要把执行测试这个环节AI化。 而实际上我们做到了。其结果是降低了78%。

用一个表格的表达:(译者注 这种量化能力值得学习

活动工作量(人月)占比改善项目
用例设计0.8021.4%-
用例编写0.8422.3%Phase1的AI化
用例执行2.1056.3%Phase2の目标
合计3.74100%-

先思考一个问题,为什么执行需要这么多时间

本质是一个小小的修改会带来非常多的回归测试。 作为一个餐饮预定产品,调整一个预约路径,需要进行的验证非常多。包括取消流程,资金返还,手续费的处理等等。 但作为核心业务流程,不进行验证是不行的。

所以针对不得不验证的,又非常多的回归测试进行 AI化节约工作量,势在必行。(译者注* AI是手段不是目的

整体的解决方案

一句话概括:复用第一阶段的手动测试用例生成的知识库,在Cursor中完成自动化测试脚本的自动生成,进而进一步走CI/CD的流程。

image.png

第一阶段生成手动测试用例的部分,不光是得到了手动用例生成的结果,更重要的是知识库的积累。 跟仓库一起在Github上进行管理。

具体我们再来看这张图:

image.png

阶段1中基于一系列输入完成测试知识库的生成,阶段二复用。

阶段二为了实现自动化测试,主要的输入,处理和输出如下。

输入有三:

  1. 测试用例
  2. HTML文件群
  3. 操作录制文件

处理有二:

  1. Cursor+自动化测试用例生成指南(知识库)
  2. 生成结果检查

输出有三:

  1. Gherkin Feature file: cucumber BDD 测试脚本
  2. Page Object: 自动化测试的页面文件
  3. Step Definition: 测试脚本

译者注*:背景说明,当前业务的自动化测试框架是 BDD模式的,Selenium + cucumber

为什么没有直接选择Devin,具备浏览器能力的AI Agent?

核心两点: 1、FlakyTest问题,测试不稳定,AI整体的思考过程导致每次测试的稳定性相当不可控 2、假装正确问题,针对软件测试领域,期待值必须符合预期来讲,很多时候,大模型会模糊正确

所以,现阶段,基于当前的LLM的成熟度等,选择的策略依然是这个流程不变: Selenium + Cucumber + CircleCI 这个选择可以带来四个好处:

  1. 使用过去运行很久的稳定的环境,自动化测试的稳定性得到保证
  2. 生成的代码质量可控,与原来积累的自动化测试代码统一管理
  3. 业务测试团队可以较快的上手
  4. 未来进一步发展到其他Agent上的空间依旧保留

译者注*:结合现场和现状,确定合适的测试策略,非常关键

如何提升使用AI的质量?

其核心就是我们过程在自动化测试和手动测试上积累的大量经验。我们作为 「自动化测试设计指南」进行管理和积累。

里面包括流程,架构设计,成功案例等等。 退一步讲,任何公司都可以学习我们的做法,但是如果没有这个设计指南的积累和注入, 是无法达到我们同样的效果的。

译者注*:未来LLM能力的持续迭代,无所不能。真正AI化的关键依然是组织对与自己业务的把控度和文档化,知识化能力,并将其转化为实际的业务流程。

另外,针对最终的输出质量,我们总结了「自动化测试12项检查清单」 这保证了我们:

  • Page Object生成准确率: 97.26%
  • Step Definition生成准确率: 92.63%

具体包括:

  • 确保类型安全性的全面保障
  • 选择器存在确认:检查与HTML文件的一致性
  • 现有代码重复检查:彻底贯彻DRY原则
  • 架构一致性验证:遵循PageObject模型原则
  • 组件责任分离确认:验证合理的职责分工
  • 继承链一致性:避免与基类的重复
  • 参数化适当性:确保可重用性
  • 错误处理完备性:正确处理异常情况
  • 测试数据一致性:合理使用SharedData
  • Modal初始化处理:确保动态元素的可靠处理
  • 语言支持适当性:保证多语言环境下的正常运行
  • 运行时稳定性:排除不稳定性测试因素

最终的执行我们依然复用过去的CircleCI,这样的好处有如下四点:

  1. 与AI化前相同的运行环境:不引入新风险,保持经过验证的稳定性
  2. 预约/取消/计费等重要功能:直接沿用现有监控与警报机制
  3. 沿用传统质量标准:AI生成代码与人工编写代码采用同等评估标准
  4. 运维团队零学习成本:无需掌握新工具即可立即投入正式运营

所以可以看到,一切的本质是如何将日常大家工作的潜规则明文化。

另外,为了更好的提升质量,注入利用AI时的 禁止规则,few-shot举例,输出格式参考,生成后再确认等都 是非常关键和重要细节。

取得了什么成果?

我们用数字来做一下说明。

活动过去AI化后效果
测试执行0.9人月0.43人月52%削減
自动化测试率24%64%(703件/1,102件)40%増加
自动化测试工作量1.7人月0.7人月58.8%削減

有哪些收获和展望

  • 再优秀的技术方案也需要手动实际执行和学习
  • 跟AI建立有效的协作关系,而非对立和替代关系
  • 作为QA对未来产生了更多的信心

译者注:发现现场的课题,系统化的思考并小范围验证,数据可视化可量化表达,大范围推广,这个路径是依然是大型系统质量保证的有效实践