关于AI和测试自动化的真相

这篇文章的标题是《关于AI和测试自动化的真相》,作者是RAJ SUBRAMANIAN。文章主要讲述了软件测试在过去几十年的演变,以及人工智能在测试自动化中的应用和影响。

以下是文章的中文翻译

软件测试在过去几十年中逐渐演变。在过去,团队习惯于采用瀑布模型:从需求到产品部署,一切都是顺序进行的。只有在开发阶段完成后,测试人员才能接触到产品。历史上,测试人员在这个阶段会发现许多错误,需要大量的重新设计和重工来修复它们。这导致了大量的浪费,包括时间、努力和成本,以及团队士气。

但在当前的测试状态中,大多数公司都在遵循敏捷流程,如XP、Scrum、Kanban或这些的某种变体。主要目标是快速发现错误,迅速修复它们,并更快地发布软件。

为了实现这一目标,迫切需要用自动化测试来补充现有的手动测试过程。这是持续集成(CI)、持续交付(CD)和DevOps的重要组成部分,大多数团队现在都在遵循这些流程,以使他们的软件开发生命周期(SDLC)过程更加精简和有效。

在过去的十年中,为了帮助自动化测试,出现了各种工具和框架,但值得讨论的一种方法是在测试自动化中使用人工智能(AI)。

人工智能测试自动化

揭开人工智能的神秘面纱

让我们先退一步,揭开AI的神秘面纱。在最基本的层面上,AI是一种技术,它可以理解和感知,并使用计算机解决通常需要人类智能和理解的问题。

另一种看待它的方式是,AI将人类的技能和倾向应用于无生命的对象或想法。就像自动化一样,AI使技术能够完成真正的人类任务。

与流行观点相反,AI既不是遥远的现实,也不是基于科幻小说情节的概念;相反,它已经渗透到技术领域,并推动了影响我们日常生活的创新。从充当客户服务代表的聊天机器人到搜索结果和交通预测,AI在我们周围的任何一天都无处不在。

以下是一些关于AI采用的令人震惊的统计数据:

根据Narrative Science最近的一项研究,2017年有61%的企业以某种方式实施了AI。2018年的采用率只会增长。
Juniper Research的另一项研究发现,到2022年,全球零售商在AI上的支出将达到每年73亿美元,高于2018年估计的20亿美元。
CMO的一篇文章声称,到2035年,AI将帮助提高劳动生产率40%,并使人们能够高效利用时间。

AI在测试自动化中的影响

AI已经开始以各种方式影响测试自动化,从而在编写和执行测试、创建更稳定的测试、快速发现错误以及更快地发布软件以满足客户需求方面节省了大量时间。以下是这种情况发生的一些方式。

更快、更稳定的UI测试

作为持续测试过程的一部分,软件开发团队有单元测试、服务/API级别测试和用户界面(UI)测试。UI测试的一个常见问题是它们慢而且脆弱,并且涉及高维护。AI可以通过使用动态定位器来避免这个问题。

这是一种策略,AI解析用户在应用程序中与之交互的每个元素的多个属性,并实时创建位置策略列表。因此,即使元素的属性发生变化,测试也不会失败;相反,AI会检测到这个问题,并转到下一个最佳位置策略,以成功识别页面中的元素。

通过这种方式,测试更加稳定,结果,测试的编写和执行也真的很快。

减少维护和消除不稳定测试

测试自动化最常见的问题之一是维护。

例如,假设我们有100个自动化测试每天运行,以确保应用程序的主要功能仍然稳定;如果我们第二天回来工作,发现一半的测试失败了怎么办?我们需要花费相当多的时间来排除故障并调查实际发生了什么。这涉及到找出修复失败的方法并实施修复。然后,我们重新运行自动化测试以确保一切通过。这听起来熟悉吗?

由于其自我修复机制,AI可以避免这样的问题。它可以在问题发生之前开始检测测试中的问题,从而主动修复测试而不是我们对它们做出反应。

根据测试运行的次数,AI可以弄清楚哪些测试是稳定的或不稳定的。因此,它可以给我们提供哪些测试需要修改以确保测试运行稳定。

最后,基于大量的测试运行,AI可以优化测试中使用的等待时间,以等待页面加载,并且还可以处理在不同分辨率上运行的测试。所有这些都大大减少了花在测试维护上的时间,并帮助解决了持续测试的最大瓶颈之一。

从生产数据中持续学习

在这个快节奏的环境中,客户是王,观察和学习客户如何使用我们的产品非常重要。这适用于您拥有的Web、移动或桌面应用程序。

通过自主测试,我们现在有了一个方法,让AI开始观察和学习我们的客户是如何使用产品的。基于此,它可以开始根据真实用户数据创建测试。

它足够智能,能够识别常用的操作,例如登录/退出应用程序,并将它们聚集到可重用的组件中。然后,它将这些新创建的可重用组件注入到我们的测试中。现在,突然之间,我们已经拥有了AI根据真实数据编写的实际测试,以及可以在其他测试中使用的可重用组件。

这让我想起了伟大的史蒂夫·乔布斯的一句名言:“从客户体验开始,然后反向工作。”

消除依赖性

测试自动化的另一个挑战是为可能依赖于尚未实现或尚未实现的其他模块的系统编写测试。通常在这些时候,我们会模拟服务器或数据库的响应。现在AI可以帮助我们做到这一点。

一旦我们编写了一些测试,并在一段时间内一致地运行它们,AI就可以开始记录所有服务器响应。下次我们运行测试时,测试将不再与服务器或数据库通信,而是访问存储的响应(这是在AI的帮助下实现的),并继续运行,没有任何障碍。

结果,测试运行得更快,因为等待响应的延迟被消除了,对物理数据库或服务器的依赖已经完全消除了。

简化测试的编写和执行

让公司难以推进自动化的一些最大障碍是使用所选工具或框架编写和执行测试所需的时间和努力,以及执行此任务的熟练资源的可用性。

即使公司决定推进自动化测试,团队也必须花费相当多的时间来编写和执行测试,这是由于应用程序的复杂性、可用的工具以及使用的编程语言。

现在,有基于AI的工具可以帮助缓解这些问题。过去需要一周时间来编写和执行的测试,现在可以在几个小时内使用AI完成。这是可能的,因为使用了动态定位器,并且能够轻松创建可重用组件,进行数据驱动的测试,快速编写和执行测试,以及轻松地将CI/CD系统与公共和私有网格集成。结果,我们能够拥有可靠的测试,更多的测试覆盖率,更少的维护,以及更快的发布周期。

此外,这开启了测试自动化的新时代,非技术人员也可以参与测试自动化。这有助于增加团队内的协作,并鼓励每个人拥有测试自动化的努力。AI现在为测试自动化带来了全团队方法。

以开发速度发布

有了AI支持向自主测试的过渡,将维护减少到最低,并创建更可靠的测试,团队发布的速度比以往任何时候都好。

有了AI和自主测试,质量保证(QA)可以专注于探索性测试,而大部分测试则不断自动创建和更新。现在,你的发布频率只受开发人员编码速度的限制。QA也更容易通过将测试编写与生产应用程序映射到真实用户流程来最大化用户覆盖率。

现在,我们有能力采取基于风险的方法,并基于真实数据做出决策。最重要的是,由于AI的自我修复机制,我们能够主动修复问题,而不是对它们做出反应。

此外,我们现在能够在很短的时间内创建更多的用户场景。这意味着你可以快速发现错误并更快地发布。有了AI,测试的未来只会变得更加光明。

原文链接:https://simpleprogrammer.com/ai-test-automation/

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blues_C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值