机器学习正在改变软件测试的未来
大多数软件开发团队认为他们的测试效果不佳。他们知道质量缺陷的影响是巨大的,并且他们在质量保证方面投入了大量资金,但是他们仍然没有得到想要的结果。这不是由于缺乏人才或精力-支持软件测试的技术根本无效。该行业服务不足。
只有对软件进行了正确和彻底的测试,才能发布成功,并且考虑到完成工作所需的时间和人力,测试有时会占用大量资源。这种巨大的需求才刚刚开始得到满足。
机器学习(ML)已经颠覆并改善了许多行业,它才刚刚开始进入软件测试。头脑正在转向,并且有充分的理由:这个行业再也不会一样了。尽管机器学习仍在增长和发展,但软件行业越来越多地采用它,并且随着技术的进步,其影响开始显着改变软件测试的完成方式。
让我们深入研究软件测试的当前状况,回顾机器学习的发展方式,然后探索机器学习技术如何从根本上改变软件测试行业。
软件测试的一些背景
软件测试是检查软件是否按照设计方式执行的过程。功能质量保证(QA)测试是一种确保从根本上解决任何问题的测试形式,它以三种方式执行:单元,API和端到端测试。
单元测试是确保代码块为每个输入提供正确输出的过程。API测试代码模块之间的调用接口,以确保它们可以通信。这些测试是小型,离散的,旨在确保高度确定性的代码段的功能。
端到端(E2E)测试可确保整个应用程序放在一起并在野外运行时可以正常工作。端到端测试测试所有代码如何协同工作以及应用程序如何作为一种产品执行。测试人员将像消费者一样通过核心测试(他们反复测试所做的事情)和边缘测试(他们测试意外的交互作用)来与程序交互。这些测试可以发现应用程序何时未按照客户希望的方式响应,从而使开发人员可以进行维修。
常规的E2E测试可以是手动的也可以是自动化的。手动测试需要人工在每次测试时点击该应用程序。这既费时又容易出错。测试自动化涉及编写脚本来代替人类,但是这些脚本的功能往往不一致,并且随着应用程序的发展需要大量的维护时间。两种方法都很昂贵,并且严重依赖于人类的直觉才能成功。整个E2E测试空间功能失调到足以被AI / ML技术破坏的时机。
什么是机器学习?
虽然机器学习通常是AI的代名词,但它们并非完全相同。机器学习使用算法进行决策,并使用人工输入的反馈来更新这些算法。
机器视觉就是一个很好的例子。机器视觉应用程序可能将某物识别为猫,而实际上却是猫。一个人对其进行纠正(通过告诉它“不,这是一只狗”),并根据该反馈来确定一组事物是猫还是狗的算法。机器学习旨在根据测试人员和用户的持续反馈,随着时间的推移做出更好的决策。
由于缺乏数据和反馈,机器学习一直难以达到E2E测试的世界。端到端测试通常是通过人的直觉构建的,这些直觉是关于什么对测试很重要,或者哪些功能似乎很重要或存在风险。新的应用程序正在使用产品分析数据来告知和改善测试自动化,为机器学习周期打开了大门,从而极大地加快了测试维护和构建的速度。