硬道理是测试人员,测试工程师和开发人员都在“等待”中花费过多的工作时间。即使团队朝着连续不断的一切(测试,集成,交付部署)迈进,交付过程仍然存在着效率低下的问题。太多的浪费,太多的复杂性,太多的瓶颈以及太多的等待。所有这些都使测试人员和开发人员感到沮丧。
我们之所以等待是因为软件交付流程效率低下,无论您使用的是自动管道还是瀑布式流程。您已经猜到,任何过程都有瓶颈,而造成软件交付瓶颈的最大罪魁祸首是:测试。
在1990年代,软件测试确实真正成为一门学科,尽管自动化以及工具和技能方面取得了进步,但从根本上说,并没有太大的改变。我们继续以相同的方式进行操作,因为被测试的应用程序仍然是一个黑匣子,而作为测试人员,我们通常不会窥视内部。
我们建立了广泛的测试网络,因为我们认为这是捕获错误的方法。现实情况是网中的孔通常太大而缺陷逃逸了,或者我们在错误的方向上浇铸网。我们依靠不断增长的测试套件来证明不回归并验证新功能。运行这些不断增长的测试套件的有效方法是提高自动化程度。但是,有一点会导致进一步的自动化本身效率低下。在维护测试上花费的成本和精力超过了自动化本身的收益。这是当我们需要专注于少即是多的原则,并且很多时候,多可以少。
如果我告诉您,在任何测试阶段(单元,集成,系统,用户接受度)的每次迭代所进行的测试中90%以上都是浪费的,那该怎么办?您可能也不会感到惊讶,因为复杂性和对现代应用程序的缺乏了解,由于未经测试的代码区域中的空白,通常会将应用程序部署到生产中会带来质量风险。
人工智能可以解决这个问题。AI可以照亮测试。 AI将捕虫从使用大网拖网变成了鱼刺捕捞,这更有趣!
AI如何照亮测试
人工智能的词典定义是:“能够执行通常需要人类智力的任务的计算机系统的理论和开发,例如视觉感知,语音识别,决策和语言之间的翻译。”
当AI具有许多数据点以进行分析,发现趋势,做出预测并确定问题的解决方案时,其效果最佳。有比构成当今复杂的应用程序场景的数百万行代码和数千个测试用例更好的输入。例如,谷歌浏览器包含670万行代码;相当于120,600页的打印文本。人们如何才能开始分析和理解该数据量,并瞬间决定将QA时间和精力放在哪里进行构建测试,并在每次构建新版本时有选择地运行有效的测试?
因此,人工智能和质量分析正在成为质量检查的规则改变者。通过了解代码是如何执行的以及观察与被测应用程序的交互,可以在这些交互中收集数百万个数据点。然后,AI可以在几秒钟内处理这些数据,以将数据转变为可行的见解,以提供高质量的分析并提出建议。这些见解可以包括应该在哪里进行测试投资以填补质量风险,以及应该进行哪些特定的测试执行以充分验证对应用程序进行的特定更改。
通过AI降低质量风险
即使使用持续交付管道,应用程序也必须经过至少三个测试阶段才能进入生产阶段。尽管大多数开发团队都使用代码覆盖率工具进行静态代码分析,但很少有交付团队了解跨各个测试阶段的测试如何执行和验证实际代码。这种缺乏理解会导致质量风险,并且由于缺乏测试执行范围和适当的验证,任何测试空白都可能导致逃避缺陷。
通过了解每个交互以及每个测试在应用程序中留下的“足迹”,AI可以处理数百万个数据点以显示应用程序的最高风险区域,这些测试差距陷阱位于其中,并可以指导资源的优先级划分以插入应用程序差距。
通过AI减少测试执行时间
现实情况是,在任何回归测试周期中,您都不会在要测试的代码中发现超过99%的缺陷,这主要是因为在当前构建期间,代码和通过应用程序的逻辑流程没有发生变化。如果真是这样,为什么还要一直花时间运行所有测试。如果您可以基于AI和质量分析运行测试的子集,则可以将测试时间和承诺部署时间减少90%以上。
AI可以更好地了解每个测试周期应执行哪些测试。通过使用从以前的测试执行中收集的数据,AI可以识别出哪些代码已更改,并根据应用程序风险自动定义测试套件。这可能包括根据最近的更改选择的测试;片状测试在生产中最常使用应用程序的哪些部分;哪些代码更改具有很大的复杂性,需要特别注意;哪些测试失败的可能性最高,因此应该在测试周期开始时更频繁地运行。
这种“目标测试”的方法将更快地发现缺陷,并为交付团队提供更快的反馈循环。反过来,当发现缺陷时,这将为测试人员提供更多的即时满足感。