(目标类型太小无法表达转换值),以及用户关于软件定义的任何断言。另外,,
Astrée 能
够指出未分析(不可达的)的代码并且对没有终止的代码进行告警。
通过多次测试项目的实际使用,对
Klocwork、Polyspace、Astree 的分析结果比较如表 1。
从表
1 的分析结果可以看出,专用测试工具在发现软件运行时错误时发挥着重要作用,
但是测试工具并不是完美的,各个工具所使用的分析技术导致它们都只适用于部分缺陷的
测试。在软件运行稳定性的保证及软件测试质量的提高方面,我们认为软件运行时错误测试
工具的作用是功不可没的,但在看到测试工具优点的同时也要注意到各个测试工具的短板。
软件运行时错误测试工具的优点:
1) 分析只需要代码,不会改变软件开发的过程,可以在软件开发任何阶段进行;
2) 有助于软件开发的早期发现软件运行时错误。方便修改,能有效的提高软件开发效
率,降低软件开发周期;
3)不需要设计测试用例,不需要代码插装,节约时间;
4)有助于开发人员及时自查,及时纠正开发人员编码风格缺陷。
5) 对发现的错误直接定位,相比动态测试发现该错误,节省了错误定位时间;
软件运行时错误测试工具的缺点:
1) 分析结果需要人工确认;
2) 有可能存在误报和漏报的情况,影响测试正确率;
3)由于算法的片面性,不能发现所有的问题。
3 结束语
在软件开发的任意一个阶段都可以借助软件运行时错误测试工具及时的发现错误,对
软件成本的控制及软件开发效率的提升方面非常有帮助。鉴于该类测试工具功能的日益完善,
软件开发人员对其依赖的程度逐渐增加。但开发人员时刻都要意识到,工具也会有算法片面
性及漏报、误报的因素,仅仅依靠静态测试来发现运行时错误是不够的,需要在软件生命周
期的晚期阶段实施动态测试。动态测试和静态测试相结合,从而提高测试的有效性。不同的
软件运行时错误测试工具各有优势与不足,如何选择适合的测试工具,需要结合实际情况
对诸多因素综合权衡。
参考文献:
[1] 肖庆,张威,宫云战,等.内存泄漏的一种静态分析方法[J].装甲兵工程学院学报,
2004,18(2):23-26.
[2] 韩柯,杜旭涛. 软件测试[M].北京:机械工业出版社,2003.
[3] 杨宇,张健.程序静态分析技术与工具[J].计算机科学 2004,31(2):171-174.
[4] 蒋鹏.基于 Astree 的软件运行时错误检测[Z].2012.
[5] 周涛.航天型号软件测试[M]. 北京:宇航出版社,1999.
[6] 康一梅,张永革,李志军,等.嵌入式软件测试[M].北京:机械工业出版社,2008.