基于人工智能的测试

能够自我优化的软件

Cognizant Mobility基于人工智能的自主式测试

近年来,软件开发取得了巨大的进步。越来越多的自动化流程出现,开发人员也抱持更为灵敏的全新心态。得益于机器学习,我们甚至讨论起软件开发范式何时开始转变来。而测试这个领域一直是瓶颈。

软硬件结合的测试主要包括根据先前定义的要求编写所谓的测试案例,执行测试并随后分析任何已发生的错误。系统越复杂,有一点就越清楚:测试所有可以想象到的场景,并从海量输入变量中准确找到导致错误的场景,这几乎是一项不可能完成的任务。如果考虑到测试本身就可能存在问题,情况就更复杂了。

这意味着公司总是面临因需要人工步骤和使用的测试硬件十分耗时而导致的高资源成本。发生的大多数错误,都与人工难以检测的重复性模式有关,因此导致测试人员重复工作。剩下的工作由一个异质系统景观完成。

虽然来自各行各业的多家公司都在操作“漂人工智能”(类似“漂绿”,即公关部门为公司营销不属实的绿色环保行为),但借助人工智能,确实可以为测试带来附加价值。只有应用全方位的机器和深度学习方法,才能将重复出现的和新出现的错误模式区分开来,让测试人员无需再承担繁琐的重复工作。而在这之前还有一些必要步骤。

基于模型的测试

测试案例通过视觉图像建模(例如使用建模语言UML)。这样能够节省时间,因为建模之后,许多单独的测试用例就可自动得出。如果系统要求发生变化,模型的变化可以自动体现到受影响的测试用例中。测试数据也可以从模型中生成,且可以为测试运行做好准备。基于模型的方法也迎合了对敏捷开发方法或Scrum需求日益增长的形势。由于速度提升,测试用例可以和功能开发在同一迭代周期(如两周周期)并行。

概览

  • 基于模型的测试
  • 持续集成
  • 从ECU和后端到前端的自动化测试
  • Jenkins
  • 人工智能
Andreas Brandlmeier
基于人工智能的测试项目领导

contact.popup.subline

持续集成的自动测试程序

在开始实际测试之前,必须对之前生成的测试用例进行选择。正确的测试硬件,即ECU也必须保留,稍后将在该硬件上执行一个特定功能。测试序列完成后,必须将结果与报告一起导出。 Cognizant Mobility的测试专家依靠Jenkins和CircleCI等持续集成环境,确保以上过程能在整个项目中同时运行。背后的方法既简单又巧妙:通过工具将修改后的测试用例自动推送到整个流程中,无需手动触发。  

最大的优势体现在错误分析上,考虑到如今测试人员所面临的复杂程度,该优势就很明显了。失败的测试必须逐一进行人工分析。使用参数和时间序列找出失败原因十分重要。有几个测试可能因为参数相同,或者相互依赖而导致失败。  另外,需测试的功能可能并无缺陷,也许仅仅因为测试硬件有问题,或测试用例建模欠佳而导致失败。错误来源很难区分。基本不可能跨越范围限制来识别错误来源。一旦有问题的硬件或有问题的测试用例被纠正,就会手动进行后测试,再次检查实际功能。最终检测到的错误会被记录下来,并返回给软件开发部门。

强大的人工智能可以检测出错误的模式,并自动就错误来源得出结论。不仅能够迅速发现单个错误间的相似性,而且可以完全自主生成新的测试用例,并启动后测试。今天,我们还无法准确估计完全自主测试能够节约多少资源。而 Cognizant Mobility移动出行专家的初步估计表明,这种方式能让我们收获巨大。毕竟,这无异于该领域发展历程上的一场革命。软件自主编写和改进的未来已触手可及。