将人工智能(AI)应用于软件测试中
人工智能已经有了长足的发展。也许你看过最近的编舞机器人视频?这些机器人的敏捷性和衔接性非常惊人,可以如此准确和高效地完成这些有趣的动作。比起执行简单的任务,行动力有限,这是一个巨大的成就。
但在这个精心安排的程序中 在一个非常受控的环境中 它们完全是在做它们被编入程序的工作 它们并没有真正展现出自己的智能或决策形式,来决定用音乐中的哪一段来表演什么动作。
它们确实拥有智能控制系统,可以提供平衡和定向,但这与根据音乐中发生的情况独立选择何时进行高踢或跳跃是不一样的。
其中一些机器人还包括额外的功能,使它们能够执行某些任务,做出特定的选择,并对周围的环境做出反应。人工智能(AI)增加了自动响应外部输入和实时变化的维度。这使得机器人有可能在环境发生变化时对其进行评估,并产生适当的反应。虽然机器人领域是人工智能应用的一个典型例子,但也有许多其他应用。
将人工智能应用于软件测试中
人工智能已经显示出巨大优势的一个关键领域是自动化软件测试。创建的每一段代码都需要进行测试,以验证它是否符合要求并提供预期结果。
执行手动测试以实现这些目标是枯燥乏味和耗时的。自动化你的应用程序测试可以加速验证和确认代码的能力。
查找和修复错误 利用人工智能进行更快速的测试
将人工智能添加到组合中,可以进一步增强流程,使发现和修复错误变得更快、更容易,即使在环境不可预测的情况下。随着软件复杂性的增加,自动化也必须进行扩展,以提供更多的功能,在工作流程中更早地识别和解决问题。
利用AI提高DevOps工作效率
很明显,拥有能够根据代码或测试的变化应用决策的测试软件可以使CI/CD工作流程受益,并提高DevOps团队的生产力,因此,人工智能在多种工具中找到它的方式是有意义的。
将AI与机器学习相结合
在之前的博客《什么是软件测试中的人工智能》中我们曾说过,这些人工智能能力“可以审查当前的测试状态、最近的代码变化、代码覆盖率和其他指标,决定运行哪些测试,然后运行它们”,而机器学习(ML)"可以通过应用算法来增强人工智能,让工具通过收集测试产生的大量数据来自动改进"。这涵盖了很多领域!
这已经发展为将使用观察到的数据的决策能力纳入软件测试工具,包括实时推理和学习。在AI和ML的协助下,测试变得更快、更容易左移,提供更早的缺陷补救,降低交付的风险。通过收集和结合测试数据,机器学习可以有效地更新和解释某些软件指标,显示被测应用的状态。
多年来,Parasoft已经将AI和ML的多项创新融入到多个自动化测试解决方案中,以实现更智能的测试创建和执行,跨越测试金字塔的多个层面。为此已经投入了大量的精力,让客户的测试变得更加简单。
使用人工智能进行软件测试
从单元测试和静态分析开始
2017年,Parasoft在Parasoft Jtest中引入了AI测试功能,以提高Java开发人员和测试人员在静态分析、单元测试、代码覆盖率和可追溯性等方面的工作效率。该工具包括JUnit的单元测试助手,以在更短的时间内实现更高的代码覆盖率。一个关键的功能是它能够建议使用存根和mocks来确保测试的代码隔离,然后自动创建这些mocks和存根来简化测试创建。
Jtest的另一个AI功能是它能够检测没有现有测试覆盖率的代码,并确定需要哪些参数、存根和mocks来自动创建新的测试以覆盖这些代码段。这有利于通过识别应用程序的差距来提高代码覆盖率。
AI也提高了从静态分析中获益的能力。通过根据观察到的行为对发现进行分类,并对这些发现进行优先处理,以便进一步调查。Parasoft的人工智能识别代码中的热点,同时机器学习通过观察团队与违规行为和代码库的互动,发现对开发人员重要的内容。这大大减少了人工工作,针对潜在的高风险安全漏洞或低质量代码的区域,用最相关的警告提醒开发人员。
向金字塔上移至API和UI级别
2018年,我们的无码API测试解决方案Parasoft SOAtest中也加入了AI和ML,使测试人员能够生成有意义的、可重用的、可维护的API测试。从UI使用中轻松生成,无需脚本。这一能力还能帮助技术含量较低的团队将测试策略扩展到UI测试之外,提高整体测试覆盖率,减少他们的学习曲线。
最近,在2019年,Parasoft Selenic被引入,以提高Selenium Web UI测试的质量和维护。Selenic中的AI会在测试运行过程中识别定位器、等待时间等因素的问题,并自动自愈破损的测试,让执行完成。然后,它为你提供了一个推荐的修复列表,你可以通过Selenic与Eclipse和IntelliJ的IDE集成,轻松地直接融入到测试代码中。这对于更新Web UI测试流程来说是一个巨大的节省时间的方法。
但创建和维护测试自动化只是第一步。解锁持续测试的关键是拥有一个可用、稳定、可控的测试环境。服务虚拟化使得在你的测试环境中模拟广泛的约束条件成为可能,无论是由于不可用性还是不可控制的依赖性。Parasoft Virtualize利用AI从服务交互中开发出数据模型,然后应用ML,利用这些模型实时学习数据场景,因为它从测试环境内监控不同的使用模式。
利用AI优化软件测试以应对变化
由于API的复杂性和用户界面的频繁变化,需要定期识别、审查和更新受变化影响的测试套件。手动完成这项工作是非常繁琐的,而且容易出现人为错误。
为了减轻UI变化,Parasoft Selenic包含了AI启发式方法,可以诊断测试失败,并生成如何修复测试的建议。利用Parasoft SOAtest的Change Advisor快速核对API变化,主动扫描API接口,寻找服务中的变化,然后确定测试资产如何受到这些变化的影响,帮助用户轻松更新。
为了节省重新测试已经变化的代码的时间,上述Parasoft的三款产品(Jtest、SOAtest和Selenic)都加入了一个名为测试影响分析的AI驱动能力,它将你的套件中的相应测试与代码库关联起来,进行智能测试执行。
当代码发生变化时,Parasoft工具可以识别软件构建之间的变化,并将其映射到指定需要执行哪些测试来验证这些变化。
现在你可以在正确的时间执行正确的测试,更快地完成测试。谁不喜欢在更短的时间内进行更彻底的测试呢?
利用AI和ML实现共赢
随着繁琐和重复性的任务继续占据软件测试的主导地位,有很多机会可以将人工智能和机器学习应用到软件测试自动化中,帮助用户更快速地适应和应对现代软件开发的挑战。
作为这一领域的开创性创新者,Parasoft通过利用这些先进的方法,不断为软件测试工具增加效率和智能。Parasoft工具使用AI和ML来协助和增强你的应用程序开发和测试团队:
- 简化有意义测试的创建和维护。
- 减少因测试不稳定或不可控的测试环境导致的构建失败。
- 精确定位测试失败的根本原因以及重要的安全和质量问题。
- 简化测试执行以优化变更管理。
- 还有更多的功能
想要了解更多关于将AI驱动的自动化测试添加到你的软件开发工作流程中的信息?请联系我,我们一起探讨你感兴趣的领域。