您好,欢迎光临2020中国自动驾驶测试验证技术创新论坛!

AI和测试自动化有什么共同点?

发布日期:2020-05-05

GRCC自动驾驶测试验证技术创新论坛

2020-05-05 14:43:01

手机阅读

点击上方蓝色字体,关注我们




重要要点


  • 人工智能和测试自动化都遭受误解和争议,市场营销不佳和媒体报道不佳引起了争议。据称,两者都对“人类”职位构成威胁。测试工程师担心测试自动化可能会导致他们不必要的职位,而非测试人员则对媒体表示类似的信息感到不满,认为人工智能将占据很大比例的人员空缺。

  • 无论我们是否喜欢AI,它都已经存在,并且它在我们生活中的嵌入超出了您的想象。人工智能已经改善了我们的生活质量,并帮助我们以技术含量较低的方式执行难以实现的任务。

  • 测试自动化很重要,对其进行改进会以积极的方式影响开发团队

  • 多年来,人工智能和测试自动化发展到今天。

  • Testim.io利用这些复杂算法的功能来解决测试自动化的一些最痛苦的陷阱-测试稳定性和脆弱性。

作为测试自动化工程师,您将大部分时间都花在IDE上,编写和调试代码或使用某种软件编写测试脚本。 我们工作中**挑战性的事情之一是在您的应用程序代码旁边维护一个“绿色”(成功通过)测试套件。


关于测试自动化的一点


首先,在软件测试中,测试自动化是使用与被测应用程序分开的软件来验证被测应用程序的所需功能。


令人困惑?好吧,从根本上说,它为利益相关者和开发人员提供了额外的安全保护,使他们可以更快地进行开发和重构,并确信产品不会因代码更改而中断。


在历史的过程中,测试自动化工具随着软件开发趋势而发展。回到时间表,我们将了解到,最初的测试自动化解决方案是笨重的工具,需要大量安装,并配备了“灰色外观”的非邀请式界面。开源革命改变了游戏规则。引入Selenium和Appium等软件测试社区的开放源代码项目迅速普及,并取得了我可以公平地形容为全球统治地位的东西。由于它们的广泛使用和真正的跨浏览器功能,它们最终被标准化,并成为许多商业和免费测试自动化工具的基础。话虽如此,所提供的解决方案远非**。对浏览器驱动程序的需求和Webdriver协议的实施产生了自己的限制,本文将解决其中的一些限制。


随着知名度和可用性的明显提高,人们越来越误解测试自动化可以代替人工测试仪。当然,这完全是胡说八道,对测试工程师的需求仍然很高,而且总会有。但是,软件测试员工作的结束是一个经常讨论的主题,往往会吸引很多读者。


另一个流行的误解是测试自动化可以节省您的时间。好吧,这是最初的目标,但是许多公司未能意识到的是,在大多数情况下,要想从测试自动化中受益(增加测试覆盖面,节省时间和人力),就必须付出大量的努力才能实施并最终进行维护。


返回测试自动化的稳定性-为什么会有挑战?


测试稳定性受许多因素影响。环境不稳定,时序问题,性能问题等。但是,让我们集中讨论受软件开发过程的快速发展影响的主要方面。在设计测试自动化及其基础结构层时,我们会反对在特定时间如何构建应用程序。快速的步调促使应用程序的布局,结构和业务流程不断变化。即使在静态应用程序中,挑战之一也是实现良好的“元素定位策略”,为正确的工作选择正确的选择器。为了对此进行详细说明,让我们仔细看看最常见的测试自动化工具如何在我们的AUT(被测应用程序)中定位元素。为了使我们能够对AUT执行操作,我们需要首先确定目标Web元素。可以通过测试自动化框架公开的一种定位方法来完成识别。它可以是单个唯一属性值,也可以是Xpath或Css-Selector之类的表达式。一旦建立了足够的唯一标识符,测试就会依靠它来实际找到并执行对正确元素的操作。还需要正确选择Xpath和CSS选择器,以使其成为“强”选择器。


挑战在于应用程序DOM绝不是静态的。属性在更改,布局在更改,并且每次应用程序更改时,我们依赖的选择器都可能变为无效,结果,我们的测试可能会中断。我们将尽快解决问题,但首先让我们看一下另一个声誉欠佳且普遍存在误解的技术领域。


AI,这是怎么回事?


不管好坏,如今,人工智能也已成为流行语。它引起了很多关注,但是,我们真的知道什么呢?尽管AI越来越流行,但围绕它的争议也在不断增加。它的负面声誉使人们对AI一无所知,也不是来自技术背景的人认为它是负面的。


普通人正通过众多媒体渠道被信息轰炸,并且比“ 10项将被AI取代的工作”或“另一起无人驾驶汽车事故”这样的头条新闻要好得多。与让**演讲者将AI视为危险,不可预测,过时的趋势或无法测试的技术相比,这是吸引人群参加会议并引起“嗡嗡声”的更好的方法。


AI声誉不好的另一个原因可能是人们经常害怕新事物和未知事物。测试人员天生就是怀疑论者和批评家,因此他们想象恐怖场景,其中难以控制或测试AI,并且可能导致此类技术中的“错误”。另一方面,不是来自科技行业的人根本就不了解AI的概念以及我们从中获得的好处,最终“养活”了他们在新闻中听到的东西。最重要的是,有评论文章和不良的营销计划使AI具有商业外观。


不管我们喜欢与否


无论我们是否喜欢AI,它都已经存在,并且它在我们生活中的嵌入超出了您的想象。如果您曾经与“ Alexa”或“ Siri”进行过互动,并且收到了推荐观看下一部“ Netflix”电影的建议,那么您可能会遇到这种或其他形式的AI。您最近是否通过世界上****的搜索引擎搜索了任何东西?然后,您必须知道,根据您是程序员还是咖啡壶,“ Java”一词将收到不同的结果。因为该算法可以“研究”您的身份,以及您对Google进行的“志愿服务”,这将使您的搜索更加高效。您最近是否在社交媒体上上传了以朋友为特色的照片?然后,您一定已经注意到了新功能,该功能可以自动识别他们的脸并在上传的图像中“标记”它们。您是否曾经想过为10个人(例如10个人)拍摄照片能为您节省多少点击次数?顺便说一句,如果我们提到照片,那么新的年龄猜测功能又如何呢?好吧,我讨厌那个。总是说我比实际年龄大。哦,那运输领域呢?我们有自动驾驶汽车和自动泊车设施。讨厌停车吗?不喜欢开车吗?您实际上可以出去购买可以满足您需求的汽车。特斯拉(Tesla)和奥迪(Audi)等知名汽车制造商是该行业的一部分,该行业在开发和完善该技术方面进行了出色的革命性工作。他们**吗?当然不行,但是不存在**的软件,如果存在,那么像我这样的测试人员将失业。


恐惧与事实


您是否了解**的自动驾驶汽车事故?好吧,我希望您能坐下来,因为我有个灾难性的消息给您。准备?到这里来-在这个星球上发生的所有致命事故中,有99.9999%是由驾驶员造成的。哦,顺便说一句,首先开发驾驶员辅助技术和自动驾驶汽车的目的之一是帮助减少“人的因素”,因为他们称之为每年造成数百人死亡的“人为因素”。


以上所有例子说明了技术会随着时间的推移不断发展,以满足我们的需求,提高我们的生活质量,娱乐我们,并帮助我们以更少的技术支持方式来完成我们努力完成的任务。


我们做了什么不同的事情?


最大的问题是,如何提高测试稳定性。我们知道,通过利用AI和与机器学习相关的算法,我们可以使测试更加稳定。


我们做出的主要决定之一是,我们不会将Selenium WebDriver用作解决方案的主要基础,因此,我们可以实现自己的方式来捕获和执行AUT上的动作。我们开发的第一个产品是无代码测试自动化工具。该产品具有一个浏览器扩展和一个Test-Editor,它使用户执行的每个UI动作都可以在该编辑器内生成唯一的测试步骤。测试步骤包含有关用户对其执行操作的目标元素及其属性的详细信息。这种方法使我们能够实施所谓的“智能定位器”,以评估数百个属性并对它们进行评分,这样,如果DOM发生变化,您的测试就不会中断。


它是如何工作的?


在机器学习中,有一个称为“置信度”的概念。它涉及估计机器学习算法对看不见的数据的性能。


让我们通过一个相当原始的示例来简要地讨论它。假设我们正在开发一种可以识别车辆图像的算法。因此,我们将拍摄100张不同车型的图像,将其“标记”为车辆,并将其“馈送”到我们的算法中。一旦学会了识别车辆,我就可以向我的算法提供从未评估过的汽车模型的图像,而且非常令人惊讶的是,它将认识到它是具有高度信心的车辆。为什么呢?,因为它有4个轮子,一个门和一个方向盘,并且形状大体上类似于汽车(您是否熟悉这句老话:“如果它走路像鸭子,听起来像鸭子,那么它必须做鸭子”?)。


因此,一旦我们了解了使用DATA建立置信水平的概念,就让我们看看如何将其应用到测试自动化中。在寻求**算法的过程中,我们发现可以对WebElement应用类似的逻辑。一旦开始捕获测试步骤,该算法将“研究”他可以“学习”的所有有关该元素以及导致该元素的任何元素的信息。假设我的目标元素(我想点击哪个)是一个链接。我们的算法将捕获到它是一个<a>标记,其所有相关属性和值,然后继续将DOM向上移动到围绕它的<div>,它是属性,索引和值,因此一直进行到将评估其最后找到的相关信息。我们捕获的这些属性将被输入到算法中,并在运行时与实际应用程序DOM进行比较。然后,它将为我们提供得分和对发现的任何更改的视觉确认。使用这种方法,我们能够实现一种全新的方式来增强稳定性。由于我们可以查明应用程序中的变化并相应地评分,因此我们可以设置阈值,以便即使唯一属性之一中断,它仍然能够找到目标元素并对其执行所需的操作。


我经常被问到的一件事是使用这种工作方法可以触发“误报”。好吧,它只需要一种更聪明的方法来设计您的测试,例如将验证放在重要的位置。该算法所做的全部工作就是定位元素,因此,例如,如果我需要定位并执行文本验证,那么该算法实际上将找到所需的元素,但是如果文本更改,验证将无法通过步骤/测试。话虽如此,如果我只想单击一个按钮,而又不在乎该按钮的位置,在DOM中的放置位置或外观如何,那么设计师决定改变这一事实。页面的布局,还是开发人员更改了某些属性,是否应该在没有正当理由的情况下通过我的测试?使用智能定位器的策略效果很好,我们决定在我们的编码和无代码自动化解决方案中都实施它。


结论


在结束之前,我想向您展示一个简短的视频。它实际上是从1997年开始生产的,它具有一个称为“ Navlab”项目的自动驾驶汽车,并由一个名为“ Alvin”的人工智能软件提供动力。你可以想象?1997年,想想我们那年拥有的计算机。


我认为这段视频中最重要的部分实际上是她说“几年前,她曾以为蜂窝电话会像现在一样普遍”的最初几秒钟。我认为,如果我能回到过去,并向那位女士展示我今天的手机,她的头发会当场变成灰色,但请考虑一下这一小技术如何改变了我们的生活。


我想在这里说的是,工具和技术旨在为我们提供帮助,并且随着我们的需求和生活方式的发展和进步。几年前运作良好的技术还不足以使当今的公司快速运转。就我们而言,技术进步使我们能够积极影响许多团队。快速移动的能力,而不必担心不断稳定和重构测试。它使他们能够更快地发布,推送更多代码,更频繁地部署并专注于真正重要的事情-这是关心产品质量而不是持续维护。


关于作者

Daniel Gold是Testim.io的质量保证和自动化主管,Blogger,讲师和国际发言人。Daniel曾担任过各种职务,包括从头成立质量检查和测试自动化部门。丹尼尔(Daniel)和他的团队在目前的职位上,正在塑造下一代AI辅助的QA自动化工具如何帮助我们将来实现测试自动化。




相关文章

视频| rFpro创建Mcity自动驾驶汽车测试设施的数字孪生
雪和冰构成无人驾驶汽车测试的令人讨厌的障碍
阿里发布**自动驾驶测试平台 日均可测试800万公里






SELECTED EVENTS





 

长按二维码识别关注


  • 电话咨询
  • 021-2230 6692
  • 15021948198
None