《软件测试 第3版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)乔根森著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2011
  • ISBN:9787115247995
  • 页数:330 页
图书介绍:本书是经典的软件测试教材。书中对基础知识、方法提供了系统的综合阐述,既涉及基于模型的开发又介绍测试驱动的开发,很好地做到了理论与实践相结合,反映了软件标准和开发的最近进展和变化。

第一部分 数学基础 2

第1章 测试概述 2

1.1基本概念 2

1.2测试用例 3

1.3通过维恩图来考察测试 4

1.4构造测试用例 5

1.4.1功能测试 6

1.4.2结构测试 7

1.4.3功能测试与结构测试之争 7

1.5错误与故障差异 8

1.6测试的层次 10

参考文献 11

习题 11

第2章 程序示例 12

2.1通用伪代码 12

2.2三角形问题 13

2.2.1问题描述 13

2.2.2三角形问题的讨论 14

2.2.3三角形问题的经典实现 14

2.2.4三角形问题的结构化实现 16

2.3 NextDate函数 18

2.3.1问题描述 18

2.3.2 NextDate函数的讨论 18

2.3.3 NextDate函数的实现 19

2.4佣金问题 21

2.4.1问题描述 21

2.4.2佣金问题的讨论 22

2.4.3佣金问题的实现 22

2.5 SATM系统 23

2.5.1问题描述 23

2.5.2 SATM系统的讨论 25

2.6货币转换器 25

2.7雨刷控制器 26

参考文献 26

习题 26

第3章 测试人员的离散数学 28

3.1集合论 28

3.1.1集合的成员关系 28

3.1.2集合的定义方法 28

3.1.3空集 29

3.1.4集合的维恩图 29

3.1.5集合运算 30

3.1.6集合关系 32

3.1.7集合划分 32

3.1.8集合恒等 33

3.2函数 33

3.2.1定义域与值域 34

3.2.2函数的类型 34

3.2.3函数复合 35

3.3关系 36

3.3.1集合之间的关系 36

3.3.2单个集合上的关系 37

3.4命题逻辑 38

3.4.1逻辑运算符 39

3.4.2逻辑表达式 39

3.4.3逻辑等价 40

3.5概率论 40

参考文献 41

习题 42

第4章 测试人员的图论 43

4.1图 43

4.1.1节点的度 44

4.1.2关联矩阵 44

4.1.3邻接矩阵 45

4.1.4路径 45

4.1.5连通性 46

4.1.6压缩图 46

4.1.7圈数 46

4.2有向图 47

4.2.1入度与出度 48

4.2.2节点类型 48

4.2.3有向图的邻接矩阵 48

4.2.4路径与半路径 49

4.2.5可达矩阵 49

4.2.6 n连通性 50

4.2.7强分图 50

4.3软件测试中常用的图 51

4.3.1程序图 51

4.3.2有限状态机 52

4.3.3 Petri网 53

4.3.4事件驱动Petri网 55

4.3.5状态图 57

参考文献 58

习题 58

第二部分 功能测试 62

第5章 边界值测试 62

5.1边界值分析 62

5.1.1边界值分析的拓展 63

5.1.2边界值分析的局限性 64

5.2健壮性测试 64

5.3最坏情况测试 65

5.4特殊值测试 66

5.5示例 66

5.5.1三角形问题的测试用例 66

5.5.2 NextDate函数的测试用例 68

5.5.3佣金问题的测试用例 68

5.6随机测试 70

5.7边界值测试的原则 72

习题 72

第6章 等价类测试 73

6.1等价类 73

6.1.1弱一般等价类测试 74

6.1.2强一般等价类测试 74

6.1.3弱健壮等价类测试 74

6.1.4强健壮等价类测试 75

6.2三角形问题的等价类测试用例 75

6.3 NextDate函数的等价类测试用例 77

6.4佣金问题的等价类测试用例 80

6.5原则与注意事项 82

参考文献 82

习题 82

第7章 基于决策表的测试 84

7.1决策表 84

7.2三角形问题的测试用例 88

7.3 NextDate函数的测试用例 88

7.3.1第一轮尝试 88

7.3.2第二轮尝试 89

7.3.3第三轮尝试 90

7.4佣金问题的测试用例 92

7.5原则与注意事项 93

参考文献 93

习题 93

第8章 功能测试回顾 94

8.1测试的工作量 94

8.2测试的效率 96

8.3测试的有效性 97

8.4原则 98

8.5案例研究 99

第三部分 结构测试 104

第9章 路径测试 104

9.1 DD路径 106

9.2测试覆盖指标 108

9.2.1基于指标的测试 108

9.2.2测试覆盖分析器 110

9.3基路径测试 110

9.3.1 McCabe的基路径方法 111

9.3.2 McCabe基路径方法的注意事项 113

9.3.3 McCabe方法的基本复杂度 114

9.4原则与注意事项 117

参考文献 118

习题 118

第10章 数据流测试 120

10.1定义/使用测试 120

10.1.1举例 121

10.1.2 stocks的定义使用路径 125

10.1.3 locks的定义使用路径 125

10.1.4 totalLocks的定义使用路径 125

10.1.5 sales的定义使用路径 126

10.1.6 commssion的定义使用路径 126

10.1.7定义使用路径的测试覆盖指标 127

10.2基于片的测试 128

10.2.1举例 129

10.2.2风格与方法 132

10.3原则与注意事项 133

参考文献 134

习题 134

第11章 结构测试回顾 135

11.1缺漏与冗余 135

11.2用于评估测试方法的指标 137

11.3重新修订的案例研究 139

11.3.1基于路径的测试 141

11.3.2数据流测试 141

11.3.3片测试 141

参考文献 142

习题 142

第四部分 集成测试和系统测试 144

第12章 测试的层次 144

12.1测试层次划分的传统观点 144

12.2其他生命周期模型 145

12.2.1瀑布模型的变体 146

12.2.2基于规格说明的生命周期模型 147

12.3 SATM系统 149

12.4将集成测试与系统测试分开 157

12.4.1从结构角度分析 158

12.4.2从行为角度分析 159

参考文献 159

第13章 集成测试 160

13.1深入研究SATM系统 160

13.2基于功能分解的集成 164

13.2.1自顶向下集成 164

13.2.2自底向上集成 166

13.2.3三明治集成 166

13.2.4优缺点 167

13.3基于调用图的集成 167

13.3.1成对集成 167

13.3.2相邻集成 168

13.3.3基于调用图集成的优缺点 169

13.4基于路径的集成 170

13.4.1新概念与扩展概念 170

13.4.2 SATM系统中的MM路径 172

13.4.3 MM路径复杂度 176

13.4.4基于路径集成技术的优缺点 177

13.5案例分析 177

13.5.1基于分解的集成 181

13.5.2基于调用图的集成 181

13.5.3基于MM路径的集成 181

参考文献 182

习题 182

第14章 系统测试 184

14.1线索 184

14.1.1线索存在的可能性 185

14.1.2线索定义 186

14.2需求规格说明的基本概念 187

14.2.1数据 187

14.2.2行为 188

14.2.3设备 188

14.2.4事件 188

14.2.5线索 189

14.2.6基本概念之间的关系 189

14.2.7利用基本概念建模 189

14.3寻找线索 190

14.4线索测试的结构策略 193

14.4.1自底向上组织线索 194

14.4.2节点与边覆盖指标 194

14.5线索测试的功能策略 196

14.5.1基于事件的线索测试 196

14.5.2基于端口的线索测试 197

14.5.3基于数据的线索测试 197

14.6 SATM测试线索 199

14.7系统测试原则 203

14.7.1伪结构系统测试 203

14.7.2性能分析 204

14.7.3累进测试与回归测试 206

14.8 ASF测试示例 206

参考文献 208

习题 208

第15章 交互性测试 209

15.1交互的语境 209

15.2交互的分类 211

15.2.1单处理器中的静态交互 211

15.2.2多处理器中的静态交互 212

15.2.3单处理器中的动态交互 213

15.2.4多处理器中的动态交互 217

15.3线索的交互、合成和确定性 223

15.4客户/服务器系统的测试 224

参考文献 225

习题 226

第五部分 面向对象测试 228

第16章 面向对象测试的相关问题 228

16.1面向对象测试的单元 228

16.2合成与封装的含义 229

16.3继承的含义 230

16.4多态性的含义 231

16.5面向对象测试的层次 232

16.6 GUI测试 232

16.7面向对象软件的数据流测试 232

16.8第五部分所采用的示例 232

16.8.1面向对象的日历程序 232

16.8.2货币转换应用程序 234

参考文献 238

习题 238

第17章 类测试 239

17.1以方法为单元的测试 239

17.1.1 o-oCalendar的伪代码 240

17.1.2 Date.increment的单元测试 244

17.2以类为单元的测试 245

17.2.1 windshieldWiper类的伪代码 245

17.2.2 windshieldWiper类的单元测试 246

第18章 面向对象的集成测试 250

18.1 UML对集成测试的支持 250

18.2面向对象软件的MM路径 252

18.3面向对象数据流集成测试的框架 259

18.3.1事件驱动和消息驱动的Petri网 259

18.3.2由继承导出的数据流 260

18.3.3由消息导出的数据流 261

18.3.4是否需要片 261

参考文献 261

习题 262

第19章GUI测试 264

19.1货币转换程序 264

19.2货币转换程序的单元测试 264

19.3货币转换程序的集成测试 265

19.4货币转换程序的系统测试 267

习题 272

第20章 面向对象的系统测试 273

20.1货币转换器的 UML描述 273

20.1.1问题陈述 273

20.1.2系统功能 273

20.1.3表示层 274

20.1.4高层用例 274

20.1.5基本用例 275

20.1.6详细的GUI定义 276

20.1.7扩展的基本用例 276

20.1.8真实用例 279

20.2基于UML的系统测试 280

20.3基于状态图的系统测试 282

参考文献 282

第六部分 新兴测试技术 284

第21章 探索式测试 284

21.1上下文驱动学派 284

21.2探索式测试 285

21.3探索一个常见示例 287

21.4探索式测试与上下文驱动测试探讨 288

参考文献 289

习题 289

第22章 基于模型测试 290

22.1基于模型进行测试 290

22.2恰当的系统模型 290

22.2.1 Peterson格 291

22.2.2主流模型的表达能力 292

22.2.3选择恰当的模型 292

22.3基于用例的测试 293

22.3.1从用例中推导出测试用例 293

22.3.2交互用例 294

22.3.3需要多少用例 295

22.4支持基于模型的测试的商用工具 295

参考文献 296

第23章 测试驱动开发 297

23.1“测试然后编码”的软件开发周期 297

23.2自动化测试执行(测试框架) 304

23.3 Java和JUnit示例 305

23.3.1 Java源代码 306

23.3.2 JUnit测试代码 307

23.4其他待解决的问题 308

23.4.1基于规格说明还是基于代码 308

23.4.2需要配置管理吗 309

23.4.3粒度应该多大 309

23.5测试驱动开发的优缺点及其他相关问题 310

23.6模型驱动开发与测试驱动开发对比 311

第24章 全对测试详述 315

24.1全对测试技术 315

24.1.1程序输入 316

24.1.2独立变量 317

24.1.3输入的顺序 319

24.1.4完全由输入所引发的失效 322

24.2对NIST研究成果的进一步分析 322

24.3全对测试的适用范围 323

24.4对全对测试的建议 324

参考文献 324

第25章 尾声:软件测试精益求精 325

25.1软件测试是一种技艺 325

25.2软件测试的最佳实践 326

25.3让软件测试更出色的10项最佳实践 327

25.3.1模型驱动开发 327

25.3.2慎重地定义与划分测试的层次 327

25.3.3基于模型的系统级测试 328

25.3.4系统测试的扩展 328

25.3.5利用关联矩阵指导回归测试 328

25.3.6利用MM路径实现集成测试 328

25.3.7把基于规格说明的测试和基于代码的单元级测试有机地结合起来 328

25.3.8基于单个单元特性的代码覆盖指标 329

25.3.9维护阶段的探索式测试 329

25.3.10测试驱动开发 329

25.4针对不同项目实现最佳实践 329

25.4.1任务关键型项目 329

25.4.2时间关键型项目 330

25.4.3对遗留代码的纠错维护 330