作者简介
Jessi Peng,携程资深后端开发工程师,关注AI技术在测试领域的应用。
团队热招岗位:、、
一、引言
在传统的UI自动化测试流程中,测试人员需要构建完整的开发环境,包括Python运行环境、PyCharm集成开发环境、自动化测试框架等工具链的配置与部署。在用例编写过程中,测试人员必须通过人工方式精确定位目标UI元素,并基于自动化框架封装的底层方法,手工编写测试代码。
这种传统模式不仅技术门槛较高,而且在面对复杂的用户界面时,元素定位的准确性和代码编写的效率都难以得到有效保障,导致整个测试用例开发过程极为繁琐、耗时且容易出错。
近年来,大模型在自然语言理解、推理规划等方面展现出了令人瞩目的能力。特别是多模态大模型的快速发展,为UI自动化测试领域带来了新的技术机遇。多模态大模型具备同时处理文本、图像等多种数据模态的能力,能够深度理解用户界面的视觉特征和结构信息,并结合自然语言描述进行智能推理。
基于这一技术趋势,本文提出了一种基于多模态大模型的UI自动化用例生成方法。该方法以页面截图、DOM树结构以及自然语言用例描述作为输入,充分利用多模态大模型的跨模态理解能力和逻辑推理能力,实现对UI元素的智能识别与定位,并自动生成可持续执行的UI自动化测试用例。这种方法有效突破了传统人工编写模式的技术壁垒,显著降低了UI自动化测试的实施成本和技术门槛。
二、UI自动化用例智能化生成技术演进
随着大模型能力的持续提升,UI自动化测试领域正经历着从传统规则驱动向智能化生成的重要转变。该项目在UI自动化测试实践中,基于不同阶段大模型技术的发展水平,进行了系统性的技术探索与迭代优化,形成了以下四个渐进式发展阶段:
第一阶段:基于文本属性的初步探索
在大模型技术发展的初期阶段,本研究采用大模型结合页面控件的文本属性信息和自然语言用例描述,实现UI自动化用例的自动生成。该阶段的核心技术路线是通过提取页面中各UI控件的可见文本属性(如按钮文本、标签内容、提示信息等),构建基于文本特征的元素定位策略。
然而,该方法存在显著的技术局限性:首先,完全依赖文本属性的元素定位方式在面对动态内容变化时表现出较差的鲁棒性,导致生成的测试用例在后续执行过程中稳定性不足;其次,对于图标类按钮、图片链接等缺乏明确文本描述的UI控件,该方法无法实现有效的元素识别与定位,严重限制了测试用例的覆盖范围和适用性。
第二阶段:基于唯一标识-控件ID的规范化方案
为了解决第一阶段中文本属性依赖性过强的问题,本研究在第二阶段引入了基于唯一标识符(ID)的元素定位机制。通过为页面中的每个UI控件分配唯一且稳定的ID属性,结合企业内部埋点管理平台对控件ID进行统一管理和维护,显著提升了元素定位的准确性和测试用例的稳定性。
该方案的核心优势在于:
1)建立了标准化的控件标识体系,确保元素定位的唯一性和确定性;
2)有效解决了无文本属性控件的识别问题,扩大了测试用例的覆盖范围。
但同时,该方案也带来了新的技术挑战:需要投入大量的人工成本进行控件ID的管理和持续维护工作,增加了系统开发和运维的复杂度,在一定程度上限制了方案的可扩展性和实用性。
第三阶段:多模态信息融合的智能定位
随着多模态大模型技术的快速发展,本研究进入了第三个发展阶段,开始探索基于视觉信息、结构信息和语义信息相结合的智能化元素定位方法。该阶段的技术核心是利用多模态大模型同时处理页面截图、DOM树结构以及自然语言用例描述,实现对UI元素的智能识别与精确定位。
这一技术方案的主要创新点包括:
构建了跨模态的UI理解框架,能够综合利用视觉特征和结构特征进行元素定位;
消除了对人工控件ID管理的依赖,显著降低了系统维护成本;
提升了对复杂UI界面的适应能力,能够处理动态生成的页面内容;
然而,该阶段仍然要求测试人员编写详细且规范的用例描述文档,明确指定每个测试步骤的具体操作和预期断言,人工编写成本依然较高,限制了方案的推广应用。
第四阶段:基于自主推理的端到端智能生成
在当前阶段,本研究实现了从用例描述到可执行测试代码的端到端智能生成。该阶段的核心技术是构建了一个基于多模态大模型的自主推理与动态调试框架,能够根据高层次的用例描述和页面截图信息,自动进行测试步骤的规划和分解。
该框架的技术架构包括以下关键组件:
1)智能推理引擎:基于多模态大模型的自然语言理解和逻辑推理能力,将抽象的用例描述转化为具体的操作步骤序列;
2)动态执行引擎:结合DOM树结构信息和系统层面封装的UI操作接口,实现测试步骤的实时执行和结果验证;
3)自适应调试机制:当测试执行失败时,自动收集错误信息并反馈给大模型,实现测试步骤的动态优化和调整。
该阶段的技术突破在于:
大幅降低了对用例描述规范性和详细程度的要求,测试人员只需提供高层次的测试目标描述;
实现了测试用例生成过程的完全自动化,消除了人工编写详细步骤的需求;
通过动态调试和自适应优化,显著提升了生成测试用例的质量和成功率;
这一技术演进路径充分体现了多模态大模型在UI自动化测试领域的巨大潜力,为实现真正意义上的智能化测试用例生成奠定了坚实的技术基础。
三、基于多模态大模型的UI自动化用例生成系统架构
本研究构建了一个端到端的AI驱动UI自动化用例生成系统,该系统以多模态大模型为核心,通过深度集成视觉理解、自然语言处理和动态执行反馈机制,实现了从用例描述到可执行测试代码的全自动化转换。系统设计遵循分层解耦、模块化组合的架构原则,旨在最大程度降低人工干预需求,显著提升UI测试用例的生成效率和质量稳定性。
3.1 系统架构概览
系统采用五层架构设计模式,自上而下依次为用户交互层、API服务层、AI核心层、执行引擎层和基础设施层。各层次间通过标准化接口进行通信,确保系统的可扩展性和可维护性。
用户交互层:作为系统的前端门户,提供直观友好的人机交互界面,支持用户输入目标URL、自然语言用例描述等。同时提供生成结果的可视化展示、人工审核、人工编辑等后处理功能。通过模块化的界面设计,有效降低了用户的使用门槛,提升了系统的易用性和用户体验。
API层:提供标准化的服务接口,承担连接前端交互和后端AI处理的桥梁作用。调试代码生成服务负责根据用户输入自动生成预执行代码,与自动化执行平台深度集成实现设备启动和页面导航。AI运行服务提供与多模态大模型的通信接口,与执行设备进行实时连接和数据传输。该层确保了系统各组件间的高效协作和数据流的稳定传递。
AI核心层:AI核心层是整个系统的智能大脑,基于先进的多模态大模型技术实现复杂的推理决策和代码生成任务。该层利用大模型的逻辑推理能力,将页面截图的视觉信息自然语言用例描述进行深度融合,将高层次的测试目标自动分解为具体的操作步骤序列。动态代码生成模块采用模板化和参数化的代码生成策略,根据推理结果和当前页面状态实时生成符合自动化测试框架规范的可执行Python代码。生成过程中建立了基于强化学习的反馈优化机制,当执行失败时能够分析失败原因(如元素未找到、断言失败等),动态调整推理策略、修正元素定位方法或重新规划操作步骤,实现测试用例的迭代优化和成功率提升。
执行引擎层:执行引擎层负责AI生成代码的实际执行和智能化的环境管理,通过多模态元素定位技术实现对UI控件的精准识别和操作。该层集成了DOM树结构化分析、视觉坐标索引建立和坐标定位校准等关键技术,确保元素定位的准确性和稳定性。自适应执行引擎提供连续失败检测、页面状态变化监测和智能重试等机制,有效处理执行过程中的各种异常情况。通过实时的结果反馈机制,将执行状态、错误信息和页面变化等关键数据及时传递给AI核心层,支持动态调整和持续优化。
基础设施层:基于公司的基础框架,为整个系统提供稳定可靠的运行基础和技术保障。
3.2 智能化生成流程
整个流程以文本用例管理平台为起点,经过预处理、智能推理、实时执行和动态调整等关键阶段,最终输出高质量的UI自动化测试代码。
流程起始于文本用例管理平台,该平台承载着测试需求的初始输入,包括目标页面信息、自然语言用例描述和相关测试数据。系统首先通过UI用例生成平台的调试代码生成服务,根据目标页面信息自动生成预执行代码。随后,UI脚本运行平台接收预执行代码,完成真实设备的自动化启动、进入目标页面,为后续的AI分析提供标准化的执行环境。
系统启动AI生成服务模块,开始核心的智能生成流程。该阶段首先进行多模态信息的实时采集,包括当前页面的截图(经过工程处理后包含控件标注信息)、简化后的DOM树结构以及用户数输入的用例描述信息。利用多模态大模型的逻辑推理能力,将高层次的用例描述分解为具体的操作步骤序列。每个规划步骤中,系统执行获取当前步骤目标元素操作,通过多模态元素定位技术精确识别当前步骤所需操作的UI控件。基于识别结果,系统进行生成当前步骤代码处理,实时输出符合测试框架规范的可执行Python代码片段。
生成的代码片段立即在真实设备环境中执行,系统通过执行成功判断机制进行实时验证。若当前步骤执行成功,系统进入执行完成判断流程,评估整个测试用例是否已完全生成;若执行失败,系统启动智能容错机制,分析失败原因并尝试重新生成优化后的代码。为避免无效循环和资源浪费,当连续失败次数超过预设阈值时,系统触发抛出异常流程,记录详细的失败信息并通过消息通知服务进行实时告警。对于成功完成的测试用例,系统执行输出完整代码操作,生成结构化的、可直接执行的完整测试脚本。
生成的完整测试代码同时输出到UI用例生成平台,通过人工审核环节,确保生成代码的质量和业务逻辑的正确性。审核通过的用例自动提交到UI自动化用例仓库,用于后续版本迭代回归的持续运行。
四、实践案例展示
本案例以携程酒店订单详情申请退款场景为例,该场景具有界面元素丰富、交互逻辑复杂、数据验证严格等特点,能够全面展示系统从自然语言用例描述到可执行测试代码的端到端智能化生成能力。
实践场景:酒店订单详情,不可取消场景,用户想申请退款,到退款页面核对退款信息,以及退款明细信息。
自然语言用例描述:
用户订单为不可取消策略
用户进入申请退款页面
页面展示退款金额,退款金额下方展示提示"若审核成功,钱款原路退回"
用户点击退款金额右侧的icon,弹出退款明细浮层
页面信息:
最终生成代码:
def runTest(self):
"""初始任务描述:
Given用户订单为不可取消策略
When用户进入申请退款页面
Then页面展示退款金额,退款金额下方展示提示"若审核成功,钱款原路退回"
And用户点击退款金额右侧的icon
Then弹出退款明细浮层
"""
# 点击协商取消按钮
self.click(self.findAnyElement("协商取消按钮"), index=0)
# 点击“去申请”按钮
self.click(self.findAnyElement("去申请按钮"), index=0)
# 选择取消原因“行程改变/订错”
self.click(self.findAnyElement("行程改变/订错"), index=0)
# 点击“确认”按钮
self.click(self.findAnyElement("确认"), index=0)
# 断言页面展示退款金额
self.assert_exist(self.findAnyElement("申请退款¥8840"), description="页面展示退款金额")
# 断言页面展示提示“若审核成功,钱款原路退回”
self.assert_exist(self.findAnyElement("若申请成功,钱款原路退回"), description="页面展示提示“若审核成功,钱款原路退回”")
# 点击退款金额右侧的icon
self.click(self.findAnyElement("退款金额信息icon"), index=0)
# 断言弹出退款明细浮层
self.assert_exist(self.findAnyElement("退款明细浮层"), description="弹出退款明细浮层")
本系统已成功集成至某团队的前端测试流程中,经过持续验证和优化迭代,取得了显著的应用成效。
截至目前,该团队累计自动生成UI测试用例数7000+,整体生成成功率达到80%以上,UI自动化用例覆盖率达到80%左右;通过智能化生成的UI自动化测试用例在2025年上半年共发现前端缺陷个数300+,其中包括交互逻辑错误、数据显示问题等多种类型。这些缺陷的及时发现和修复,有效避免了潜在的生产环境故障,为该团队前端业务系统的稳定运行提供了重要保障。
五、未来规划
UI自动化用例智能生成系统在测试流程中的深度应用过程中,基于当前应用实践中的经验积累和技术瓶颈分析,未来会继续精进系统的成功率、稳定性,以及对生成成本的有效控制。
如果您对多模态大模型驱动的 UI 自动化用例生成流程的落地实施方面有更多见解与实战经验,欢迎在评论区留言交流。期待与更多业内人士碰撞思想、共享成果,共同推动 AI 赋能软件测试领域的持续创新与进步。
【推荐阅读】
“携程技术”公众号
分享,交流,成长
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...