当前位置:首页 > 新闻动态 > 行业资讯

软件测试中的AI技术

编辑日期:2021/5/24   作者:ASTC   来源:软件质量报告   点击次数:
【字体:

     根据2019-2020年世界质量报告,基于人工智能的测试正在兴起,为了让测试变得更“聪明”、更高效,企业在软件测试中采用基于AI的工具和过程。通常情况下,软件测试中应用AI会使整个测试过程更快、更清晰、更容易,以及更省钱。

        测试自动化用于支持 “持续测试” 过程已经很多年了,但目前需要更有效的工具和技术,比如在软件应用和测试中嵌入AI,这是交付高质量和确保卓越用户体验的需要。

一、 什么是基于AI 的测试?

        基于AI的测试是一种利用人工智能和机器学习(ML)算法来有效测试软件产品的测试技术,其目标是使测试过程更加智能和高效。在测试中采用人工智能和机器学习进行逻辑推理和解决问题,可以改善整个测试过程。此外,在这种测试方法中,AI测试工具使用数据和算法来设计和执行测试,而不需要任何人工干预。

二、 AI在软件测试中的演进

        在过去20年里,软件测试有了很大的进步,从手工测试到自动化测试,Selenium被认为是最好的测试自动化工具之一,测试的发展历程令人鼓舞。然而,在当今快节奏的IT世界中,软件测试领域也必须在方法方面进行创新,提出经过充分研究并行之有效的、新的测试方法和技术。

        AI算法可以完全模拟人类智能,机器学习允许计算机在没有任何人工干预的情况下自主学习。人工智能和机器学习都涉及到特定的算法,这些算法可以访问数据,通过提取模型从数据中学习,从而做出决策,并用于软件测试。

        不少公司争相开发能够利用AI和ML算法有效测试软件产品的工具。我们还看到,企业从基于AI的测试中受益良多,因为它将支持更快和持续的测试,完全自动化,无需任何人工干预,还可以改善产品的ROI(投资回报率)。

三、 软件测试中采用AI的好处

·        视觉验证

        AI具有模式识别和图像识别能力,可以对应用程序的界面进行视觉测试、检测视觉方面的缺陷。这有助于确保所有的视觉元素都是引人入胜的,并能正常发挥作用。不管控件的大小、形状如何,利用AI都可以识别动态UI控件,并在像素水平上对它们进行分析。

·        更准确的测试结果

        手工测试中出现人为错误的几率很高,特别是在执行重复性任务的情况下。自动化测试有助于消除这些人为错误。但是,随着AI在自动化测试中的出现,可以更有效的处理重复的任务,更准确地记录测试结果。因此,AI有助于消除微小的错误机会,并提高测试的整体准确性。

·        更高的测试覆盖率

        测试中的AI有助于提高测试覆盖率,因为它可以无缝地检查文件内容、数据表、内存和内部程序状态。它还有助于确定程序是否按预期工作并保证有效的测试覆盖率。

·        节省时间、金钱和精力

        每当源代码发生变更时,都需要重复执行测试。如果采用手工测试,会非常耗时,并且需要测试人员付出大量精力。在AI驱动的测试中,重复的测试任务可以被正确、快速和有效地执行。

·        更快的产品上市时间

        AI驱动的测试支持持续测试,因此产品发布速度更快,可以更早进入市场。

·        更少的产品缺陷

        软件测试中的AI有助于在研发早期快速发现缺陷,从而减少缺陷,提高产品的可靠性。

四、 AI测试中的四项关键技术

·        差异测试:对软件版本之间的差异进行分类并比较。

·        视觉测试:视觉测试是一种软件测试技术,通过基于图像的学习和界面比较来测试UI和进行用户体验测试。

·        声明性测试:它的目的是用一种自然的或特定领域的语言来定义测试的意图,由测试系统来决定如何进行测试。

·        自我修复:当软件的UI更改时,会在测试执行过程中自动更正页面元素的选择。

五、 AI测试工具分类

·        差分测试工具(Differential Tools

        利用AI和ML算法来识别代码相关问题、安全漏洞、回归等,是通过代码扫描、单元测试自动化等实现的。这一类工具包括:

        Launchable基于ML算法,根据历史测试结果和软件源代码的变更预测每个测试用例失败的可能性。该工具允许用户记录测试套件,先运行可能会失败的测试。人们可以用这个工具动态选择有失败可能性的测试用例集合,从而让测试在几分钟内快速完成。

        谷歌OSS-Fuzz是一个模糊测试工具,旨在使通用开源软件更加安全、稳定和可靠。这个工具结合了现代模糊技术和可伸缩的分布式执行,支持C/ c++、Rust、Go和Python代码

·        视觉测试工具(Visual Tools

        随着各种屏幕大小和配置的平台数量的不断增加,如何有效地进行UI测试已经成为测试工程师和开发人员的一项乏味的任务。此外,为了提供更好的用户体验,产品的UI层会不断变更,迫切需要视觉AI测试工具有效地测试UI的所有变体。这一类的工具包括:

        Applitools是一个AI驱动的视觉测试和监控平台,被定义为一个由视觉AI赋能的下一代自动化测试平台,主要功能包括Applitools Eyes,有助于提高测试覆盖率和减少测试维护成本。超快网格有助于跨浏览器和跨设备的测试,并将功能和视觉测试速度提高了30倍。这个Applitools平台可以集成目前所有的现代测试框架,并与许多现有的测试工具(如Selenium、Appium、Cypress等)协同工作。

        PercyBrowserStack公司的Percy是一个一体化的视觉审查平台,具有惊人的功能,如像素-像素之间的差异检查,响应时间的差异检查,快照(snapshot)稳定性检查。该工具允许跨浏览器渲染、高速渲染,并具有并行测试的功能。Percy帮助团队进行自动化视觉测试。它可以捕获屏幕截图,并将其与基准截图进行比较,显示视觉方面的差异。它增加了视觉测试的覆盖率,增强团队发布代码变更的信心。

·        声明式测试工具(Declarative Tools

        这类工具旨在提高测试自动化的效率和稳定性,利用AI和ML,并具备基于机器人过程自动化(RPA)、自然语言处理(NLP)、基于模型的测试自动化(MBTA)和自主测试方法(Autonomous Testing Methods,AT)等方法的各项功能。这些方法的主要目的是通过智能的自动化来消除繁琐、容易出错、重复的任务。这一类的工具包括:

        Tricentis: AI驱动的下一代自动化测试工具,允许敏捷和DevOps团队快速实现测试自动化目标和基于AI的持续测试。这个工具对软件应用进行端到端的自动化测试,支持测试用例设计、测试自动化、测试数据设计和创建,以及测试分析等多个方面,从业务角度进行UI和API测试。

        UiPath Test Suite用于测试自动化和测试过程的集成,帮助启动弹性机器人(resilient robots),并确保测试自动化的质量。UiPath Test Suite由UiPath Studio Pro、UiPath Test Managers,和UiPath Orchestrator三部分组成。UiPath Studio Pro通过拖放界面开发自动化脚本;UiPath Test Manager用来管理测试任务;UiPath Orchestrator用来执行测试任务。UiPath Test Suite全方位的提供测试支持,并帮助RPA开发人员开发更多的测试自动化,更好的执行测试任务,而且无需修复测试脚本。

·        自我修复测试工具(Self-healing Tools

        在自动化测试中,测试的稳定性、可靠性和脚本维护的问题一直存在,这也是在测试自动化中引入AI和ML的主要原因之一。为了解决这些问题,有些公司已经开发出基于录制-回放机制的自我修复工具,ML引擎用于被录制脚本的自我修复。这一类的工具包括:

         Mabl是为CI/CD(持续集成/持续交付)构建的领先的智能测试自动化平台。Mabl抓取应用程序屏幕,并开始运行大多数应用程序常见的默认测试。它还使用ML算法来改进测试执行和缺陷检测。

        Testim使用AI和ML算法来实现测试的自动化。AI被用来加快测试脚本编写、执行和维护的速度。Testim基于ML实现自动化测试脚本的自主维护,能够快速编写稳定性高的测试脚本。

五、 结论

        随着技术的进步,越来越多的企业开始采用敏捷和DevOps实践。但是,随着这些方法的采用,对支持持续测试和持续发布的健壮工具的需求也在增加。于是,基于AI的测试自动化工具应运而生。AI驱动的测试自动化工具不仅支持DevOps实践,还带来了和人类相似的决策能力,最终有助于在更短的时间内发布高质量的软件。