当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > 通过实时调试,让AI编写有效的UI自动化

通过实时调试,让AI编写有效的UI自动化

来源:51CTO.COM 2024-04-12 08:18:16 0浏览 收藏

科技周边不知道大家是否熟悉?今天我将给大家介绍《通过实时调试,让AI编写有效的UI自动化》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

作者简介

Thales Fu,携程高级研发经理,致力于寻找更好的方法,结合AI和工程来解决现实中的问题。

引言

在快速迭代的软件开发周期中,用户界面(UI)的自动化测试已成为提高效率和确保产品质量的关键。然而,随着应用程序变得日益复杂,传统的UI自动化方法逐渐显露出局限性。AI驱动的UI自动化出现了,但仍面临着准确性和可靠性的挑战。在这个背景下,本文提出一个创新的视角:通过实时调试技术,显著提升AI编写的UI自动化脚本的有效性。

这个问题不仅仅是技术上的挑战,它关系到如何在保证软件质量的同时加速软件的交付。本文将探讨实时调试如何帮助AI更准确地理解和执行UI测试脚本,以及这种方法如何能够为软件开发带来革命性的改变。

一、UI自动化的现状

UI自动化经历了长足的发展,从最初简单的记录与回放工具发展到如今的复杂脚本编写框架。尽管技术不断进步,但传统的UI自动化方法在处理快速变化的应用界面时仍面临挑战。随着应用程序变得更加复杂和动态,传统方法可能无法满足需求。因此,工程师们正在寻找更灵活、可靠的解决方案来提高UI自动化的效率和可靠性。新一代的UI自动化工具和技术不断涌现,以

根据行业调查结果显示,手动编写测试脚本效率低下,而且在应用更新时需花费大量时间进行重新工作。调研显示,维护UI自动化测试脚本可能占整个测试工作的60%至70%。在敏捷开发环境中,每次应用更新可能要花费超过100小时来重新编写和测试现有的自动化脚本。这种高昂的维护成本凸显了传统UI自动化方法的低效性和资源消耗。

二、行为驱动开发BDD的引入

行为驱动开发(BDD)是一种敏捷软件开发的实践,它鼓励软件项目的开发者、测试人员和非技术利益相关者之间进行更有效的沟通。Cucumber是实现BDD方法论的一个流行工具,它允许团队成员使用自然语言编写明确的、可执行的测试用例。

Cucumber使用一种名为Gherkin的领域特定语言(DSL),这种语言极易阅读,使得非技术人员也能理解测试的目的和内容。测试场景以一系列Given-When-Then语句的形式书写,清晰地描述了系统在特定条件下应该做出何种响应。

例如,一个在线购物网站的购物车功能可能有如下的Gherkin场景:

通过实时调试,让AI编写有效的UI自动化

这种方法利用自然语言描述功能,促进技术和非技术团队之间更好的沟通和理解。同时,自然语言测试场景还扮演了项目文档的角色,帮助新团队成员快速了解项目功能。这使得非技术人员能够直接参与测试用例的编写和验证过程,确保开发工作与业务需求紧密契合。

但是它也存在着局限性,尽管测试场景用自然语言编写,每个步骤背后的实现(步骤定义)仍然需要技术人员使用编程语言来编写。这意味着实现测试逻辑可能涉及复杂的代码编写工作。随着应用程序的发展和变化,维护和更新与之相对应的测试步骤可能会变得繁琐。特别是在UI频繁更改的情况下,相关的步骤定义也需要相应地进行更新。还有灵活性和适应性限制:Cucumber测试脚本依赖于预定义的步骤和结构,这可能限制测试的灵活性。对于一些复杂的测试场景,实现特定的测试逻辑可能需要创造性地规避框架的限制。

通过实时调试,让AI编写有效的UI自动化

三、当前AI在UI自动化中的应用

近年来,AI技术被集成到UI自动化中,特别是以GPT为代表的大模型出现后,因为它本身就有代码生成能力。业界也开始试着通过大模型来直接把Gherkin的测试用例描述语言生成成测试代码。

通过实时调试,让AI编写有效的UI自动化

不过,当前大模型生成的测试代码并不能完全达到预期,主要有几个问题:首先,生成出来的脚本,因为语法错误可能无法运行;其次,也可能没有准确的覆盖到测试用例需要它去测试的校验点。在我们的实践下,真正能第一次就成功的比例不超过5%。

它生成失败后,接着就需要人介入再进行一些补救的工作。包括:调试,修改用例重新生成,或者直接修改生成的脚本。

通过实时调试,让AI编写有效的UI自动化

而这些工作本身也需要消耗不少的人力,和我们系统通过AI来自动生成测试脚本的初衷相违背。

四、AI全自动的来编写有效的测试脚本

为了解决这个问题,我们重新思考了AI生成测试脚本的整个过程。

通过实时调试,让AI编写有效的UI自动化

我们把人的工作也放在里面一起考虑。人在系统中做了调试和修改的工作,那这部分工作是不是可以让AI来做呢,让系统自己运行生成的代码,让AI来调试和修改自己生成的错误代码。

因此,我们调整了系统设计,让AI代替人自主地来做这些工作。最终,对于携程酒店订单详情页的全部用例,在无人参与的情况下,生成可以执行成功的占全部的83.3%,在生成脚本过程中,有8%的case就已经发现了Bug。我们连续生成这些用例三次,成功率分别在84.3%,81.4%和83.3%,系统是稳定有效的。

通过实时调试,让AI编写有效的UI自动化

具体的测试用例和代码如下:

通过实时调试,让AI编写有效的UI自动化

首先,需要滑动到订单详情页下放的用户权益模块,然后点击订房优化区域,来弹出价格浮层。

通过实时调试,让AI编写有效的UI自动化

然后再看,费用明细里面是否包含黑钻贵宾。

通过实时调试,让AI编写有效的UI自动化

最终生成的测试代码如下:

通过实时调试,让AI编写有效的UI自动化

五、系统实现

整个系统的核心架构示意图如下。系统的核心部分是一个langchain框架的程序。它会去访问大模型,我们给它配备了多个工具,主要分成两类,一类是页面信息的获取工具,一类是调试工具。

Langchain会自动根据需要,使用页面信息获取工具,去拿页面的数据,来判断当前的操作需要具体哪个控件,来生成代码。然后再使用调试工具在手机中真实的执行代码,基于调试的反馈来判断自己生成的代码是否正确。

通过实时调试,让AI编写有效的UI自动化

5.1 提示词

有了基本的架构后,我们需要提示词,来把这些工具粘合起来,让AI理解它该如何工作。我们的提示词从结构上来说包含了几部分内容:首先告诉AI它该如何思考和工作,其次告诉它一定要通过Debug调试它每一句生成的语句,再次告诉它输出格式是什么,最后是告诉AI要处理的完整用例文本。

对于告诉AI它该如何思考和工作,展开包含以下部分:首先看页面有哪些模块,我要操作的这个步骤应该是哪个模块,这个模块里有哪些控件和组件,我当前要操作的是哪个控件或组件,我要操作的动作是什么,以及我可以用的特殊的语法是什么,然后生成语句。

通过实时调试,让AI编写有效的UI自动化

5.2 调试工具

调试工具的本质是通过adb工具远程连接到手机上。连接后,我们就可以把AI生成的指令发送给手机去运行,并且读取到运行后的结果给到AI,让AI去判断自己生成的指令是否正确。

5.3 页面信息获取工具

页面信息获取工具的最终目的是帮助AI判断出,BDD的用例上面写得要操作的内容,它具体要操作的控件的ID是什么,有了ID才能基于ID生成后续的程序指令。而为了拿到ID,我们需要有个控件和组件库,这个库里面的核心是每个控件和组件的ID以及它们的描述。有了这两项内容后,才能帮助AI看了BDD用例后,基于控件的描述去猜需要的是哪个控件。

为了达到这个目的,我们建立了一个页面控件库。这个库除了包含页面上每个控件的ID和描述外,还包含了页面和组件的关系,以及组件和控件的关系。能方便AI一步步的进行查询。

通过实时调试,让AI编写有效的UI自动化

而这个控件库本身是基于我们通过job对代码进行静态分析来生成的。不过实际应用中,因为页面当前真正展示的控件会根据场景状态的不同而不同,在某些场景下页面上的控件会隐藏。因此页面信息获取工具会把页面当前真实存在的控件和控件库中查询出来的控件做交集,从而获取到当前页面真实展示出的控件和它的描述信息。

5.4 进一步拆分AI

通过实时调试,让AI编写有效的UI自动化

当做了这些工作后,AI基本上已经可以把上面这张图黄色的部分,也就是人的工作自动去做了。生成成功率也从5%提升到了55%,但是55%的成功率还是不够的。

我们进一步分析了失败的case。发现主要问题是AI的幻觉,虽然提示词已经比较详细了,但是AI有时会没有按照要求处理,有的时候会自己胡说八道。

我们的结论是,给AI的责任太多了,它要考虑的东西太多。倒不是说它的Token不够,而是让它做的事情太多,会遗忘,无法精准完成要求。因此我们考虑进行拆分,还是利用了langchain的function的功能,既然AI能通过工具去完成功能,那这个工具为什么本身不能也是个AI呢。

通过实时调试,让AI编写有效的UI自动化

甚至还可以把它再进行拆分。

通过实时调试,让AI编写有效的UI自动化

通过这些拆分,我们让每一个AI需要考虑的工作变得更少更简单,也让它处理得更加精准,最终生成成功率提升到了80%以上。

六、后续的发展

当前,通过我们的工作,能让AI在无人参与下以80%左右的成功率去生成自动化测试的代码,很让人振奋,但还有很多问题需要继续去解决。

1)大模型的调用成本还是不低,是否有更好的办法,更低的成本去完成工作。

2)当前还有些比较难处理的操作或者校验,成功率80%还有不小的提升空间,以及目前最后还是需要人来复核生成结果。

3)除此之外,其他方面也都有提高的空间,值得我们继续去完善。

理论要掌握,实操不能落!以上关于《通过实时调试,让AI编写有效的UI自动化》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

版本声明
本文转载于:51CTO.COM 如有侵犯,请联系study_golang@163.com删除
使用 GO 导入的 Style.css 出现 MIME 错误使用 GO 导入的 Style.css 出现 MIME 错误
上一篇
使用 GO 导入的 Style.css 出现 MIME 错误
Win11 Dev 频道测试 24H2 版本26080.1300累积更新补丁KB5037139
下一篇
Win11 Dev 频道测试 24H2 版本26080.1300累积更新补丁KB5037139
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 毕业宝AIGC检测:AI生成内容检测工具,助力学术诚信
    毕业宝AIGC检测
    毕业宝AIGC检测是“毕业宝”平台的AI生成内容检测工具,专为学术场景设计,帮助用户初步判断文本的原创性和AI参与度。通过与知网、维普数据库联动,提供全面检测结果,适用于学生、研究者、教育工作者及内容创作者。
    23次使用
  • AI Make Song:零门槛AI音乐创作平台,助你轻松制作个性化音乐
    AI Make Song
    AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
    33次使用
  • SongGenerator.io:零门槛AI音乐生成器,快速创作高质量音乐
    SongGenerator
    探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
    30次使用
  •  BeArt AI换脸:免费在线工具,轻松实现照片、视频、GIF换脸
    BeArt AI换脸
    探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
    34次使用
  • SEO标题协启动:AI驱动的智能对话与内容生成平台 - 提升创作效率
    协启动
    SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
    36次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码