程序缺陷的存在使软件经常出现这样或那样的问题,影响了软件的正常使用,甚至危及人类生命和财产安全。自从软件危机爆发以来,广大软件从业人员就开始苦苦寻求如何提高软件质量的灵丹妙药,开出了许多有效的良方,然而,由于缺陷的多样性和隐蔽性,许多看似正常的程序其实隐藏着巨大的隐患,如何找出并避免这些缺陷是软件开发人员和测试人员面临的一个严峻挑战。
《程序设计缺陷分析与实践》从程序设计缺陷的角度入手,结合作者尹浩,于秀山多年从事软件测试的经验,将测试中发现的鲜为人知的软件问题进行了归纳整理,以期对读者能有所裨益。
代码缺陷源自程序设计,《程序设计缺陷分析与实践》结合作者尹浩,于秀山多年软件测试经验,重点归纳总结了C/C++和Java语言在程序设计方面存在的鲜为人知的各种缺陷,以期为软件设计人员和测试人员提供有益借鉴。
《程序设计缺陷分析与实践》共5章2个附录,分别介绍了程序设计缺陷静态分析方法、C/C++语言程序设计缺陷分析、Java语言程序设计缺陷分析、软件质量静态度量以及静态测试工具使用实践。重点介绍了C/C++语言程序在编码风格、内存管理、缓冲区使用、指针以及安全等方面存在的典型缺陷,并结合实例对每种缺陷进行了分析,同时给出了缺陷修改方法。
本书既是一本程序设计方面的高级教程,同时也是一本软件静态测试方面的教程,可作为高等院校计算机相关专业高级程序设计及软件测试课程教材,也可供软件开发工程师、测试工程师、测试经理等人员参阅。
第1章 程序设计缺陷静态分析/1
1.1 软件测试分类/1
1.2 静态分析方法/2
1.2.1 文档审查/3
1.2.2 代码审查/3
1.2.3 技术评审/6
1.2.4 代码走查/6
1.2.5 评审类型比较/9
1.2.6 静态分析的优点/10
第2章 C/C++语言程序设计缺陷分析/11
2.1 编码风格/11
2.1.1 符号误用问题/11
2.1.2 变量初始化问题/20
2.1.3 函数返回值问题/34
2.1.4 其他/38
2.2 内存管理/53
2.3 内存泄漏/65
2.4 缓冲区溢出/81
2.5 指针问题/104
2.5.1 空指针解引用/104
2.5.2 其他/112
2.6 安全缺陷/119
2.7 C++中和类有关的编程错误/143
2.8 其他/152
第3章 Java语言程序设计缺陷分析/172
3.1 编码风格/172
3.2 安全缺陷/188
第4章 软件质量静态度量/195
4.1 有关概念/195
4.2 软件质量模型/196
4.2.1 McCall模型/197
4.2.2 Boehm模型/197
4.2.3 ISO9126模型/198
4.2.4 ISO/IEC 25010质量模型/199
4.2.5 关系模型/200
4.3 软件质量静态度量方法/200
4.3.1 软件质量静态度量简介/200
4.3.2 源代码行(LOC)度量/202
4.3.3 Halstead软件科学度量/202
4.3.4 McCabe度量/204
4.3.5 Henry & Kafura 方法/208
4.3.6 LCSAJ密度/209
4.3.7 C & K度量/211
4.3.8 MOOD度量/214
4.3.9 其他软件质量度量/218
第5章 常用静态分析工具与使用实践/221
5.1 PolySpace——运行时错误静态检查工具/221
5.1.1 PolySpace Verifier/222
5.1.2 PolySpace Viewer/225
5.2 Klocwork——代码静态检查工具/228
5.2.1 工程创建与分析/228
5.2.2 分析结果查看/232
5.3 Testbed——静态和动态测试工具/237
5.3.1 单个文件分析/238
5.3.2 分析结果查看/242
5.3.3 多个文件批量分析/252
5.4 McCabe IQ2——软件质量保证工具/254
5.4.1 McCabe EQ/254
5.4.2 McCabe Test/263
5.4.3 McCabe Reengineer/263
附录A 软件需求规格说明审查单/265
附录B 用户手册审查单/266
参考文献/267软件开发