
本书以装备软件相关测试标准为基础,系统收集并整理了具有普遍性和代表性的测试案例,涵盖文档审查、代码审查、静态分析、代码走查、逻辑测试、功能测试、性能测试、接口测试、边界测试、强度测试、余量测试、容量测试、安全性测试、安装性测试、兼容性测试、人机交互界面测试等多种测试类型。本书所有测试案例均来自实际的软件测评项目,案例真实、贴切,其中既有优秀的测试案例,也有大量存在不足的测试案例,对于每一个测试案例,特别是存在不足的案例,进行了点评分析。透过这些测试案例,我们可以看到,软件测试不充分的诱因已远远超出了软件测试的范畴,其中不乏软件需求和软件设计不全面、不合理等给测试人员造成的困惑,从这个意义上说,本书不单单是一本软件测试方面的图书,同时也是软件需求分析、软件设计、软件编码方面的案例展现。
说起测评,很多人会觉得软件测试很简单,只需对照着软件需求规格说明或用户手册,把软件的功能从头到尾执行一遍就可以了,没有什么技术门槛,几乎人人都能做。诚然,通常的软件测评主要是验证软件编码与软件需求、软件设计是否一致,编码是否存在问题。只要能够提供详细的软件文档,并且测试人员充分理解了软件文档的含义,软件测试确实不太复杂,技术难度也不大。然而,实际的情况又是怎样的呢?尽管我国软件工程化已走过了几十年的路程,软件工程化水平有了一定的提高,但距离真正的软件工程化要求还有很大的差距,具体表现为:(1)软件工程化管理不科学,突出表现在软件研制周期短,难以对软件开发过程实施科学化管理。很多项目设立的完成期限很不合理,即所谓的“后墙不倒”,为了赶进度,根本无法按照软件工程化要求进行软件开发,从而滋生很多问题。(2)软件需求不明确、不完整、不全面、不详细,最终提交的软件与用户真正的需求相去甚远。(3)软件设计文档不完整、不详细、不全面,很多软件信息并没有在软件设计文档中体现,软件设计与最终提交的软件不一致是普遍现象。在这样的条件下,要想充分地对软件进行测试,绝非一件简单的事情,它要求测试人员一要具备与被测软件相关的行业知识,能够知道本行业软件应该遵循哪些标准,具有哪些需求;二要具备软件设计和开发的经验,能够知道本行业软件应该如何设计、遵循哪些编码规则,容易出现哪些问题;三要具备测试方面的知识,能够掌握测试理论和方法。上述三方面的知识,即使是优秀的软件设计师、高级程序员也不一定能够完全具备。由此可见,在当前情况下,要成为一名合格的测试人员是相当不容易的。如果通过软件测试,你具备了上述潜质,那么恭喜你,你的发展通道从此畅通。 本书收集整理了各种装备软件测试领域在测评过程中具有普遍性的测试案例,涵盖文档审查、代码审查、静态分析、代码走查、逻辑测试、功能测试、性能测试、接口测试、边界测试、强度测试、余量测试、容量测试、安全性测试、安装性测试、兼容性测试、人机交互界面测试等多种测试类型。其中既有优秀的案例,也有大量存在不足的案例,对于每一个存在不足的案例,都逐一进行了点评分析。 本书所有案例均来自实际的软件测试项目,案例真实、生动,相信装备软件测试领域的同行不会感到陌生。透过这些案例,我们可以看到,软件测试不充分的诱因已远远超出了软件测试的范畴,其中不乏软件需求和软件设计不全面、不合理等给测试人员造成的困惑,从这个意义上说,本书不单单是一本软件测试方面的图书,同时也是软件需求分析、软件设计、软件编码方面的案例展现,期望本书能够给软件测试同行和软件开发人员提供有益的借鉴和指导。 软件测试看似简单,实则奥妙无穷,对于每一个测试项,可谓仁者见仁智者见智。由于作者水平有限,本书给出的案例难免挂一漏万,期望能够起到抛砖引玉之作用,共促软件测试行业大发展。本书中的错误和遗漏之处,恳请各界专家、学者和广大读者批评指正。 本书中的案例来自不同的软件测评机构,每个测评机构的测试说明模板不尽相同,为了尽量保持案例的真实性,没有对案例模板进行规范和统一,特此说明。同时,感谢提供案例的相关测评机构。 本书第二章由曹旭编写,第三章由王小娟编写,第一、四、五、六章由于秀山编写,第七、八、九章由于长钺编写,附录1~13由刘然编写。全书由于秀山统稿。 编著者
第一章 软件测试苦与乐 1 1.1 软件测试之“苦” 1 1.2 软件测试之“乐” 2 第二章 软件测试过程 4 2.1 测试需求分析 5 2.1.1 测试需求分析内容 5 2.1.2 测试需求规格说明评审 5 2.2 测试策划 6 2.2.1 测试策划内容 6 2.2.2 测试计划/大纲评审 6 2.3 测试设计与实现 7 2.3.1 测试设计与实现内容 7 2.3.2 测试说明文档编写 7 2.3.3 测试说明评审 9 2.3.4 测试就绪评审 9 2.4 测试执行 9 2.5 测试总结 10 第三章 软件测试级别与类型及技术要求 13 3.1 单元测试 13 3.2 单元集成测试 13 3.3 配置项测试 14 3.3.1 定义与内涵 14 3.3.2 配置项测试技术要求 15 3.4 配置项集成测试 16 3.5 系统测试 17 3.5.1 定义与内涵 17 3.5.2 系统测试技术要求 17 3.6 回归测试 18 3.6.1 定义与内涵 18 3.6.2 回归测试技术要求 18 3.7 测试级别划分不合理典型案例 19 3.8 软件测试类型 23 3.9 软件测试类型选取要求 24 第四章 文档与代码类测试 27 4.1 文档审查 27 4.1.1 文档审查内容 27 4.1.2 文档审查典型问题 27 4.2 代码审查 29 4.3 静态分析 30 4.4 代码走查 30 4.5 逻辑测试 33 4.5.1 概述 33 4.5.2 各种测试覆盖示例 36 4.5.3 逻辑测试典型案例剖析 38 第五章 功能类测试 41 5.1 功能测试 41 5.1.1 概述 41 5.1.2 功能测试内容与方法 41 5.1.3 自检类功能测试典型案例剖析 42 5.1.4 告警类功能测试典型案例剖析 47 5.1.5 监测类功能测试典型案例剖析 51 5.1.6 其他功能测试典型案例剖析 63 5.1.7 输入字段逻辑一致性测试典型案例 75 5.1.8 输出结果合理性测试典型案例 82 5.2 边界测试 83 5.2.1 边界测试内容 83 5.2.2 边界测试典型案例剖析 83 5.3 恢复性测试 92 5.3.1 恢复性测试内容 92 5.3.2 恢复性测试典型案例剖析 93 5.4 安装性测试 97 5.4.1 安装性测试内容与方法 97 5.4.2 安装性测试典型案例剖析 97 第六章 性能类测试 101 6.1 性能测试 101 6.1.1 有关概念 101 6.1.2 常见的软件性能指标 102 6.1.3 性能测试方法 103 6.1.4 性能测试典型案例剖析 104 6.2 余量测试 130 6.2.1 余量测试内容与方法 130 6.2.2 余量测试典型案例剖析 131 6.3 容量测试 134 6.3.1 容量测试内容与方法 134 6.3.2 容量测试典型案例剖析 135 6.4 强度测试 137 6.4.1 强度测试内容与方法 137 6.4.2 强度测试与性能、余量、容量测试的关系 138 6.4.3 强度测试典型案例剖析 138 第七章 接口类测试 143 7.1 接口测试 143 7.1.1 概述 143 7.1.2 接口测试方法 144 7.1.3 接口测试典型案例剖析 147 7.2 人机交互界面测试 151 7.2.1 人机交互界面测试内容与方法 151 7.2.2 人机交互界面测试典型案例剖析 153 第八章 专项类测试 166 8.1 安全性测试 166 8.1.1 安全性测试内容 166 8.1.2 安全性测试方法 168 8.1.3 安全性测试典型案例剖析 169 8.2 兼容性测试 177 8.2.1 兼容性测试内容与方法 177 8.2.2 兼容性测试典型案例剖析 179 第九章 测评环境 185 9.1 概述 185 9.2 测评环境典型案例剖析 186 附录1 软件文档齐套性审查单 192 附录2 软件需求规格说明审查单 193 附录3 软件设计文档审查单 197 附录4 用户手册审查单 202 附录5 C/C++语言程序代码审查单 204 附录6 C#语言程序代码审查单 210 附录7 Python语言程序代码审查单 214 附录8 汇编语言程序代码审查单 218 附录9 可编程逻辑器件程序代码审查单 219 附录10 控制流审查单 224 附录11 数据流审查单 225 附录12 接口审查单 226 附录13 表达式审查单 227