thales fu,携程高级研发经理,致力于寻找更好的方法,结合ai和工程来解决现实中的问题。
在快速迭代的软件开发周期中,用户界面(UI)的自动化测试已成为提高效率和确保产品质量的关键。然而,随着应用程序变得日益复杂,传统的UI自动化方法逐渐显露出局限性。AI驱动的UI自动化出现了,但仍面临着准确性和可靠性的挑战。在这个背景下,本文提出一个创新的视角:通过实时调试技术,显著提升AI编写的UI自动化脚本的有效性。
这个问题不仅仅是技术上的挑战,它关系到如何在保证软件质量的同时加速软件的交付。本文将探讨实时调试如何帮助AI更准确地理解和执行UI测试脚本,以及这种方法如何能够为软件开发带来革命性的改变。
UI自动化经历了长足的发展,从最初简单的记录与回放工具发展到如今的复杂脚本编写框架。尽管技术不断进步,但传统的UI自动化方法在处理快速变化的应用界面时仍面临挑战。随着应用程序变得更加复杂和动态,传统方法可能无法满足需求。因此,工程师们正在寻找更灵活、可靠的解决方案来提高UI自动化的效率和可靠性。新一代的UI自动化工具和技术不断涌现,以
根据行业调查结果显示,手动编写测试脚本效率低下,而且在应用更新时需花费大量时间进行重新工作。调研显示,维护UI自动化测试脚本可能占整个测试工作的60%至70%。在敏捷开发环境中,每次应用更新可能要花费超过100小时来重新编写和测试现有的自动化脚本。这种高昂的维护成本凸显了传统UI自动化方法的低效性和资源消耗。
行为驱动开发(BDD)是一种敏捷软件开发的实践,它鼓励软件项目的开发者、测试人员和非技术利益相关者之间进行更有效的沟通。Cucumber是实现BDD方法论的一个流行工具,它允许团队成员使用自然语言编写明确的、可执行的测试用例。
Cucumber使用一种名为Gherkin的领域特定语言(DSL),这种语言极易阅读,使得非技术人员也能理解测试的目的和内容。测试场景以一系列Given-When-Then语句的形式书写,清晰地描述了系统在特定条件下应该做出何种响应。
例如,一个在线购物网站的购物车功能可能有如下的Gherkin场景:
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
这种方法利用自然语言描述功能,促进技术和非技术团队之间更好的沟通和理解。同时,自然语言测试场景还扮演了项目文档的角色,帮助新团队成员快速了解项目功能。这使得非技术人员能够直接参与测试用例的编写和验证过程,确保开发工作与业务需求紧密契合。
但是它也存在着局限性,尽管测试场景用自然语言编写,每个步骤背后的实现(步骤定义)仍然需要技术人员使用编程语言来编写。这意味着实现测试逻辑可能涉及复杂的代码编写工作。随着应用程序的发展和变化,维护和更新与之相对应的测试步骤可能会变得繁琐。特别是在UI频繁更改的情况下,相关的步骤定义也需要相应地进行更新。还有灵活性和适应性限制:Cucumber测试脚本依赖于预定义的步骤和结构,这可能限制测试的灵活性。对于一些复杂的测试场景,实现特定的测试逻辑可能需要创造性地规避框架的限制。
近年来,AI技术被集成到UI自动化中,特别是以GPT为代表的大模型出现后,因为它本身就有代码生成能力。业界也开始试着通过大模型来直接把Gherkin的测试用例描述语言生成成测试代码。
不过,当前大模型生成的测试代码并不能完全达到预期,主要有几个问题:首先,生成出来的脚本,因为语法错误可能无法运行;其次,也可能没有准确的覆盖到测试用例需要它去测试的校验点。在我们的实践下,真正能第一次就成功的比例不超过5%。
它生成失败后,接着就需要人介入再进行一些补救的工作。包括:调试,修改用例重新生成,或者直接修改生成的脚本。
而这些工作本身也需要消耗不少的人力,和我们系统通过AI来自动生成测试脚本的初衷相违背。
为了解决这个问题,我们重新思考了AI生成测试脚本的整个过程。
我们把人的工作也放在里面一起考虑。人在系统中做了调试和修改的工作,那这部分工作是不是可以让AI来做呢,让系统自己运行生成的代码,让AI来调试和修改自己生成的错误代码。
因此,我们调整了系统设计,让AI代替人自主地来做这些工作。最终,对于携程酒店订单详情页的全部用例,在无人参与的情况下,生成可以执行成功的占全部的83.3%,在生成脚本过程中,有8%的case就已经发现了Bug。我们连续生成这些用例三次,成功率分别在84.3%,81.4%和83.3%,系统是稳定有效的。
具体的测试用例和代码如下:
首先,需要滑动到订单详情页下放的用户权益模块,然后点击订房优化区域,来弹出价格浮层。
然后再看,费用明细里面是否包含黑钻贵宾。
最终生成的测试代码如下:
整个系统的核心架构示意图如下。系统的核心部分是一个langchain框架的程序。它会去访问大模型,我们给它配备了多个工具,主要分成两类,一类是页面信息的获取工具,一类是调试工具。
Langchain会自动根据需要,使用页面信息获取工具,去拿页面的数据,来判断当前的操作需要具体哪个控件,来生成代码。然后再使用调试工具在手机中真实的执行代码,基于调试的反馈来判断自己生成的代码是否正确。
5.1 提示词
有了基本的架构后,我们需要提示词,来把这些工具粘合起来,让AI理解它该如何工作。我们的提示词从结构上来说包含了几部分内容:首先告诉AI它该如何思考和工作,其次告诉它一定要通过Debug调试它每一句生成的语句,再次告诉它输出格式是什么,最后是告诉AI要处理的完整用例文本。
对于告诉AI它该如何思考和工作
,展开包含以下部分:首先看页面有哪些模块,我要操作的这个步骤应该是哪个模块,这个模块里有哪些控件和组件,我当前要操作的是哪个控件或组件,我要操作的动作是什么,以及我可以用的特殊的语法是什么,然后生成语句。
5.2 调试工具
调试工具的本质是通过adb工具远程连接到手机上。连接后,我们就可以把AI生成的指令发送给手机去运行,并且读取到运行后的结果给到AI,让AI去判断自己生成的指令是否正确。
5.3 页面信息获取工具
页面信息获取工具的最终目的是帮助AI判断出,BDD的用例上面写得要操作的内容,它具体要操作的控件的ID是什么,有了ID才能基于ID生成后续的程序指令。而为了拿到ID,我们需要有个控件和组件库,这个库里面的核心是每个控件和组件的ID以及它们的描述。有了这两项内容后,才能帮助AI看了BDD用例后,基于控件的描述去猜需要的是哪个控件。
为了达到这个目的,我们建立了一个页面控件库。这个库除了包含页面上每个控件的ID和描述外,还包含了页面和组件的关系,以及组件和控件的关系。能方便AI一步步的进行查询。
而这个控件库本身是基于我们通过job对代码进行静态分析来生成的。不过实际应用中,因为页面当前真正展示的控件会根据场景状态的不同而不同,在某些场景下页面上的控件会隐藏。因此页面信息获取工具会把页面当前真实存在的控件和控件库中查询出来的控件做交集,从而获取到当前页面真实展示出的控件和它的描述信息。
5.4 进一步拆分AI
当做了这些工作后,AI基本上已经可以把上面这张图黄色的部分,也就是人的工作自动去做了。生成成功率也从5%提升到了55%,但是55%的成功率还是不够的。
我们进一步分析了失败的case。发现主要问题是AI的幻觉,虽然提示词已经比较详细了,但是AI有时会没有按照要求处理,有的时候会自己胡说八道。
我们的结论是,给AI的责任太多了,它要考虑的东西太多。倒不是说它的Token不够,而是让它做的事情太多,会遗忘,无法精准完成要求。因此我们考虑进行拆分,还是利用了langchain的function的功能,既然AI能通过工具去完成功能,那这个工具为什么本身不能也是个AI呢。
甚至还可以把它再进行拆分。
通过这些拆分,我们让每一个AI需要考虑的工作变得更少更简单,也让它处理得更加精准,最终生成成功率提升到了80%以上。
当前,通过我们的工作,能让AI在无人参与下以80%左右的成功率去生成自动化测试的代码,很让人振奋,但还有很多问题需要继续去解决。
1)大模型的调用成本还是不低,是否有更好的办法,更低的成本去完成工作。
2)当前还有些比较难处理的操作或者校验,成功率80%还有不小的提升空间,以及目前最后还是需要人来复核生成结果。
3)除此之外,其他方面也都有提高的空间,值得我们继续去完善。
# langchain
# 来做
# 让它
# 应用程序
# 太多
# 我要
# 调试工具
# 该如何
# 的是
# 技术人员
# 自然语言
# ai
# gpt
# 自动化
# bug
# ui
# adb
# function
# Token
# 架构
# 携程
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化91478 】
【
技术知识72672 】
【
云计算0 】
【
GEO优化84317 】
【
优选文章0 】
【
营销推广36048 】
【
网络运营41350 】
【
案例网站102563 】
【
AI智能45237 】
相关推荐:
ChatGPT 处理非结构化数据并转换为 JSON 格式
为什么你的简历过不了筛选?用AI帮你诊断并修复漏洞
11月问界汽车哪里卖的多?成都力压北上广深位居第一
百度浏览器ai助手怎么关闭 百度浏览器ai功能禁用
深度学习姿态估计:技术、应用与未来趋势全解析
AI赋能营销:5分钟快速生成品牌营销素材全攻略
AI Notebooks: 知识工作者的未来?赋能理解与洞察的工具
提升英语口语:地道表达周末体验,语法精讲助你流利交流
tofai官网入口网站 tofai官网入口网页版
Mac百度输入法ai怎么关 Mac版百度ai助手禁用教程
宝可梦化石精灵大揭秘:晶灿钻石视角下的精灵演化
AI落地页优化:3个技巧,转化率飙升!
教你用AI把照片变成动漫风格,3个简单步骤刷爆朋友圈
SnappaAI排版如何生成社交媒体图_SnappaAI排版社媒图尺寸与风格选择【技巧】
3步教你用AI将文字转换成语音,实现配音自由
批改网AI检测工具怎样优化检测精度_批改网AI检测工具精度调节与模型选择【实操】
AI 和 Plagiarism Checker:SEO 内容创作的终极指南
3步教你用AI自动分类文件,整理电脑告别杂乱
深度解析Coldplay酷玩乐队《Viva la Vida》的音乐内涵
探索未来:AI机器人AURORA揭秘亚特兰蒂斯之谜
利用 ChatGPT 进行复杂数学公式的推导教程
斑马AI能否关联学校教材_斑马AI教材同步与版本匹配【技巧】
2025 YouTube自动化终极指南:利用AI实现高效内容创作和多平台发布
动态规划解题:攀登楼梯的独特方法与技巧
Vizeo AI视频生成器:无需技术,轻松打造营销利器
AI卡通视频制作终极指南:轻松打造百万流量
即梦ai能否生成国风插画_即梦ai国风元素调用与文化符号添加【技巧】
AI同伴的未来:超越工具,迈向情感连接与个人成长
GitHub MCP Server:AI赋能代码管理的未来
AI虚拟网红打造指南:轻松制作专属社交媒体形象
AI简历优化指南:如何让你的简历轻松通过ATS筛选系统
DeepSeek写简历怎么用_DeepSeek写简历使用方法详细指南【教程】
如何利用 DeepSeek 进行多轮复杂对话的状态管理
AI论文写作终极指南:DeepSeek与HIX Bypass结合使用教程
AI赋能保险销售:提升邮件营销效果的终极指南
Django与React构建AI音乐推荐:数据库集成实战指南
生物医学图像分割:U-Net模型训练与应用详解
Claude怎样写指令型提示词_Claude指令提示词写法【方法】
ChatGPT一键生成PPT怎么加目录_ChatGPTPPT目录添加【步骤】
揭秘颜值真相:社交实验的背后,你是几分?
LogMeIn Resolve:IT 运维知识库的 AI 赋能实践
AI绘图工具测评:告别复杂流程,高效创作流程图
使用 ChatGPT 自动生成月度财务分析报告
AI图像生成平台深度对比:Midjourney vs. Stable Diffusion
AI赋能QA:测试管理的未来趋势与实践
JSON Prompting: 创造爆款AI广告的秘诀和方法
怎么用ai进行用户画像分析 AI消费行为与兴趣标签提炼【详解】
播客数据深度解析:揭秘全球听众分布和增长策略
OpenAI ChatGPT Agent:AI自主任务的未来
CareerCraft AI:提升大学生实习就业的智能平台
2024-03-15
南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。