第一部分 数学背景 2
第1章 测试概述 2
1.1基本定义 2
1.2测试用例 3
1.3通过维恩图理解测试 4
1.4标识测试用例 6
1.4.1功能性测试 6
1.4.2结构性测试 7
1.4.3功能性测试与结构性测试的比较 8
1.5错误与缺陷分类 9
1.6测试级别 11
1.7参考文献 12
1.8练习 12
第2章 举例 13
2.1泛化的伪代码 13
2.2三角形问题 15
2.2.1问题陈述 15
2.2.2讨论 15
2.2.3传统实现 15
2.2.4结构化实现 18
2.3 NextDate函数 20
2.3.1问题陈述 20
2.3.2讨论 20
2.3.3实现 20
2.4佣金问题 23
2.4.1问题陈述 23
2.4.2讨论 23
2.4.3实现 24
2.5 SATM系统 24
2.5.1问题陈述 25
2.5.2讨论 27
2.6货币转换器 27
2.7土星牌挡风玻璃雨刷 28
2.8参考文献 28
2.9 练习 28
第3章 测试人员的离散数学 30
3.1集合论 30
3.1.1集合成员关系 30
3.1.2集合定义 31
3.1.3空集 31
3.1.4维恩图 32
3.1.5集合操作 32
3.1.6集合关系 34
3.1.7子集划分 34
3.1.8集合恒等式 35
3.2函数 36
3.2.1定义域与值域 36
3.2.2函数类型 37
3.2.3函数合成 38
3.3关系 39
3.3.1集合之间的关系 39
3.3.2单个集合上的关系 40
3.4命题逻辑 41
3.4.1逻辑操作符 42
3.4.2逻辑表达式 42
3.4.3逻辑等价 43
3.5概率论 44
3.6参考文献 45
3.7练习 45
第4章 测试人员的图论 47
4.1图 47
4.1.1节点的度 48
4.1.2关联矩阵 48
4.1.3相邻矩阵 49
4.1.4路径 49
4.1.5连接性 50
4.1.6压缩图 51
4.1.7圈数 51
4.2有向图 52
4.2.1 内度与外度 53
4.2.2 节点的类型 53
4.2.3有向图的相邻矩阵 54
4.2.4路径与半路径 54
4.2.5可到达性矩阵 55
4.2.6 n-连接性 55
4.2.7强组件 56
4.3用于测试的图 57
4.3.1程序图 57
4.3.2有限状态机 58
4.3.3 Petri网 60
4.3.4事件驱动的Petri网 62
4.3.5状态图 65
4.4 参考文献 67
4.5练习 67
第二部分 功能性测试 70
第5章 边界值测试 70
5.1边界值分析 70
5.1.1归纳边界值分析 71
5.1.2边界值分析的局限性 72
5.2健壮性测试 73
5.3最坏情况测试 73
5.4特殊值测试 74
5.5举例 75
5.5.1三角形问题的测试用例 75
5.5.2 NextDate函数的测试用例 79
5.5.3佣金问题的测试用例 82
5.6随机测试 84
5.7边界值测试的指导方针 85
5.8练习 86
第6章 等价类测试 87
6.1等价类 87
6.1.1弱一般等价类测试 88
6.1.2强一般等价类测试 88
6.1.3弱健壮等价类测试 89
6.1.4强健壮等价类测试 90
6.2三角形问题的等价类测试用例 90
6.3 NextDate函数的等价类测试用例 92
6.4佣金问题的等价类测试用例 95
6.4.1输出值域等价类测试用例 96
6.4.2输出值域等价类测试用例 97
6.5指导方针和观察 97
6.6参考文献 98
6.7练习 98
第7章基于决策表的测试 100
7.1决策表 100
7.2三角形问题的测试用例 104
7.3 NextDate函数测试用例 105
7.3.1第一次尝试 105
7.3.2第二次尝试 106
7.3.3第三次尝试 108
7.4佣金问题的测试用例 110
7.5指导方针与观察 110
7.6参考文献 111
7.7练习 111
第8章 功能性测试回顾 112
8.1测试工作量 112
8.2测试效率 115
8.3测试的有效性 115
8.4指导方针 116
8.5案例研究 117
第三部分 结构性测试 124
第9章 路径测试 124
9.1DD-路径 126
9.2测试覆盖指标 129
9.2.1基于指标的测试 129
9.2.2测试覆盖分析器 131
9.3基路径测试 131
9.3.1 McCabe的基路径方法 132
9.3.2关于McCabe基路径方法的观察 134
9.3.3基本复杂度 136
9.4指导方针与观察 138
9.5参考文献 140
9.6 练习 141
第10章 数据流测试 143
10.1定义/使用测试 143
10.1.1举例 144
10.1.2 stocks的定义-使用路径 148
10.1.3 locks的定义-使用路径 148
10.1.4 totalLocks的定义-使用路径 149
10.1.5 sales的定义-使用路径 149
10.1.6 commission的定义-使用路径 150
10.1.7定义-使用路径测试覆盖指标 151
10.2基于程序片的测试 152
10.2.1举例 154
10.2.2风格与技术 157
10.3指导方针与观察 158
10.4参考文献 159
10.5练习 159
第11章 结构性测试回顾 160
11.1漏洞与冗余 160
11.2用于方法评估的指标 162
11.3重温案例研究 164
11.3.1基于路径的测试 167
11.3.2数据流测试 167
11.3.3片测试 167
11.4参考文献 167
11.5练习 168
第四部分 集成与系统测试 170
第12章 测试层次 170
12.1测试层次的传统观点 170
12.2其他生命周期模型 171
12.2.1瀑布模型的新模型 172
12.2.2基于规格说明的生命周期模型 173
12.3 ASTM系统 175
12.4将集成测试与系统测试分开 184
12.4.1结构认识 185
12.4.2行为认识 186
12.5参考文献 186
第13章 集成测试 187
13.1深入研究S ATM系统 187
13.2基于分解的集成 191
13.2.1自顶向下集成 191
13.2.2自底向上集成 192
13.2.3三明治集成 193
13.2.4优缺点 194
13.3基于调用图的集成 194
13.3.1成对集成 194
13.3.2相邻集成 194
13.3.3优缺点 196
13.4基于路径的集成 197
13.4.1新概念与扩展概念 197
13.4.2 SATM系统中的MM-路径 200
13.4.3 MM-路径复杂度 203
13.4.4优缺点 204
13.5案例研究 205
13.5.1基于分解的集成 209
13.5.2基于调用图的集成 209
13.5.3基于MM-路径的集成 209
13.6参考文献 210
13.7练习 210
第14章 系统测试 211
14.1线索 211
14.1.1线索的可能性 212
14.1.2线索定义 213
14.2需求规格说明的基本概念 214
14.2.1数据 215
14.2.2行动 215
14.2.3设备 215
14.2.4事件 216
14.2.5线索 216
14.2.6 基本概念之间的关系 216
14.2.7采用基本概念建模 217
14.3寻找线索 219
14.4线索测试的结构策略 222
14.4.1自底向上组织线索 223
14.4.2节点与边覆盖指标 224
14.5线索测试的功能策略 225
14.5.1基于事件的线索测试 225
14.5.2基于端口的线索测试 227
14.5.3基于数据的线索测试 227
14.6 SATM测试线索 229
14.7系统测试指导方针 233
14.7.1伪结构系统测试 233
14.7.2运行剖面 233
14.7.3累进测试与回归测试 235
14.8参考文献 236
14.9练习 236
第15章 交互测试 237
15.1交互的语境 237
15.2交互的分类 239
15.2.1单处理器中的静态交互 240
15.2.2多处理器中的静态交互 241
15.2.3单处理器中的动态交互 242
15.2.4多处理器中的动态交互 247
15.3交互、合成与确定性 254
15.4客户-服务器测试 256
15.5参考文献 257
15.6 练习 257
第五部分 面向对象的测试 260
第16章 面向对象的测试问题 260
16.1 面向对象测试的单元 260
16.2合成与封装的涵义 261
16.3继承的涵义 263
16.4多态性的涵义 264
16.5面向对象测试的层次 264
16.6 GUI测试 264
16.7面向对象软件的数据流测试 265
16.8第五部分采用的例子 265
16.8.1面向对象的日历 265
16.8.2货币转换应用程序 266
16.9参考文献 270
16.10练习 270
第17章 类测试 271
17.1以方法为单元 271
17.1.1 o-oCalendar的伪代码 272
17.1.2Date.increment的单元测试 276
17.2以类为单元 277
17.2.1 windshieldWiper类的伪代码 277
17.2.2windshieldWiper类的单元测试 278
第18章 面向对象的集成测试 282
18.1集成测试的UML支持 282
18.2面向对象软件的MM-路径 284
18.3面向对象数据流集成测试框架 290
18.3.1事件驱动和消息驱动的Petri网 291
18.3.2由继承导出的数据流 292
18.3.3由消息导出的数据流 292
18.3.4分片 294
18.4练习 294
18.5参考文献 296
第19章 GUI测试 297
19.1货币转换程序 297
19.2货币转换程序的单元测试 301
19.3货币转换程序的集成测试 302
19.4货币转换程序的系统测试 303
19.5练习 307
第20章 面向对象的系统测试 308
20.1货币转换器的UML描述 308
20.1.1问题陈述 308
20.1.2系统功能 308
20.1.3表示层 309
20.1.4高层用例 309
20.1.5基本用例 310
20.1.6详细GUI定义 311
20.1.7扩展基本用例 312
20.1.8真实用例 315
20.2基于UML的系统测试 315
20.3基于“状态图”的系统测试 318
20.4参考文献 318