此刻在质量保障(QA)中最令人激动的事情是机器学习和人工智能给测试技术带来的潜在的影响。我们迫切地想要知道,软件如何能够做到自我测试?软件能够自动地跟踪和消除Bug吗?
这并不仅仅是幻想。2016-2017世界质量报告上有这样的阐述“我们认为人工智能将是克服日益增长的质量保证和测试挑战的重要的解决方案。基于人工智能的测试方法将是继基于风险的测试策略和自动化测试技术之后的另一个测试技术的变革浪潮”。
Forrester的研究认为,测试是目前“应用AI进行软件交付的生命周期中最受欢迎的阶段”。在我们在Belatrix进行的一项调查中,81%的商业和技术专业人员(需要注册)说机器学习在五年内将会对其组织造成一些甚至重大影响。
AI支持的测试是继自动化后测试领域的又一个自然的发展。
我们见证了手动测试到自动化测试,再到AI支持的测试的逐渐演变。我们可以追踪这一发展过程:
手动测试仍然可以发挥核心作用:测试开始于并将继续依赖于手动测试。在软件开发过程中总会有bug出现。即使今天我们有那么多的工具可以使用,手动测试仍然是测试策略中的一部分,尤其是为了确保高质量的用户体验。
随着软件变得越来越复杂,自动化变得越来越重要:测试自动化是一种成熟的方法。在许多情况下,它是唯一可实现的选择——在不同场景下运行大量测试用例并按时完成回归测试的唯一方法。它提供了更高的效率,用更少的精力和时间找到大量的缺陷。
未来将会看到支持AI的测试:通过使用大量的数据来有效地使用机器学习和AI,自动化测试会变得“更智能”。我们正在看到支持AI的测试案例,例如,使用可视化验证,或者使用基本机器人轻点和滑过应用程序并测量性能。我们将看到人工智能在自动代码评审中发挥作用,通过漏洞评估提高安全性并自动生成测试用例。 QA工程师用历史数据来训练算法以提高检测率。机器学习也可以用来提供应用程序性能的实时反馈,并自动调整。
尽管人工智能兴起,QA工程师不应该担心他们的工作会被抢走。
在市场上有一些基本的使用机器学习来测试移动应用的测试服务,例如Eggplant AI。这些工具能有效地发现应用中的错误。自动化解决方案背后的引擎通过应用程序生成新的测试路径。我们可以使用通过算法自动化产生测试用例的web应用。然而,你需要注意到,你所获得的测试服务发生在整个产品开发生命周期的末尾。
如果公司决定独自采取这种方式,他们将错过高水平的QA工程师可以提供的巨大价值,从安全和风险管理,可扩展性和性能评估,文档管理,过程保证(如规范和关键指标的跟踪)。
QA工程师能够让AI变得更好。
虽然AI不会让测试人员变得多余,但如果QA工程师不熟悉AI以及AI如何能够帮助自己创造更好的软件,那么他们将正在犯错。AI不仅可以帮助我们更快地发现错误,还可以帮助我们确定需要测试什么,或者哪里更可能发现错误。例如,如果手动测试人员学习使用算法创建测试用例,则可以创建更多与用户体验有关的测试用例,包括测试人员根本不会想到的用例。
我相信机器学习实际上会增加我们对高素质QA专家的需求。这是因为算法的底层软件将根据收到的数据做出决定。潜在的变量在增加,QA工程师如何知道什么是正确的结果?
想象一下基于自学模式的测试的未来。
在思考未来如何发展时,我们有必要讨论一下神经网络和科学家们所取得的最新进展。神经网络虽然可训练,但不一定要从经验中学习。你必须把它们放在“学习模式”。然而,人工智能科学家已经提出了“生成式对抗网络或GANs”,其本质上是多个神经网络,它们相互激励,相互学习。现在设想一个世界,有不同的神经网络在测试、并一直学习破坏软件系统和发现安全漏洞。这更接近无监督的学习,将代表软件构建和测试过程的革命。
如果你是一名开发者,不要以为没有你什么事情,你同样会被AI影响。为了看看这将会是什么样子,看一下一些人在循环神经网络(RNNs)上所做的工作:一位专家能够将奥巴马总统的演讲稿提供给RNN,RNNs网络就可以产生听起来像奥巴马所写的文字。但更加可怕的是,他将Linux源代码添加到RNNs中,现在网络就能够生成结构良好的C代码(尽管它不能编译,你可以想象一个带有监督的神经网络运行多个这样的代码,用一种革命性的方式生成可编译代码将是多么的不可思议)。
在数字时代,支持AI的测试将是必不可少的。
随着各种团体组织希望能够持续交付、企业需要更快的软件开发,支持AI的测试将成为QA工作的核心部分。这将是确保数字时代软件质量的唯一途径。然而,我们仍然需要测试人员,因为人类能够理解其他人类需要什么,而机器在开发“常识”的道路上还有很长距离要走。我们仍然需要有创造力、高素质的QA工程师将他们的见解应用到整个产品开发生命周期中。
更多关于软件测试方面的文章,请前往51Testing软件测试网。(http://www.51testing.com)
网友评论