本书依据软件质量、软件测试及软件质量保证领域的相关国际标准,系统地介绍软件质量、软件测试、软件质量保证的基本概念与基本原理,各类质量保证工作,以及常用的软件测试和评审技术。
本书在内容组织上力求循序渐进、符合标准、简练清晰、逻辑性强。在对理论和技术细节的阐述中,设计有大量案例并对各个步骤进行了详细讲解,以期读者能够快速、全面地掌握软件质量保证与测试的相关理论知识与技术工具,并能够在工作实践中灵活运用。本书每章末尾均配有习题,以助力读者深入学习。
本书既可以作为软件工程、计算机应用工程等专业的软件质量保证与测试课程的教材,也可以作为软件质量保证与测试从业人员的技术参考书。
(1)知识体系完整,内容结构科学
本书依据软件质量、软件测试以及软件质量保证领域的相关国际标准组织内容,全面覆盖主要的应知应会知识点。同时,对一些重要但易忽略的问题,例如项目合同审查、代码评审流程等也进行了详细介绍。
(2)理论结合实践,案例丰富有趣
本书内容循序渐进,清楚、简洁地介绍软件质量保证与测试工作的具体内容及其内在逻辑关系。在测试用例设计技术上,尽量做到对方法的详尽叙述,同时设计了大量有针对性的案例并进行了较详细的讲解。
(3)依据国际标准,锤炼工程能力
本书中所用的术语及其解释均依据相关国际标准,各项内容的表述均注意标准性。通过对本书的学习,读者能较快地掌握软件质量保证与测试领域的相关理论知识与技术,并能在软件生命周期内灵活运用。
(4)配套资源丰富,助力院校教学
针对书中的重点和难点知识,编者录制了深入且细致的微课视频,读者可以扫描书中微课视频二维码进行观看,以便随时随地开展高效自学。在微课视频中,编者还对每章习题中的典型问题进行了详细讲解。此外,编者还提供了 PPT 课件、教学大纲、实验大纲、教案、习题答案、源代码以及案例素材等教学资源,用书教师可以通过人邮教育社区(www.ryjiaoyu.com)进行下载。
李凡:
电子科技大学信息与软件工程学院副教授,澳大利亚昆士兰大学EAIT学院访问学者,主要研究方向为机器学习(深度神经网络、无监督及弱监督学习)、计算机视觉(分割、识别、跟踪)、人工智能(Rough集理论,粒度计算)等,以第一作者(同时是通讯作者)身份发表EI、SCI检索论文10余篇,其中包括ESI检索论文1篇,该论文同时入选ESI 2015年高被引论文;获四川省科技进步奖三等奖1项(排名第2),校教学成果奖二等奖1项(排名第1);出版本科教材3部(主编2部)。
【章名目录】
第 1章 软件质量
第 2章 软件测试
第3章 软件质量保证
第4章 针对软件产品的质量保证工作
第5章 针对软件过程的质量保证工作
第6章 基于规格说明的测试技术
第7章 基于结构的测试技术
第8章 软件需求规格说明评审与代码评审
【详细目录】
第 1章 软件质量
1.1 软件质量概述 1
1.1.1 软件的定义 1
1.1.2 不同利益相关方对软件质量的关注点 2
1.1.3 软件质量的定义 3
1.2 软件质量缺失的后果 4
1.3 软件质量模型 6
1.3.1 McCall质量模型 6
1.3.2 Boehm质量模型 8
1.3.3 ISO IEC 25010质量模型 11
1.3.4 Dromey质量模型 17
1.4 软件缺陷 18
1.4.1 软件缺陷的定义与相关术语 19
1.4.2 软件缺陷的等级划分 20
1.5 本章习题 21
第 2章 软件测试
2.1 软件测试的定义 23
2.2 软件测试的常用术语 23
2.3 软件测试的原则 25
2.4 软件测试技术的基本类型 27
2.5 软件测试的基本过程 28
2.5.1 V模型 28
2.5.2 单元测试 29
2.5.3 集成测试 33
2.5.4 系统测试 36
2.5.5 验收测试 39
2.5.6 回归测试 40
2.6 本章习题 41
第3章 软件质量保证
3.1 基本概念 43
3.1.1 软件质量保证的定义 43
3.1.2 软件质量保证工作的目的 44
3.1.3 软件质量保证与软件质量控制 44
3.1.4 软件测试、软件质量保证与软件质量工程 44
3.2 软件质量保证工作面临的挑战 45
3.3 软件质量保证过程的工作内容 46
3.4 软件质量保证过程的实施 47
3.4.1 各项软件质量保证过程 47
3.4.2 软件质量保证过程与相关的软件过程的协作 47
3.4.3 制订软件质量保证计划 48
3.4.4 项目合同审查 50
3.4.5 与软件质量相关的成本估算 54
3.4.6 软件质量保证文档的管控 56
3.5 本章习题 58
第4章 针对软件产品的质量保证工作
4.1 评估项目计划 60
4.2 软件产品开发过程中的质量保证工作 60
4.2.1 评审 60
4.2.2 测试过程 64
4.3 软件产品运维服务中的质量保证工作 76
4.3.1 工作内容及目标 76
4.3.2 影响运维服务质量的因素 77
4.4 软件产品规模的测量 78
4.4.1 代码千行数 79
4.4.2 功能点 79
4.5 软件产品质量的测量 82
4.5.1 功能性 82
4.5.2 性能效率 83
4.5.3 兼容性 85
4.5.4 易用性 86
4.5.5 可靠性 90
4.5.6 信息安全性 92
4.5.7 维护性 94
4.5.8 可移植性 96
4.6 本章习题 98
第5章 针对软件过程的质量保证工作
5.1 评估软件生命周期中的过程及环境 100
5.1.1 过程需求 100
5.1.2 评估软件生命周期中的过程 101
5.1.3 评估软件开发环境和测试环境 101
5.1.4 评估软件过程 102
5.2 员工知识技能水平的认证 108
5.2.1 认证的目标 108
5.2.2 认证的过程 108
5.3 软件变更控制过程 109
5.3.1 软件变更过程的定义 109
5.3.2 软件变更请求的处理过程 110
5.3.3 软件变更控制委员会在组织内的职能 111
5.3.4 涉及软件变更的质量保证工作 111
5.4 本章习题 111
第6章 基于规格说明的测试技术
6.1 概述 113
6.2 等价划分方法 113
6.2.1 导出测试条件 114
6.2.2 导出测试覆盖项 118
6.2.3 导出测试用例 118
6.2.4 测试覆盖率计算 119
6.3 组合测试设计方法 121
6.3.1 完全组合测试 121
6.3.2 成对测试 125
6.3.3 逐个选择测试 127
6.3.4 基本选择测试 128
6.4 分类树方法 130
6.4.1 导出测试条件 130
6.4.2 导出测试覆盖项 131
6.4.3 导出测试用例 134
6.5 边界值分析方法 134
6.5.1 导出测试条件 135
6.5.2 导出测试覆盖项 136
6.5.3 导出测试用例 137
6.6 决策表方法 141
6.6.1 导出测试条件 141
6.6.2 导出测试覆盖项 143
6.6.3 导出测试用例 146
6.7 因果图方法 146
6.7.1 因果图中的基本符号 147
6.7.2 导出测试条件 149
6.7.3 导出测试覆盖项 150
6.7.4 导出测试用例 152
6.8 状态转换测试方法 153
6.8.1 导出测试条件 153
6.8.2 导出测试覆盖项 154
6.8.3 导出测试用例 156
6.9 本章习题 158
第7章 基于结构的测试技术
7.1 概述 161
7.2 语句测试方法 161
7.2.1 程序的控制流图 162
7.2.2 导出测试条件 164
7.2.3 导出测试覆盖项 165
7.2.4 导出测试用例 165
7.3 分支测试方法与决策测试方法 165
7.3.1 导出测试条件 166
7.3.2 导出测试覆盖项 166
7.3.3 导出测试用例 167
7.4 分支条件测试方法 167
7.4.1 导出测试条件 168
7.4.2 导出测试覆盖项 169
7.4.3 导出测试用例 169
7.5 分支条件组合测试方法 170
7.5.1 导出测试条件 170
7.5.2 导出测试覆盖项 170
7.5.3 导出测试用例 170
7.6 修正的条件决策覆盖测试方法 171
7.6.1 导出测试条件 172
7.6.2 导出测试覆盖项 172
7.6.3 导出测试用例 173
7.7 数据流测试方法 174
7.7.1 基本概念 175
7.7.2 All-Definitions测试方法 176
7.7.3 All-Uses测试方法 182
7.7.4 All-DU-Paths测试方法 183
7.8 本章习题 185
第8章 软件需求规格说明评审与代码评审
8.1 软件需求规格说明评审 187
8.1.1 软件需求与软件需求规格说明 187
8.1.2 软件需求规格说明的高层次评审 187
8.1.3 软件需求规格说明的细节审查 189
8.2 代码评审 191
8.2.1 代码评审流程 191
8.2.2 检查编码标准和规范的符合性 194
8.2.3 代码的高层次评审 194
8.2.4 代码的细节审查 194
8.3 本章习题 198
参考文献 199