《软件质量保证与测试》共分10章,涵盖了软件质量保证与测试基础、软件测试策略、白盒测试、黑盒测试、单元测试、性能测试、自动化测试、软件评审、软件质量与质量保证、测试的组织和管理等内容。全书详细介绍了软件质量保证与测试的基础知识,讲解了软件测试涉及的所有流程,并介绍了多款软件测试工具,将理论知识与实践操作技能有机结合,有助于学生完整、系统地掌握软件质量保证与测试技术,提高实践创新能力。
《软件质量保证与测试》可作为软件工程、计算机科学与技术等相关本科专业教材,也可供相关的专业人员参考使用。
第1章 软件质量保证与测试基础
1.1 软件 001
1.1.1 软件生命周期 001
1.1.2 软件开发模型 002
1.1.3 软件质量概述 008
1.2 软件缺陷管理 012
1.2.1 软件缺陷产生的原因 012
1.2.2 软件缺陷分类 013
1.2.3 软件缺陷的处理流程 014
1.2.4 常见的软件缺陷管理工具 015
1.3 软件测试与软件开发 018
1.4 软件测试概述 018
1.4.1 软件测试简述 019
1.4.2 软件测试+AI 020
1.4.3 软件测试的目的 021
1.5 软件测试流程 022
1.5.1 分析测试需求 022
1.5.2 制订测试计划 023
1.5.3 设计测试用例 023
1.5.4 执行测试 023
1.5.5 编写测试报告 024
本章小结 024
本章习题 025
第2章 软件测试策略
2.1 软件测试模型 027
2.1.1 V模型 028
2.1.2 W模型 029
2.1.3 X模型 030
2.1.4 H模型 031
2.2 软件测试的方法和技术 032
2.2.1 静态测试和动态测试 032
2.2.2 黑盒测试和白盒测试 034
2.2.3 手工测试和自动化测试 035
2.3 软件测试的基本策略 036
2.3.1 单元测试 036
2.3.2 集成测试 037
2.4 软件测试的原则 037
本章小结 039
本章习题 039
第3章 白盒测试
3.1 引言 041
3.1.1 白盒测试的定义与重要性 041
3.1.2 白盒测试与黑盒测试的区别 041
3.1.3 白盒测试的应用场景 042
3.2 逻辑覆盖法 043
3.2.1 语句覆盖 043
3.2.2 分支覆盖 045
3.2.3 条件覆盖 045
3.2.4 判定-条件覆盖 046
3.2.5 条件组合覆盖 047
3.2.6 实例:三角形的逻辑覆盖 048
3.2.7 循环测试技术 050
3.3 基本路径测试覆盖 051
3.3.1 控制流图 051
3.3.2 环路复杂度 052
3.3.3 基本路径覆盖及实例 053
3.4 测试覆盖分析工具 056
3.4.1 JaCoCo 056
3.4.2 JCov 057
3.4.3 Cobertura 057
3.4.4 EclEmma 057
3.5 程序插桩法 066
3.5.1 目标代码插桩 066
3.5.2 源代码插桩 069
3.5.3 实例:对学生类插入代码 070
3.6 静态测试工具 071
3.6.1 FindBugs 072
3.6.2 PMD 074
3.6.3 CheckStyle 077
3.6.4 其他静态测试工具 078
本章小结 079
本章习题 079
第4章 黑盒测试
4.1 黑盒测试基础 081
4.1.1 黑盒测试的应用场景 081
4.1.2 测试需求分析与规格说明书 081
4.2 等价类划分法 081
4.2.1 等价类划分法的概念 082
4.2.2 实例:三角形问题的等价类划分 083
4.3 边界值分析法 085
4.3.1 边界值分析法的概念 085
4.3.2 实例:三角形问题的边界值分析 086
4.4 因果图与决策表法 087
4.4.1 因果图法 087
4.4.2 决策表的构建 090
4.5 错误推测法 093
4.5.1 基于经验的错误预测 093
4.5.2 错误推测法的应用示例 094
4.6 正交实验设计方法 094
4.6.1 正交实验设计方法概述 094
4.6.2 实例:微信Web页面运行环境正交实验设计 097
4.6.3 工具:正交设计助手的使用 098
4.7 组合测试方法 102
4.7.1 基本概念 102
4.7.2 详细方法 103
4.8 场景法 105
本章小结 106
本章习题 106
第5章 单元测试
5.1 单元测试的目的和任务 108
5.1.1 单元测试的目的 108
5.1.2 单元测试的目标和要求 109
5.1.3 单元测试的任务 110
5.2 单元测试的原则 112
5.3 JUnit框架介绍 113
5.3.1 JUnit的历史与发展 113
5.3.2 JUnit的关键注解 122
5.3.3 断言 124
5.3.4 参数化测试 130
5.3.5 测试套件 131
本章小结 132
本章习题 132
第6章 性能测试
6.1 性能测试概述 135
6.1.1 性能测试基础 135
6.1.2 性能测试失败案例 136
6.1.3 性能测试分类 137
6.1.4 性能测试指标 140
6.2 搭建性能测试环境 144
6.2.1 搭建基础环境 144
6.2.2 JMeter安装方法 148
6.2.3 JMeter包含目录 149
6.3 JMeter测试案例 152
6.3.1 新建测试计划 152
6.3.2 添加线程组 153
6.3.3 添加HTTP请求 155
6.3.4 添加查看结果树 157
6.3.5 测试执行 157
6.4 JMeter的核心组件 159
6.4.1 取样器 159
6.4.2 监听器 163
6.4.3 配置元件 169
6.4.4 断言 180
6.4.5 前置处理器 188
6.4.6 后置处理器 190
6.4.7 逻辑控制器 199
6.4.8 定时器 207
6.5 实例:Badboy结合JMeter测试飞机购票系统 213
6.5.1 Badboy简介 213
6.5.2 搭建测试环境 213
6.5.3 编写测试脚本 217
本章小结 225
本章习题 225
第7章 自动化测试
7.1 自动化测试概述 227
7.1.1 什么是自动化测试 227
7.1.2 自动化测试的基本流程 228
7.1.3 自动化测试的实施策略 229
7.1.4 自动化测试的优势和劣势 230
7.2 自动化测试常见技术 231
7.2.1 录制回放技术 231
7.2.2 数据驱动测试 231
7.2.3 关键字驱动测试 232
7.2.4 行为驱动测试 232
7.2.5 接口测试技术 232
7.2.6 性能测试技术 232
7.3 自动化测试常见工具 233
7.4 QTP自动化工具 233
7.4.1 搭建自动化测试QTP环境 234
7.4.2 QTP工具的基本应用 235
7.4.3 QTP常用的操作方法 236
7.4.4 QTP操作界面 238
7.4.5 QTP工作流程 239
7.4.6 Action知识 243
7.4.7 QTP参数化 246
7.4.8 QTP同步点 262
7.4.9 QTP检查点 265
7.4.10 QTP多Action操作 271
7.4.11 不同的Action中传递参数 292
本章小结 302
本章习题 303
第8章 软件评审
8.1 软件评审基础知识 305
8.1.1 软件评审的概念 305
8.1.2 软件评审的作用 306
8.1.3 软件评审的特点 306
8.2 软件评审活动 307
8.3 软件评审技术和工具 308
8.3.1 常用技术和工具 308
8.3.2 SourceMonitor工具 308
8.4 软件评审的组织 315
本章小结 316
本章习题 316
第9章 软件质量与质量保证
9.1 相关概念 318
9.1.1 软件质量保证(SQA) 318
9.1.2 软件质量控制(SQC) 318
9.1.3 SQC与SQA的区别 318
9.2 软件质量模型和质量度量 319
9.2.1 软件质量模型 319
9.2.2 软件质量的度量 320
9.3 软件质量管理与质量保证 321
9.3.1 软件质量管理 321
9.3.2 软件质量保证的活动 322
9.3.3 软件质量保证体系的构成 323
9.4 程序正确性软件质量 323
9.4.1 程序正确性的标准 323
9.4.2 软件错误的分类 324
9.5 程序中隐藏错误数量估计 324
9.5.1 种子模型法 325
9.5.2 Hyman估算法 325
9.5.3 回归分析 326
本章小结 326
本章习题 327
第10章 测试的组织和管理
10.1 人员和资源组织 328
10.1.1 软件测试工作的特点 328
10.1.2 软件测试人员组织 329
10.1.3 软件测试资源组织 331
10.2 过程和进度管理 331
10.2.1 软件测试项目的过程 331
10.2.2 测试进度管理 335
10.3 测试文档、测试用例和缺陷管理 336
10.3.1 测试文档管理 336
10.3.2 测试用例管理 337
10.3.3 缺陷管理 339
本章小结 340
本章习题 340
参考文献