第 29 期 - 利用实时调试提升 AI 编写 UI 自动化脚本有效性
摘要
介绍了 UI 自动化现状、BDD 引入及其局限性、AI 在 UI 自动化中的应用问题,阐述了让 AI 自动编写有效测试脚本的思路与系统实现,包括提示词、调试工具、页面信息获取工具等,还提及后续发展的待解决问题。
一、UI 自动化现状
UI 自动化从最初的记录与回放工具发展到复杂脚本编写框架。但传统方法面临挑战,手动编写脚本效率低且应用更新时需大量重新工作。例如,行业调查显示 UI 自动化测试脚本维护占测试工作的 60% - 70%,在敏捷开发环境中,应用更新可能需超 100 小时重写和测试脚本,这凸显了传统方法的低效与资源消耗。
二、行为驱动开发 BDD 的引入
- BDD 的优势
BDD 是敏捷软件开发实践,Cucumber 是实现 BDD 的流行工具,使用 Gherkin 语言。它让团队成员用自然语言编写测试用例,如
Given - When - Then
语句描述系统响应,有助于技术与非技术人员沟通,非技术人员可参与测试用例编写和验证,自然语言的测试场景还可作为项目文档。 - BDD 的局限性 虽然测试场景用自然语言编写,但步骤定义仍需技术人员用编程语言编写,随着应用发展变化,维护和更新测试步骤会变得繁琐,特别是 UI 频繁更改时。而且 Cucumber 测试脚本依赖预定义步骤和结构,限制了测试灵活性,对于复杂场景,实现特定测试逻辑可能需规避框架限制。
三、当前 AI 在 UI 自动化中的应用
近年来 AI 集成到 UI 自动化中,业界尝试用大模型将 Gherkin 测试用例描述语言生成测试代码。但当前存在问题,生成的脚本可能有语法错误无法运行,或者不能准确覆盖校验点,首次成功比例不超过 5%。生成失败后需要人介入补救,这与 AI 自动生成脚本的初衷相悖。
四、AI 全自动编写有效的测试脚本
为解决上述问题,重新思考 AI 生成测试脚本过程,考虑让 AI 做调试和修改工作。经调整系统设计,以携程酒店订单详情页用例为例,无人参与情况下生成可执行成功的占全部的 83.3%,生成脚本过程中有 8%的 case 发现 Bug,多次生成用例成功率稳定,证明系统稳定有效。
五、系统实现
- 核心架构
系统核心是 langchain 框架程序,访问大模型并配备页面信息获取工具和调试工具两类工具。
- 提示词 提示词结构包含几部分内容,包括告诉 AI 如何思考和工作(如分析页面模块、控件、操作动作等后生成语句)、要通过 Debug 调试语句、输出格式以及完整用例文本。
- 调试工具 调试工具通过 adb 工具远程连接手机,将 AI 生成指令发送到手机运行并读取结果给 AI 判断指令正确性。
- 页面信息获取工具 目的是帮助 AI 确定 BDD 用例中要操作的控件 ID 以便生成程序指令。为此建立页面控件库,库包含控件 ID、描述、页面和组件关系等。但实际应用中需将页面当前真实控件与控件库查询结果做交集获取真实展示的控件和描述信息。
- 进一步拆分 AI AI 做了上述工作后成功率提升到 55%,但还不够。分析失败 case 发现是 AI 幻觉问题,因为 AI 要考虑的太多。通过 langchain 的 function 功能拆分工作,让每个 AI 工作更简单精准,最终成功率提升到 80%以上。
六、后续的发展
目前能让 AI 以 80%左右成功率生成自动化测试代码,但仍有问题。一是大模型调用成本高,二是还有难处理操作和校验,成功率有提升空间且最终需人复核结果,三是其他方面也有待完善。
Made by 捣鼓键盘的小麦 / © 2025 Front Talk 版权所有