将AI添加到软件测试过程中主要有哪些好处


  本文内容来源于网络,主要是为了和大家分享一些精心挑选的行业内有价值的一些新闻,版权归原创作者所有,如不慎涉及侵权,请于一月内联系我们,我们会及时删除相关信息,感谢您的理解。

原文标题:人工智能(AI)彻底改变软件测试,还要多久

原文链接:https://www.xianjichina.com/special/detail_472418.html

  软件测试可以占项目预算的25-40%。这是一个昂贵的过程,但却是确保软件正确运行的必要条件。较大的公司将拥有整个团队专用于测试,但是对于许多较小的开发团队而言,庞大的测试部门超出了可用预算。同时,市场需求鼓励了快速的开发阶段,这几乎没有时间进行足够的测试。

  大小公司都在寻求降低成本,提高测试范围和可靠性的方法,同时提供可满足客户期望和期限的软件。在这些压力下,测试人员越来越多地转向人工智能和机器学习来增强他们的测试流程。

  它们也不是唯一这样做的行业。政府,保险公司和医疗行业都在出于各种不同目的向人工智能世界注资。人工智能在几乎所有业务领域中的应用都带来了深刻的变化,这同样适用于软件测试。

  AI和质量保证是机器人天堂的绝配。他们为什么这么好,它们又如何增强软件测试过程?本文将介绍将AI添加到软件测试过程中的一些主要好处,以及为什么应该考虑将AI添加到您的软件测试过程中。

  缩短软件开发生命周期

  工程团队将不断开发和更新处于成熟和人才前沿的新软件。软件的生命周期越来越短,越来越复杂。微服务,第三方API和其他软件包的普及和使用的迅速增长使许多开发人员构建具有数百种不同依赖项的软件,所有这些都需要进行测试。

  在过去通常每月一次发布软件的情况下,领先的工程团队每天发布数十次。对于添加或更改的每个新功能,必须对其进行严格的测试,以确保为消费者准备就绪。现在,流行的开发方法倾向于推动频繁的小更新,这给测试过程带来了更多压力。

  在AI和ML之间找到平衡

  在软件开发的竞争压力和截止日期之间存在着软件开发方面的斗争。开发人员需要满足客户和主管人员设定的里程碑和期限,同时仍要交付高质量的软件。自动化是开发人员非常熟悉的主题,因此,人工智能(AI)和机器学习(ML)的进步现在已应用于软件测试以提高测试这些复杂版本的速度,准确性和成本也就不足为奇了。下面列出了AI和ML带给软件测试的一些主要好处。

  改进代码覆盖率

  像软件开发中的许多主题一样,对于测试套件到底需要多少代码覆盖率也存在争议。一些开发人员主张100%的代码覆盖率,而另一些人则称其为梦想。创建足够的测试需要花费时间,尤其是在尝试达到100%的代码覆盖率的情况下。软件产品通常是有机增长的,这意味着开发可能是一个偶然的过程,随着时间的推移,技术和测试债务会增加。

  将测试作为开发过程中不可或缺的步骤是一件很难的事,因此,如果在公司文化中没有充分重视其优先级,那么软件产品可能会在测试过程中发现自己的漏洞。这只会增加测试人员的压力,测试人员必须选择保持最新状态以测试新功能,或者将注意力转移到修补漏洞和积压待测试的新功能之间。

  借助AI支持自动测试的开发和维护,100%的代码覆盖率不再是梦想,也不是一个巨大的时间浪费。可以训练ML理解代码库,并根据发现的代码单位生成测试。可以对它进行培训,以了解上下文,了解预期的输出,确定对用户最重要的优先级,并生成可以使用自动生成的测试数据运行的测试。整个测试套件可以实现自动化,从而使100%的代码覆盖率成为许多项目中更为现实的建议。

  避免延迟进行回归测试

  回归测试是测试过程中特别耗时的部分。这是因为每次进行更改时都应针对旧代码和新代码运行测试。必须进行回归测试,以确保新功能,更新,补丁和其他修改不会在现有代码中引入错误。这些回归很常见,尤其是在代码编写不充分或项目开发人员的营业额很高的情况下。客户可以提出更改现有功能的要求,这些更改表面上看起来很简单,但是需要对代码进行重大重组,从而进一步增加了风险。

  开发人员需要确保他们不会在代码库中的任何地方引入重大更改,但是当这与快速交付少量更新的需求结合在一起时,回归测试可能很快成为测试过程中的瓶颈。测试整个代码库中的小提交似乎是不可行的,但是小错误可能会带来很大的后果。

  基于AI的自动化测试使对每一个变化(无论是微小的变化)的及时执行完整的测试套件成为可能。AI可以比人类更好地确定测试的优先级,并且很快将能够即时重新定位回归测试的目标,以在较短的运行时间内测试高风险区域。可以将其与其他改进(例如并行测试)结合使用,以减少测试花费的时间。

  平行测试

  强大的E2E回归测试不仅包括测试代码本身,还经常包括在各种设备和浏览器上进行测试;对于Web应用程序尤其如此。顺序测试涉及在一个集合中的每个设备上一个接一个地运行测试套件。即使使用虚拟设备,也可能需要数小时甚至数天的时间:对于快速部署速度而言,时间太长。

  并行测试旨在通过同时(即并行)运行这些测试来显着减少设备测试时间。随着并行处理的发展,可以拆分线程以并行而不是顺序地测试应用程序的多个部分或多个设备和浏览器。AI可以通过经验确定哪些测试可以并不能同时运行,从而为测试提供支持,从而优化测试线程和基础架构资源,以最大程度地提高并行度并缩短测试周期。此处的进一步改进可以使全面的回归测试套件在几分钟内运行,从而支持连续部署,而将回归引入生产的风险几乎为零。

  软件测试的未来

  通过对AI和ML进行优先级排序,动态分配资源并并行运行它们,AI和ML的进步有望增加可自动化执行的任务的种类,并减少完成任务所需的时间。有许多编程语言,有些更新的语言甚至将并行处理支持集成到了语言本身的核心中。这可能会彻底改变软件测试,而传统上这可能是一个昂贵且耗时的过程。通过允许ML学习代码库并自动生成和运行测试,测试人员可以自由地将精力集中在其他地方,同时还可以帮助开发人员以更少的错误提供更可靠的软件。