• 1.摘要
  • 2.基本信息
  • 3.运行时错误
  • 4.普通软件测试技术的限制
  • 5.解决方法

PolySpace

PolySpace软件运行时错误检测工具。

基本信息

  • 中文名

    软件运行时错误检测工具

  • 外文名

    PolySpace

  • 操作系统

    Windows操作系统

  • 优点

    完全自动化分析只需要源代码

运行时错误

运行时错误(Run-time Errors)就是软件在动态运行时出现的错误,是所有的软件错误中最具风险的。在Windows操作系统上,运行时错误出现的现象如图1

图1 Windows和UNIX操作系统上发生运行时错误的现象

通过图1也d时错误能够导致不正确的计算、数据崩溃、不可决定的行为以及处理器宕机。

根据ANSI C的定义,C语言中的典型运行时错误主要是:

运行时错误属于潜在的威胁,广泛的存在各种软件中。根据Berkeley大学与 IBM Watson的研究报道指出所有IBM大型软件的漏洞中,30%-40%是运行时错误引起的。

普通软件测试技术的限制

传统的软件测试技术一般分成静态测试和动态测试,这两种测试方法在检测软件动态运行时错误方面有着很多的限制。

静态测试技术可以检查软件代码的编程规范,分析程序的静态结构,对软件的质量进行度量。借助于静态测试技术,可以使软件代码更加规范,结构更加清晰,但由于静态测试技术不分析代码的动态行为,不分析各个变量之间的关系,因此普通的静态测试技术不能有效的检查出只有动态运行才会出现的错误,即运行时错误。

动态测试技术需要将被测的程序运行起来,放到实际的软硬件环境中。动态测试技术主要有以下的不足:

 不完全:测试的步骤一般是:测试计划——测试用例——测试执行——发现并提交BUG。这种方法只能发现一部分运行时错误,即测试用例所能覆盖到的错误,但是完全的测试是不可能的(软件测试的原则之一),即不可能穷尽所有的输入,所以依赖于测试用例的测试最终只能保证测试过的输入不会导致运行时错误,不能保证其他大部分的输入也能正常工作。

 效率低:动态测试技术能发现一部分运行时错误,但它发现的只是现象,类似于图1这样的现象,而不是问题的根源。测试人员提交BUG后,开发人员还需要重现BUG,然后使用传统的调试工具来定位问题所在。对于一般的错误,定位并修复一个错误大约需要10个小时,而对于偶尔死机这样的错误,则需要更多的时间去调试。

解决方法

PolySpace使用的是目前最新的语义分析技术,它依靠大量的数学定理提供的规则分析软件的动态行为。语义分析技术没有使用简单的穷举法,却有能力在更普通的模式下表达程序的状态,还能提供规则进行巧妙的处理。简单来说,语义分析技术可以通过静态的方法,能够发现动态的运行时错误。

在以前的软硬件环境下,这个问题会非常复杂,很难去解决。随着计算机处理能力的不断增强,在当前的硬件条件下,语义分析技术已经完全可以高效的实现。当应用运行时错误的检测时,语义分析技术会对所有危险的操作,进行一个详细的分析,在程序动态运行之前,最早在编码阶段,就能够发现其中的运行时错误。

使用了语义分析技术的PolySpace有很多优势。

 完全自动化分析,只需要源代码

——不需要测试用例,

——不需要代码插装