人工智能会让软件测试人员过时吗?可能不会。人工智能更有可能让软件开发人员被淘汰。但毫无疑问,人工智能意味着软件测试的重大变革。这篇文章讨论了我们可能很快就会看到的一些变化。
很久以前,测试自动化取代了测试人员执行机器人的工作,即执行由其他人设计的测试。测试人员并没有消失。他们腾出时间来设计更多更好的测试,显然,还可以将它们自动化。
后来,敏捷方法和 DevOps 应该使测试人员变得多余,因为开发人员会在构建代码时测试他们的代码。事实证明,大多数开发人员更喜欢编写代码而不是测试代码。我们还了解到,需要跨应用程序边界测试整个业务流程。软件测试人员将其范围扩展到探索性测试和端到端测试。
人工智能将如何改变软件测试
人工智能将改变测试人员的角色,成为测试人员不太擅长的活动的好帮手。人工智能可能会塑造整个测试过程,而不仅仅是改进单个任务。
测试人员的工作特点是,相同的事情会被多次完成,几乎没有变化,并且需要大量等待。测试人员等待:
要测试的新版本。
自动化测试运行完成。
修复了阻止进一步测试的错误。
等等...
测试人员还执行需要大量关注细节且可能不太积极的任务,例如分析自动化测试运行的结果、维护因应用程序更改而失败的自动化测试,或计算和报告测试状态。他们在这些重要任务上花费的每一分钟,都有其他人在等待测试结果。
测试的大部分工作是测试执行。它在很大程度上是自动化的,但也不断消耗人力;人类的努力正在减慢整个测试周期。我们仍然需要人类自动化由机器人运行的测试,在应用程序更改时维护这些测试,并分析测试结果。已经有支持人工智能的测试工具可以根据检测错误的可能性、自动修复损坏的测试或预填充缺陷报告来选择和排序测试。
人工智能对质量保证的直接影响
在下一波自动化测试创建中,我们将看到直接根据用例描述生成测试的工具,甚至更直接地通过观察人类测试人员探索应用程序来生成测试。这是从自动化测试向自主测试迈出的一大步。不过,我们可能还没有完全做到这一点。大多数应用程序和业务流程都是专有的,训练人工智能所需的数据分散在不同的软件测试工具中。因此,我们很可能首先看到人工监督的测试,而不是完全自主的测试。
大多数软件团队的测试不是太多而是太少。随着人工智能的使用,测试资产的规模可能会增加。虽然运行自动化测试实际上是免费的,但获得测试结果的速度仍然很重要。因此,安排回归运行以便首先运行那些最有可能检测到错误的测试将是有益的。如果AI足够了解生命周期数据,它可以查看代码更改和以前的测试结果,确定如何安排测试,从而加快反馈周期。
如果人工智能能够根据检测到错误的可能性来选择测试,那么它还应该能够预测可能在哪里发现错误。通过将手动探索性测试工作集中在这些功能上,人类测试人员也可以从这些信息中受益。
对于很多人来说,AI 就是ChatGPT所展示的自然语言生成能力的同义词。这些功能在测试中也占有一席之地。如果人工智能知道如何创建测试用例,它也知道如何在缺陷报告中描述测试执行。人工智能生成的缺陷报告可能比人类在急于检查下一个测试用例时匆忙编写的报告更容易理解。
除了缺陷报告之外,测试还会产生大量有关软件质量甚至软件创建过程的定量数据。问题在于,接近测试、了解数据的人不愿意向那些应该理解的人解释,而那些应该理解的人可能不愿意听。人工智能可以通过将测试统计数据转化为口头见解、结论和建议,为双方及其领导人带来巨大帮助。
人工智能会取代质量检查吗?
人们很容易想象人工智能更容易取代测试人员或开发人员。生成测试比生成代码更容易。另一方面,生成有意义的测试需要更多的想象力。毕竟,编码将需求转换为使应用程序正常工作的代码,而测试则应将需求转换为一个或多个使应用程序崩溃的测试。
不过,从大规模来看,测试设计比编码更简单。构建大型信息系统比为单个功能编写代码更具挑战性。为大型信息系统设计测试并不比为单个功能设计测试困难多少。这只是更多的工作。不过,测试设置可能更具挑战性。
例如,设置和验证一个测试,该测试在移动应用程序中创建一个订单,该订单在 Salesforce 中进行处理,然后在 SAP 中进行流向履行,这是一项非常复杂的任务,尽管测试场景本身非常简单。我们需要人工智能辅助人类以及人类辅助人工智能。
即使是这些小例子也证明,在不久的将来,情况将会大不相同。人工智能将提高构建软件的速度和生产力,但它尚无法自主构建软件并保证其质量。
如果我今天是一名全职软件测试员,我就不会担心人工智能会抢走我的工作。我会担心如何测试人工智能。
领取专属 10元无门槛券
私享最新 技术干货