什么是软件测试中的人工智能?

软件开发行业最新的流行语之一是AI(人工智能)。但这究竟意味着什么?在软件测试自动化环境中,AI如何与其更广泛的定义不同?

当我们谈论AI及其姐妹术语机器学习时,我们通常想表达什么呢下来我们将讨论下我们如何使用AI和机器学习来推进软件测试的最新技术。

如何在测试自动化中实现AI

人工智能是市场上最有重量感的流行语之一。“人工智能”会让人想起像全能超级计算机这样的东西,他们一心想要毁灭人类;以Alexa或Siri的方式提供语音控制协助;电脑棋对手;或自动驾驶汽车。

维基百科定义人工智能研究作为“ …的研究‘智能代理’:即感知周围环境,并采取最大限度地发挥其成功地实现其目标的几率行为有关的任何设备。”但是在我看来,这有些抽象,我倾向于把AI作为该计算机程序或机器思考(自身的原因)和学习(以有益的方式收集数据和修改未来行为)的能力。在这个定义中,我们开始在AI对软件意味着什么的背景下看到更有意义的东西开发工具和技术。

同样重要的是要意识到“AI”的范围会随着时间而变化。例如,在某一时刻,光学字符识别(OCR)被认为是AI中最先进的技术。或者来自Siri和Alexa的问答回答,一度被认为是最先进的,但是现在却基本上被认为是理所当然的存在,并不被认为是人工智能了。软件测试工具也会发生同样的事情 – 随着新功能的发展,现在的自动化创新在未来将会成为现实。但就目前而言,让我们来思考一下2018年的软件测试自动化中的人工智能。

AI在2019年的软件测试自动化中

人工智能在软件开发中的应用仍处于起步阶段,自主程度远低于自动驾驶系统或语音辅助控制等更为发展的领域,尽管它仍然朝着自主的方向前进测试。AI在软件测试工具中的应用侧重于使软件开发生命周期更容易。通过应用推理,解决问题,以及在某些情况下,机器学习,AI可用于帮助自动化和减少开发和测试中的平凡和繁琐任务的数量。

AI在软件开发中的亮点在于应用它来消除这些限制,使软件测试自动化工具能够为开发人员和测试人员提供更多价值。AI的价值来自于减少开发人员或测试人员在最平凡的任务中的直接参与。(在应用业务逻辑等方面仍然非常需要人工智能)

例如,考虑大多数测试自动化工具为您运行测试并提供结果。大多数人不知道要运行哪些测试,因此他们运行所有测试或一些预定的设置。那么,如果启用AI的机器人可以查看当前的测试状态,最近的代码更改,代码覆盖率和其他指标,决定运行哪些测试,然后运行它们呢入基于变化数据的决策是应用AI的一个例子(顺便说一句,Parasoft做到了这一点)。该软件有效地能够在决策过程中取代开发人员/测试人员。将此应用于CI / CD管道的好处是显而易见的。

AI和机器学习

那么,机器学习呢器学习可以通过应用算法来增强AI,这些算法允许工具通过收集测试产生的大量数据自动改进。

机器学习研究是整体AI研究的一个子集,侧重于基于先前观察到的数据的决策。这是人工智能整体的一个重要方面,因为智能需要在学习改进时修改决策。但是,在软件测试工具中,并不总是需要机器学习 – 有时候最好使用工具手动微调人工智能工具以适应组织,然后每次都可以应用相同的逻辑和推理,无论如何结果。

在其他情况下,数据收集是决策过程的关键,机器学习可能非常有价值,最初需要一些数据,然后随着收集更多数据而改进或适应。例如,随着时间的推移,代码覆盖率,静态分析结果,测试结果或其他软件度量可以向AI通知软件项目的状态。

软件测试中人工智能与机器学习的实例

这是Parasoft研究和开发的一个重要领域。令人兴奋的是,我们目前的产品只是一个开始,我们对AI和ML的持续研究继续为将这些技术集成到我们的产品中带来新的方法。以下是我们已经将它们引入的几种实例。

使用人工智能自动化单元测试生成和参数化

第一个例子是Parasoft Jtest,我们的Java开发人员软件测试解决方案,包括静态分析,单元测试,覆盖和可追溯性等。在这里应用AI,我们发布了自动测试用例生成,帮助开发人员填补空白从稀疏的JUnit线束开始。

Parasoft Jtest的IDE插件通过简单的一键式操作为单元测试提供了有用的自动化,可用于创建,缩放和维护单元测试。通过使用支持AI的Jtest,用户可以实现更高的代码覆盖率,同时减少构建全面且有意义的Junit测试用例套件所需的一半时间和精力。

这样做的一种方法是更容易创建存根和模拟以隔离被测代码。底层AI使Jtest能够观察被测单元以确定其对其他类的依赖性,并且当创建这些依赖项的实例时,它建议向用户模拟它们以创建更多独立的测试。自动创建必要的模拟和存根可以减少测试创建中最耗时的部分之一的工作量。

Parasoft Jtest还会自动检测现有测试套件未涵盖的代码,并遍历源代码的控制路径,以确定需要将哪些参数传递到测试方法中,以及如何初始化sub / mocks以达到那段代码。通过启用此AI,Jtest可以自动生成新的单元测试,应用修改的参数以增加整个项目的整体代码覆盖率。

使用AI和机器学习自动化API测试生成和维护

将机器学习添加到组合中的另一个好例子是Parasoft SOAtest的Smart API Test Generator(智能API测试生成器),它超越了记录和回放测试,利用AI和机器学习将手动UI测试转换为完整的自动化API测试场景。

Smart API测试生成器使用推理来理解在执行UI时进行的不同API调用中的模式和关系。根据该分析,构造了一系列API调用,表示在UI流程中进行的底层接口调用。然后,它通过观察不同API资源的内容并将其作为模板存储在  专有数据结构中来应用机器学习。 通过检查用户库中的其他测试用例来更新此内部结构,以便在执行API时学习不同类型的行为,例如,断言或在正确的位置添加特定标头。

这里AI的目标是创建更高级的测试(不仅仅是重复用户正在做的事情,就像你进行简单的记录和回放测试一样)。该工具可识别流量中的模式,创建观察参数的综合数据模型,生成自动API测试,并将学习模式应用于其他API测试以增强它们并帮助用户创建更高级的自动化测试方案。由此产生的自动化API测试更加完整,可重复使用,可扩展且适应变化。

人工智能与机器学习的未来

未来会发生什么呢们正在这个领域积极研发,继续追求人工智能和机器学习的进一步应用,以增强我们的软件测试工具套件。有许多研究途径,但最终目标很明确:帮助团队更有效地开发和测试他们的代码,以便快速创建更高质量的软件。


想要了解Parasoft、Parasoft SOAtest、Parasoft Jtest更多信息或资源的朋友,请点击这里~

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年8月7日
下一篇 2019年8月7日

相关推荐

发表回复

登录后才能评论