运行时错误
运行时错误通常是指在程序执行期间出现的问题。运行时错误可能发生在软件或硬件中,导致其故障。检测它们是很重要的,因为它们可能会导致严重的安全、保障或业务操作问题。软件运行时错误包括逻辑错误,例如算术异常。它们还可以包括与控制和数据流相关的缺陷,如未初始化的变量或指针,与内存相关的缺陷,如缓冲区溢出,或并发性缺陷,如竞争条件。多空间静态分析可以为运行时错误检测提供解决方案。
为什么要担心运行时错误?
运行时错误可能导致高完整性应用程序的关键系统失败,从而导致灾难性的结果。在一些著名的例子中,运行时错误被认为是导致系统故障的根本原因。这些错误包括算术溢出运行时错误(导致火箭机载计算机崩溃)和竞争条件运行时错误(导致医疗设备注入致命剂量的辐射)。
运行时错误检测
对于高完整性应用程序,执行运行时错误检测是至关重要的。然而,这种错误检测具有挑战性,因为它涉及到预测软件的每一个可能执行。如下所述,预测所有路径都是困难的:
在理想的情况下,您希望测试程序中所有可能的行为。这意味着至少一次测试输入的每个可能组合或每个可能的决策路径。这是一个崇高但完全不切实际的目标。例如,在《软件测试的艺术》一书中,Glen Ford Myers描述了一个只有5个决策的小程序,它有10^14条唯一的执行路径。他指出,如果您可以每5分钟编写、执行并验证一个测试用例,那么将需要10亿年的时间来详尽地测试这个程序。显然,理想的情况是无法达到的,所以您必须使用这个理想的近似值。正如您将看到的,功能测试和覆盖率测试的组合提供了一种合理的次优替代方案。基本的方法是选择一些功能测试、一些覆盖率测试,这些测试最有可能暴露错误。”[1]
由于可能有数万亿种可能性需要进行测试,很明显,仅通过测试的方式进行运行时错误检测是不够的,而且效率低下。更好的解决方案是使用多空间静态分析检测运行时错误,因为您可以使用它来验证每种可能的输入组合和每种可能的决策路径。它使用一种被称为抽象解释的形式化方法技术。该技术通过在编译时验证软件应用程序的动态/运行时属性,弥合了传统静态分析技术和动态测试之间的差距。
在不执行程序本身的情况下,抽象解释研究程序的所有可能的运行时行为,不仅证明复杂运行时错误的存在,而且还证明它们的不存在。您可以使用Polyspace产品来识别那些仅s manbetx 845在特定运行时条件下发生的特殊运行时错误。了解更多有关多空间静态分析解决方案.
结合抽象解释和静态代码分析,您可以:
- 检测难以捉摸的运行时错误
- 证明没有关键的运行时错误
- 制定代码质量度量
- 检查源代码是否符合MISRA-C/ c++和JSF++等代码标准
1伯杰:“嵌入式软件测试基础《嵌入》,2011。