第Ⅰ部分 软件测试基础篇 2
第1章 软件与软件危机 2
1.1.1软件特性 2
1.1.2软件种类 4
1.2软件危机 4
1.2.1软件危机的分析 4
1.2.2软件危机现象 7
1.2.3避免软件危机的方法 8
1.3软件工程 8
1.3.1软件工程定义 8
1.3.2软件生命周期 12
1.3.3敏捷开发过程 18
习题和思考题 22
第2章 软件测试基础 23
2.1软件测试基本概念 23
2.1.1软件测试发展史 23
2.1.2软件测试的定义 25
2.1.3软件测试的目的 27
2.1.4软件测试的原则 28
2.1.5软件测试质量度量 32
2.1.6软件测试与软件开发各阶段的关系 33
2.2软件测试工作 33
2.2.1软件测试工作的流程 34
2.2.2软件测试工具对测试工作的支持 35
2.2.3软件测试工作的几个认识误区 36
2.3软件测试职业 40
2.3.1软件测试职业发展 40
2.3.2软件测试人员应具备的素质 44
2.3.3软件测试的就业前景 47
习题和思考题 48
第3章 软件测试分类与分级 50
3.1软件测试分类 50
3.1.1计算机软件配置项 50
3.1.2基于CSCI的软件测试分类 51
3.2软件测试分级 56
3.2.1软件生命周期的测试分级 56
3.2.2软件测试中的错误分级及其应用 59
习题和思考题 62
第Ⅱ 部分 软件测试过程篇 64
第4章 软件缺陷管理 64
4.1软件缺陷 64
4.1.1软件缺陷的定义 64
4.1.2软件缺陷描述 67
4.1.3软件缺陷的分类 69
4.1.4软件缺陷管理 75
4.2软件缺陷度量、分析与统计 77
4.2.1软件缺陷度量 77
4.2.2软件缺陷分析 81
4.2.3软件缺陷统计 83
4.3软件缺陷报告 87
4.3.1缺陷报告的主要内容 87
4.3.2缺陷报告撰写标准 89
4.4缺陷管理工具 91
4.4.1缺陷管理工具介绍 91
4.4.2缺陷管理工具Mantis及其应用 93
4.4.3 Mantis应用举例 115
习题和思考题 123
第5章 基于生命周期的软件测试方法 124
5.1生命周期测试概念 124
5.1.1生命周期测试的工作划分 124
5.1.2生命周期测试的主要任务 125
5.1.3基于风险的软件测试方法 130
5.2生命周期各个阶段的测试要求 133
5.2.1需求阶段测试 133
5.2.2设计阶段测试 134
5.2.3编码阶段测试 135
5.2.4测试阶段 135
5.2.5安装阶段测试 136
5.2.6验收阶段测试 137
5.2.7维护阶段 138
5.3生命周期软件测试案例分析 138
5.3.1被测样例系统需求说明 138
5.3.4被测样例系统设计说明 140
习题和思考题 144
第6章 软件测试过程及测试过程管理 145
6.1软件测试过程 145
6.1.1软件测试过程模型 146
6.1.2软件测试过程中的活动及内容 149
6.1.3软件测试过程度量 151
6.1.4软件测试过程成熟度 154
6.1.5软件测试过程改进 157
6.2软件测试过程管理 160
6.2.1软件测试过程管理的理念 162
6.2.2软件测试计划与测试需求 163
6.2.3软件测试设计和开发 169
6.2.4软件测试的执行 172
6.2.5软件测试文档 174
6.2.6 软件测试用例、测试数据与测试脚本 179
6.2.7软件测试过程中的配置管理 183
6.2.8软件测试过程中的组织管理 186
6.3软件测试管理工具 191
6.3.1软件测试管理工具应具备的功能 192
6.3.2软件测试管理工具的选择 192
6.3.3常用软件测试管理工具介绍 193
6.3.4应用软件测试管理工具TestLink 195
6.3.5 TestLink应用举例 199
习题和思考题 219
第Ⅲ部分 软件测试方法与技术篇 222
第7章 软件静态测试 222
7.1各阶段评审 222
7.1.1同行评审 222
7.1.2测试需求规格说明书 225
7.2代码检查 226
7.21代码检查方法 228
7.2.2代码编程规范检查 231
7.2.3代码的自动分析 235
7.2.4代码结构分析 236
7.2.5代码安全性检查 239
7.3软件复杂性分析 241
7.3.1软件复杂性度量与控制 241
7.3.2软件复杂性度量元 245
7.3.3面向对象的软件复杂性度量 251
7.4软件质量模型 254
7.4.1软件质量的概念 255
7.4.2软件质量分层模型 257
7.4.3软件质量度量与评价 263
7.5代码静态分析工具 269
7.5.1编程规则检查工具CheckStyle 269
7.5.2代码缺陷分析工具PMD 274
7.5.3代码质量分析工具SourceMonitor 284
习题和思考题 290
第8章 软件动态测试 292
8.1白盒测试 292
8.1.1逻辑覆盖 293
8.1.2路径测试 296
8.1.3数据流测试 300
8.1.4信息流分析 304
8.1.5覆盖率分析及测试覆盖准则 304
8.2黑盒测试 308
8.2.1等价类划分 309
8.2.2边界值分析 312
8.2.3因果图 313
8.2.4随机测试 316
8.2.5猜错法 316
8.3测试用例设计 317
8.3.1测试用例设计概念 317
8.4.2测试用例编写要素与模板 320
8.4.3测试用例的设计步骤 325
8.4.4测试用例分级 326
8.4.5软件测试用例设计的误区 328
8.4.6软件测试用例设计举例 330
习题和思考题 332
第9章 软件单元测试 333
9.1单元测试概述 334
9.1.1单元测试的意义 334
9.1.2单元测试的内容 336
9.2单元测试方法和步骤 340
9.2.1单元测试方法 340
9.2.2单元测试步骤 341
9.3单元测试工具与实践 342
9.3.1单元测试工具JUnit 342
9.3.2 JUnit下的覆盖测试工具EclEmma 355
习题和思考题 367
第10章 软件集成测试和确认测试 368
10.1集成测试 368
10.1.1集成测试的概念 368
10.1.2传统的集成测试方法 372
10.1.3基于McCabe的设计复杂性与集成复杂性的集成测试方法 377
10.1.4集成测试过程 380
10.2确认测试 382
10.2.1确认测试的基本概念 382
10.2.2确认测试的过程 383
10.3集成测试应用举例 385
习题和思考题 388
第11章 软件系统测试 389
11.1系统测试 389
11.1.1系统测试的概念 389
11.1.2系统测试中关注的重要问题 390
11.1.3系统测试的要求和主要内容 394
11.1.4系统测试设计 398
11.1.5系统测试手段 400
11.2系统测试工具 407
11.2.1功能自动化测试工具Selenium及其应用 407
11.2.2性能自动化测试工具JMeter及其应用 416
习题和思考题 432
第12章 面向对象软件测试 433
12.1面向对象程序设计语言对软件测试的影响 434
12.1.1信息隐蔽对测试的影响 434
12.1.2封装和继承对测试的影响 434
12.1.3集成测试 434
12.1.4多态性和动态绑定对测试的影响 435
12.2面向对象测试模型 436
12.2.1面向对象分析的测试(OOA Test) 437
12.2.2面向对象设计的测试(OOD Test) 439
12.2.3面向对象编程的测试(OOP Test) 440
12.2.4面向对象的单元测试(OO Unit Test) 441
12.2.5面向对象的集成测试(OO Integrate Test) 443
12.2.6面向对象的系统测试(OO System Test) 444
12.2.7面向对象软件的回归测试 445
12.2.8基于UML的面向对象软件测试 445
12.3面向对象软件测试用例的设计 447
12.3.1基于故障的测试 447
12.3.2基于脚本的测试 447
12.3.3面向对象类的随机测试 447
习题和思考题 448
参考文献 449