利用多元空间静态分析降低鲁棒性测试的成本

由Ram Cherukuri

之前的帖子强调了利用的好处Polyspace®静态分析帮助优化和减少验证周期的测试阶段的长度。本文将讨论稳健性测试的低效性,并介绍如何解决这些挑战。

什么是坚固性测试,他们的目的是什么?

健壮性测试是一组测试,旨在验证软件在所有条件下(尤其是意外情况下)的正确性。重要的是要注意,测试程序的每个行为不仅几乎是不可能的,而且也是不切实际的,因为这可能是一个极其昂贵和耗时的过程。

健壮性测试的不同方法

在测试软件时,有几种方法可供选择:

  • 尽可能多地进行测试以增加覆盖率。这将确保至少一个测试可以到达代码中的所有路径,并且有可能解决一些潜在的问题。
  • 测试意外输入。这使您能够根据需要在边缘情况和其他情况下搜索错误行为。

这两种方法是有用的,但在时间和成本方面可能是昂贵的。

每个节点代表一个健壮性测试用例。绿色节点是通过的测试用例,而红色节点是识别问题的用例。灰色区域表示未测试的运行时空间。

静态代码分析

静态代码分析用于检测异常或意外的错误条件。静态分析工具,如PolySpace Bug Finder™,可以帮助您检测多种缺陷,包括数值,数据和控制流程,并发性和安全漏洞。由于代码的非必需行为,甚至更难调试,难以设计测试来检测这些问题中的一些问题。

缺陷在源代码中突出显示,并包括追溯信息,以帮助识别缺陷的原因和来源。这进一步降低了在测试周期的调试阶段跟踪缺陷的成本。需要注意的是,这种方法不是详尽的,因为这些工具可能会生成假阴性结果。

圆圈节点表示通过静态分析发现的新缺陷。

你可以用声音正式方法基于分析以验证所有条件的软件的正确性。PolySpace Code Prover™等工具可以通过每个决策路径验证输入和参数的所有可能组合。除了穷举之外,还需要设置和运行分析所需的时间明显低于设计各个测试用例。被证明的95%绿色的代码(即95%的支票被证明是安全的)显着降低了所需的验证工作量和时间。开发人员或优质工程师现在只能关注未证明安全的代码的5%。

绿色区域表示分析和证明安全的运行时空间。圈出的节点表示早期测试所遗漏的缺陷。

一个致力于DO 178b合规的航空航天客户使用Polyspace Code Prover来验证和证明DO 178标准所要求的算术溢出的缺失。否则,手动验证溢出的每个实例将是一个费力且耗时的过程。

总之,您可以利用Polyspace静态分析解决方案来提高软件的整体质量,同时还可以减少测试周期和开发过程的成本。