background image

软件运行时错误测试工具评析

    摘要:从减少软件开发成本和缩短软件开发周期的角度考虑,尽可能的在软件编码时期
发现软件缺陷无疑是最佳选择,但软件运行时错误是所有的软件缺陷中最具风险的,发现
该类错误最有效的手段就是专用测试工具。通过对几种主流的软件运行时错误测试工具的对
比分析,探讨了各个工具的优缺点及选择的诸多因素,对于软件测试人员如何选择合适的
该类测试工具,具有实际参考价值。

 

  关键词:软件测试;运行时错误;语义分析技术

 

  随着软件规模越发庞大,软件中存在的缺陷也越来越多,软件测试工作所肩负的责任
日趋繁重。通常我们通过软件测试来确保软件的可靠性,通过软件测试我们可以在软件交付
用户之前尽量找到软件中存在的

BUG,而在所有类型的软件 BUG 中运行时错误的危害性

是最大的。欧洲航天局阿里亚纳

501 号火箭的爆炸,就是因为在其控制飞行姿态的一段代码

中蕴含有一个变量溢出的运行错误。正是这个错误的溢出变量控制着火箭急速转向而过载。

 

  根据

IBM-Berkeley 调查统计:在每一千行的代码中大约就会发现一个运行时错误,而

且在软件的维护阶段所检测到的错误中有

30%-40%是运行时错误,可见运行时错误对软件

质量的影响是多么大。该文对几种常用的可以发现软件运行时错误的测试工具进行评析。

 

  

1 什么是软件运行时错误(Run-Time Errors) 

  运行时错误(

Run-Time Errors)是所有的软件错误中最具风险的错误。它主要发生在软

件动态运行的过程中。我们在日常家庭用的

Windows 操作系统或者其他软件工具时也会时

常出现运行时错误,一般情况下出现运行时错误后无论怎么操作,程序都会关闭。上述软件
出现问题并不会产生太大的影响,但是对于对安全等级要求很高的系统,比如汽车、航天、
军用领域,发生这种错误所从带来的负面影响或许是十分巨大的。由

ANSI C 定义的运行时

错误是指那些能导致预定义之外的不正确结果或者处理器停机的错误,它的风险等级在所
有软件错误中是最高的,由它引起的后果可能为:数据崩溃、安全保密被破坏、处理器停机
等;它也可能导致给外部设备发送非受控命令,引起不可预测、不确定的行为。

 

  典型的运行时错误包括:引用越界指针和空指针、读未初始化变量、类型转换非法、访问
超界数组、浮点数和整数下

/上溢出、不合法的算数运算 (如:负数开平方错误,除零错误)、

代码不可达等。

 

  在软件之中广泛存在运行时错误,对软件的安全性产生潜在的风险。因此针对运行时错
误测试技术的研究是当前最重要的课题之一,而发现运行时错误最直接有效的手段就是专
用测试工具。

 

  

2 软件运行时错误测试工具 

  

2.1 语义分析技术 

  目前,测试软件的运行时错误所用的工具都是基于语义分析技术。这种技术主要是通过
数学定理所提供的规则动态分析软件的行为。语义分析技术并非通过穷举法,它有能力在更
为普通的模式下来表达程序所处的状态,它还能提供巧妙的规则来对它进行处理。当运行时
错误在执行检测的时候,为了尽可能早的发现程序中运行时错误,语义分析技术会详细的
分析所有危险的操作。

 

  运行时错误的语义分析检查主要有以下几点:

 

  

1) 控制流检查:控制流程序要控制程序跳转到合法代码段。例如: C 语言中的 break