人工智能、机器学习和软件开发的未来
你和你最喜欢的应用程序之间的每一次成功交互都是质量检查团队共同努力的结果。
您与您最喜爱的应用程序之间的每一次成功互动都是质量保证 (QA) 团队共同努力的结果。这些孜孜不倦的问题猎手确保全球移动设备用户日常需求所依赖的应用程序的每个方面都能在每次发布和更新中顺利运行。
当您在早晨的闹钟声中醒来、查看天气或向所爱的人发送消息时,我们必须感谢这些通常是默默无闻的英雄。
当该团队的努力失败时,他们肯定会听到这样的消息:许多用户会毫不犹豫地在流行(且非常明显)的评论网站上提供负面反馈。
现代移动应用程序用户——也就是我们现在几乎所有人——的期望是完美,QA 团队的主要目标是确保每次部署都没有错误的产品。
错误和问题的存在会很快让应用程序沉没。不幸的是,要确保无错误的体验绝非易事。而且它只会变得越来越复杂。今天的软件开发世界变得越来越复杂,而针对这些复杂性带来的许多潜力和场景进行测试意味着测试本身变得越来越复杂和资源密集。
鉴于移动应用程序开发的历史,预计应用程序只会变得更加复杂并且需要更高级和更频繁的测试是非常合理的。但一定要这样吗?我们是否注定需要越来越多的员工和越来越大的 QA 团队?
1980 年代:手动测试
让我们花点时间考虑一下我们是如何走到这一步的。直到最近——“哇——我猜这真的是很久以前的 1980 年代了”——软件 QA 团队严重依赖手动测试他们的设备,以确保推向市场的产品性能良好.
那是一个更简单的时代,设备的功能和活跃场景都少得多,因此手动编码是一种足够的测试方式。虽然繁琐的工作在彻底执行时会花费大量时间,但手动测试对测试人员来说效果很好。
但是技术作为不断发展和改进的野兽,以自动化的形式迎来了变化,极大地改进了测试过程。软件不断进步并变得更加复杂。
1990 年代 – 2010 年代:编码测试自动化
在接下来的几十年里,测试的进步使 QA 测试人员摆脱了通过测试用例进行实际操作的要求。他们不再需要手动找出意大利面条式代码堆中的错误。
他们在软件问题的战争中有了新武器:大规模手动测试已经变得不切实际,如果任何 QA 团队要在合理的时间内彻底测试一个可能发布的版本,他们需要通过以下方式执行测试脚本一种自动化工具。
那么,复杂性之战赢了吗?不完全的。最好不要将自动化测试视为一种革命性的创新,而应将其更多地视为与软件不断发展的复杂性进行军备竞赛的又一步。
时间在流逝,但地平线上还没有明显的胜利。随着移动应用程序的流行并成为我们许多日常生活的核心工具,自动化测试逐渐失势。幸运的是,一场期待已久的变革即将来临,一场真正的革命。
2020 年代:无代码测试自动化
直到最近,QA 测试团队的困境确实变得相当可怕。为了确保高质量的产品发布,自动化测试需要越来越复杂的代码工具,这意味着 QA 团队需要将越来越多的程序员专门用于测试,而不是其他任务,例如生成新功能。这不仅成本越来越高,而且还意味着将发布日期越来越往后推。但另一种选择,即灾难性的发布,可能要昂贵得多(正如许多备受瞩目的失败发布所证明的那样)。
但不可避免的事情来了。通过抽象原则——基于接口的表示为极其复杂的过程铺平了道路(例如,考虑隐藏在你正在阅读的文章后面的 1 和 0)——许多专家早就预示着一个新的抽象层,一场“无代码革命”,这确实在过去几年取得了成果。
最近出现了一些平台,允许在各个行业中使用无代码解决方案。无代码革命的一个更明显的例子是真正所见即所得的网站编辑器(想想 Squarespace 或 Wix)的流行,而在软件测试的不那么明显的领域,我创立的公司 Sofy 是一个独特的平台,可为移动应用程序提供无代码测试。
无代码革命带来了翻天覆地的变化,让非专家也能处理复杂的任务,让专家有更多时间处理其他任务。因此,在不久的将来,我们无疑会看到越来越多的面向各个行业的无代码解决方案。
2025?真正智能的自我测试软件
也就是说,在事物的计划中,无代码革命只是向前迈出的又一步,我相信软件测试的下一步是测试自身的软件。
在这方面我并不孤单:就像无代码革命一样,自我测试软件多年来一直是一个预期的现实。以技术的变化和增长速度,可以想象到 2025 年,无需人工干预即可测试 AI 运行的智能测试自动化(即自测试软件)将大大扩展,这一点也不荒谬。
目前,智能测试的有限实施通过依赖机器学习 (ML) 和人工智能平台提高了软件发布的速度和质量。这允许进行快速和连续的测试(并由此提高投资回报率)。此外,AI 可以复制人类智能,而 ML 则可以让计算机在没有人为干预的情况下进行学习。
人工智能和机器学习采用基于深度学习的算法来访问数据,并通过提取模式从数据中学习,从而更有效地进行调试和决策。此外,这项技术允许 QA 团队跨各种设备和不同的外形规格执行许多测试。
不是几天,而是几小时。现在这是一场革命。
没有代码仍然需要人;人不是机器:他们会犯错误。即使没有代码——虽然大大减少了——人为错误仍然是导致严重问题的一个因素。考虑由人工测试引起的资源、时间和精力的过度使用。
智能测试自动生成和维护测试用例并产生有价值的收益,这些收益可以概括为提高生产力和输出质量。但要实现智能测试自动化,必须首先结合以下要素:
- 从人类输入中学习:当机器进行测试时,它必须像人类一样行动。它必须了解人类需要和想要什么,以及人类如何使用设备。正如我们所讨论的,这可能很难预测,复杂的应用程序意味着复杂的测试场景和模式。然而,机器必须从这个有利的角度理解和操作。
- 从实际使用的产品数据中学习:机器必须了解应用程序在不同生产环境中的使用方式。这包括了解可能正在使用的设备、设备设置的语言及其使用流程,包括菜单、屏幕和操作的使用。
- 训练数据就像自动驾驶汽车(一个尚未破解的坚果)一样,机器学习需要训练数据来帮助概述软件模式。
这三项必须内化并针对每次代码更改进行彻底测试。然后,必须以无缝和智能的方式对它们进行聚合和优先级排序。这是一项不小的壮举,但我们将继续朝着下一步努力。
我们还没有。在我们继续前进之前,必须完成这些步骤中的每一步,但这实际上只是时间问题。
自我测试软件只是第一步:我预测我们可以期待其他刚刚投放市场的无代码示例向机器学习方向发展。我相信基于一些用户指定的参数生成整个网站成为现实只是时间问题。今天,无代码革命终于到来了,但随之而来的是另一场革命的开始。