图书目录

第1章  测试概述 1

1.1?概述 1

1.2?测试的目标与局限性 2

1.2.1  测试人员的思维 2

1.2.2  用户级别的非软件测试

——买车 3

1.2.3  开发人员级别的非软件

测试——造车 4

1.2.4  测试的4个主要目标 7

1.2.5  开发公理——质量必须

在开发时考虑,而不是

测试时 9

1.3?测试的价值与开销 9

1.3.1  市场级别的非软件测试——

车辆安全与销售额 10

1.3.2  估算失败的开销 10

1.3.3  Basili和Boehm的指数

定律 11

1.3.4  Internet上的“淘金潮” 13

1.3.5  电子商务的致命弱点 13

1.4?测试与软件开发生命周期的关系 13

1.4.1  软件测试作为一项技术

职业的发展史 13

1.4.2  好的软件测试的10个

准则 14

1.4.3  “GOSSIP”游戏 18

1.5?软件测试中的测试人员和开发

人员的角色 19

1.5.1  软件质量期望的简史——

“天堂的迷失” 19

1.5.2  测试人员在软件开发中的

角色 20

1.5.3  测试工具专家在软件

开发中的角色 20

1.5.4  测试组中都有谁 21

1.6?关于软件测试的观点讨论 21

1.7?本章小结 21

1.7.1  4个主要的测试目标 21

1.7.2  开发公理——质量必须在

开发时而不是测试时考虑 22

1.7.3  软件测试作为一项技术

职业的发展史 22

1.7.4  好的软件测试的10个

准则 22

第2章?软件开发生命周期 24

2.1  概述 24

2.2?方法和工具 24

2.3?软件开发生命周期的发展 25

2.3.1  经典的SDLC 25

2.3.2  原型化方法 25

2.3.3  快速应用程序开发 26

2.4?逐步开发方法 27

2.4.1  生命周期阶段 27

2.4.2  系统开发步骤 28

2.4.3  在各阶段中的软件测试 28

2.5?初始调研阶段 30

2.5.1  进行企业分析 30

2.5.2  定义系统目的、目标和

性能标准 31

2.5.3  评估系统和项目风险 32

2.5.4  评估系统和项目的可行性 33

2.5.5  通过JAD会议确认初始

结论 33

2.5.6  获得批准 34

2.6?分析阶段 34

2.6.1  分析功能需求 34

2.6.2  分析已有系统文档 34

2.6.3  访谈 34

2.6.4  调查研究 35

2.6.5  举行JAD会议 35

2.6.6  观察现有系统 35

2.6.7  记录功能需求 35

2.7?设计阶段 36

2.7.1  寻找可行的设计方案 37

2.7.2  评估可行的设计方案 38

2.7.3  举行JAD会议确定并

评估设计方案 39

2.7.4  选取最优的设计方案 39

2.8?初始构建阶段 39

2.8.1  构建每个模块的软件 40

2.8.2  向用户和项目投资方演示

新的系统模块 42

2.9?最终构建阶段 42

2.9.1  构建并测试可投产的软件 42

2.9.2  构建并测试可投产的

数据库或数据仓库 43

2.9.3  安装必要的新硬件和

网络连接 43

2.9.4  准备好所需的物理设施 43

2.9.5  测试硬件配置 43

2.9.6  完成所有文档 43

2.9.7  争取用户同意开始运行 43

2.9.8  培训参与人员和用户 44

2.10?安装阶段 44

2.10.1  安装系统组件 44

2.10.2  移交新系统 44

2.10.3  进行实施后评估 44

2.11?关于PDM的观点讨论 45

2.12?本章小结 45

第3章  结构化测试概述 47

3.1?概述 47

3.2?软件测试人员的清单 48

3.3?SPRAE——一个通用的结构化

测试方法 49

3.3.1  规约 50

3.3.2  预先策划 50

3.3.3  可重复性 50

3.3.4  责任说明 50

3.3.5?经济性 51

3.4?关于结构化测试的观点讨论 52

第4章?测试策略 53

4.1?概述 53

4.2?测试策略中的“棋子” 53

4.2.1  静态测试 53

4.2.2  白盒测试 54

4.2.3  黑盒测试 55

4.2.4  性能测试 55

4.3?二维测试策略棋盘 56

4.4?三维测试策略棋盘 60

4.5?关于测试策略的观点讨论 62

第5章  测试计划 63

5.1?概述 63

5.2?测试计划 63

5.3?测试用例 66

5.3.1  测试用例细节 67

5.3.2  动作 70

5.4?在现实世界中编写测试计划与

测试用例 71

5.5?测试文档标准 72

5.6?关于测试计划的观点讨论 73

第6章  静态测试 74

6.1?概述 74

6.2?静态测试的目标 74

6.3?静态测试的备选文档 74

6.3.1  软件开发管理人员文档 75

6.3.2  软件开发人员文档 76

6.3.3  测试人员文档 76

6.3.4  管理员文档 76

6.3.5  最终用户文档 77

6.4?静态测试技术 77

6.5?跟踪静态测试所发现的错误 78

6.6?关于静态测试的观点讨论 78

第7章  功能测试 80

7.1?概述 80

7.2?从用况到功能测试用例 80

7.3?功能测试方法 83

7.3.1  用户导航测试 83

7.3.2  事务界面测试 83

7.3.3  事务流程测试 84

7.3.4  报告界面测试 84

7.3.5  报告流程测试 85

7.3.6  数据库测试 85

7.4?回归测试的方法 86

7.5?白盒测试技术 86

7.5.1  语句覆盖技术 87

7.5.2  分支(简单条件)覆盖

技术 87

7.5.3  复合条件覆盖技术 87

7.5.4  路径覆盖技术 88

7.5.5  循环覆盖技术 89

7.5.6  直觉和经验 89

7.6?黑盒测试技术 91

7.6.1  等价类技术 91

7.6.2  边界值分析技术 92

7.6.3  预期结果覆盖技术 93

7.6.4  直觉和经验 95

7.7?本章小结 96

7.8?关于功能测试的观点讨论 98

第8章  结构(非功能)测试 99

8.1?概述 99

8.2?接口测试 99

8.3?安全测试 100

8.4?安装测试 101

8.5?冒烟测试 101

8.6?管理测试 102

8.7?备份和恢复测试 102

8.8?关于结构测试的观点讨论 103

8.9?本章小结 103

第9章  性能测试 105

9.1?概述 105

9.2?负载规划技术 105

9.2.1  性能负载需求文档 106

9.2.2  性能负载峰值文档 107

9.3?负载执行技术 108

9.3.1  负载上行到峰值 109

9.3.2  负载从峰值下行 109

9.3.3  峰值性能的度量 110

9.4?构件性能测试 110

9.5?往返性能 110

9.5.1  一个典型的性能响应

曲线 112

9.5.2  空测试系统中的周六

峰值负载 114

9.5.3  周六的峰值负载组合 115

9.5.4  周六负载的致命缺陷 116

9.5.5  周六负载的致命缺陷的

修正 116

9.5.6  工作日负载性能计划的

执行 119

9.6?关于性能测试的观点讨论 119

9.7?本章小结 120

第10章  测试环境 122

10.1?概述 122

10.2?模拟 122

10.3?基准 123

10.4?测试环境 123

10.5?测试环境的目标 124

10.6?好的测试环境及使用它们的

  原因 126

10.7?不好的测试环境及避免它们

  的原因 127

10.8?关于测试环境的观点讨论 128

10.9?本章小结 128

第11章  自动化测试工具 130

11.1?概述 130

11.2?软件自动化测试工具简史 130

11.3?测试工具记录/回放范型 132

11.4?测试工具触点范型 134

11.4.1  功能测试工具的触点

范型 134

11.4.2  性能测试工具的触点

范型 135

11.5?测试工具执行范型 137

11.6?测试工具带来的好处 138

11.6.1  可重复性——投资回报

问题 138

11.6.2  可重复性的精度——

技术问题 138

11.6.3  隐藏动作和结果的验证

——技术问题 139

11.6.4  时间点精度和分布——

技术问题 139

11.6.5  完成手动测试不可能

完成的任务——投资

回报问题 140

11.6.6  可复用性(回归测试)

——投资回报问题 140

11.7?测试工具带来的问题 140

11.7.1  测试工具成本——财务、

资源和技巧问题 140

11.7.2  一次性的测试安装成本 141

11.7.3  测试工具的能力范围 141

11.8?关于自动化测试工具的观点

  讨论 142

11.9?本章小结 142

第12章  分析并解读测试结果 144

12.1?概述 144

12.2?尝试过的测试用例与成功的

   测试用例 144

12.3?关注单个缺陷的发现 147

12.4?关注缺陷积压日志的发现 148

12.5?关注缺陷集群的发现 149

12.6?以往错误发现模式的作用 153

12.6.1  使用以往项目缺陷

历史作为出发点 154

12.6.2  在启动新项目之前利用

以往项目的缺陷历史 156

12.6.3  在开始新项目时利用

以往项目的缺陷历史 157

12.6.4  在新项目过程中利用

以往项目的缺陷历史 159

12.7?Rayleigh曲线——缺陷发现模式

  的瞄准线 161

12.8?更多的缺陷跟踪度量指标 164

12.9?关于测试结果的观点讨论 165

12.10?本章小结 165

第13章  一个全软件开发生命周期的

测试项目 167

13.1?概述 167

13.2?初始调研阶段 168

13.3?分析阶段 169

13.3.1  初始会议和结论 169

13.3.2  需求撰写和复审——

用况 171

13.3.3  需求静态测试 172

13.3.4  使用静态测试的结果

修正和改进需求 172

13.3.5  完成测试策略 174

13.4?设计阶段 175

13.4.1  支持系统的设计 175

13.4.2  应用软件的逻辑设计 176

13.4.3  逻辑设计的静态测试 177

13.4.4  设计测试计划 177

13.5?初始构建阶段 180

13.5.1  静态测试 180

13.5.2  测试环境搭建和测试

数据准备 181

13.5.3  功能测试 182

13.5.4  结构测试 183

13.5.5  性能测试 184

13.5.6  缺陷追踪和分析 185

13.5.7  初始构建阶段的结束 187

13.6?最终构建阶段 188

13.6.1  静态测试 188

13.6.2  功能测试 189

13.6.3  结构测试 189

13.6.4  性能测试 189

13.6.5  缺陷跟踪和分析 190

13.7?实施阶段 191

13.8?实施后阶段 191

13.9?案例结束 191

13.9.1  小结 192

13.9.2  案例声明 192

第14章  复杂应用测试 193

14.1?概述 193

14.2?单级应用 193

14.3?两级应用 195

14.4?三级应用 198

14.5?多级应用 201

14.6?关于复杂应用测试的观点

  讨论 206

14.7?本章小结 206

第15章  测试的未来发展方向 208

15.1?概述 208

15.2?会增加对专业软件测试人员

  需求的软件开发的未来发展

  方向 208

15.3?软件测试目前面临的挑战 209

15.4?软件测试近期面临的挑战 209

15.5?软件测试将要面临的挑战 210

15.6?关于未来测试方向的观点讨论 211

15.7?本章小结 211

参考文献 213