|
|
51CTO旗下网站
|
|
移动端

1.12.3 在静态测试中使用静态代码分析工具

《软件测试基础教程》第1章软件测试的基本知识,本章作为一个导引,其目的在于让读者熟悉与软件测试相关的基本概念,建立起全书的框架。在本书后续章节中将要详细阐述的问题,首先在这里被提了出来。读完这章之后,读者就能够在软件测试和软件质量方面提出一些有意义的问题。本节为大家介绍在静态测试中使用静态代码分析工具。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-16 21:46

1.12.3 在静态测试中使用静态代码分析工具

在代码审查过程中很可能会提出各式各样与代码行为相关的问题。考虑下面的例子:代码阅读人员问“变量accel在模块updateAccel 第42行被引用,但在哪里定义的呢”,编程人员也许会回答“accel是在模块computeAccel中定义的”。当然,静态分析工具可能会给出一个完整的列表,详细列出模块名以及变量在何处定义和引用的行号。这种具备良好用户界面的工具能够简单回答上述问题。

静态代码分析工具能够提供控制流和数据流信息。表示成CFG的控制流信息,有助于审查小组判断不同条件下控制的流向。CFG附带上数据流信息便构成数据流图。例如,可以对CFG的每一个结点附加上变量定义及引用列表。这些信息对审查小组理解代码以及发现可能的缺陷非常有用。注意,一个静态分析工具本身就能发现一些与数据流相关的缺陷。

目前,已存在一些商用和开源静态分析工具。IBM Rational的Purify以及Klockwork公司的Klockwork是两个针对C和Java程序的商用静态分析工具。LAPSE(Lightweight Analysis for Program Security in Ecplise)是针对Java程序的开源分析工具。

例1.22考虑图1-14中的两个CFG。图中的每一个结点都附加上了数据流信息。在图1-14a中,变量x在基本块1中定义,在后面的基本块3和基本块4中引用。然而,CFG清楚地显示,x在基本块1中的定义在基本块3中被引用了,但并没有在基本块5中被引用。事实上,x在基本块1中的定义,由于其在基本块4中被再次定义而被覆盖了。

在基本块5中引用x的重新定义是否正确?这要看对应于CFG的代码段完成的实际功能是什么。事实上,在基本块5中引用x的重新定义很可能出错。借助于需求文档以及从分析工具中得到的静态信息,审查小组必须能够回答这些问题。

在图1-14b中,变量y在基本块3中被引用。如果y在从Start到基本块3的路径中未被定义,那么就存在一个数据流错误,因为变量在定义之前被引用了。静态分析工具能够检查出来这样的错误来。

 
图1-14 附带了数据流信息的部分CFG。
d(x)和u(x)分别表示变量x在一个基本块中的定义和引用
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

ASP网络编程从入门到精通

本书是为那些对Web开发感兴趣的读者而编写的。ASP(Active Server Pages)是微软公司在Web领域的又一次突破,它打破了以往只能由专业人员来...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊