第一部分 基于模型测试的模型理论 2
第1章 基于模型测试概述 2
1.1 基本术语 2
1.2 事件 3
1.3 测试用例 4
1.4 测试用例的执行框架 4
1.5 MBT中的模型 4
1.6 ISTQB中的MBT扩展 5
1.7 MBT的形式 5
1.8 案例集 5
1.8.1 单元级问题:保费计算 5
1.8.2 系统级问题:车库门控系统 6
1.8.3 其他案例 7
1.9 MBT的技术现状 8
参考文献 9
第2章 流程图 10
2.1 定义与表示法 10
2.2 技术详解 10
2.3 案例分析 12
2.3.1 日期计算函数 12
2.3.2 风寒指数表 12
2.3.3 保费计算流程图 13
2.3.4 车库门控系统流程图 13
2.4 基于流程图派生的测试用例 15
2.4.1 保费计算问题的测试用例 15
2.4.2 车库门控系统的测试用例 17
2.5 优势与局限 18
2.6 经验教训 20
参考文献 20
第3章 决策表 21
3.1 定义与表示法 21
3.2 技术详解 22
3.2.1 决策表的精简 22
3.2.2 有互斥条件的决策表 22
3.2.3 冗余和不一致的决策表 24
3.2.4 决策表引擎 24
3.3 案例分析 25
3.3.1 日期计算函数 25
3.3.2 汽车刮水器控制器 26
3.3.3 铁路道口门控制器 27
3.4 基于决策表派生的测试用例 28
3.4.1 保费计算问题的决策表 28
3.4.2 车库门控系统的决策表 30
3.4.3 车库门控系统的测试用例 31
3.5 优势与局限 32
3.6 经验教训 32
参考文献 33
第4章 有限状态机 34
4.1 定义与表示法 34
4.1.1 有限状态机的矩阵表达 35
4.1.2 有限状态机的文本表达 36
4.1.3 有限状态机的惯例与约束 36
4.2 技术详解 38
4.2.1 有限状态机的解释 38
4.2.2 有限状态机的实践 40
4.2.3 有限状态机引擎 40
4.3 案例分析 41
4.3.1 汽车刮水器控制器 41
4.3.2 铁路道口门控制器 43
4.4 基于有限状态机派生的测试用例 44
4.4.1 保费计算问题 45
4.4.2 车库门控系统 46
4.5 经验教训 47
4.6 优势与局限 48
参考文献 49
第5章 Petri网 50
5.1 定义与表示法 50
5.1.1 可变迁与可点火 51
5.1.2 惯例 51
5.1.3 非图形化的表达方式 52
5.2 技术详解 53
5.2.1 顺序、选择和循环 54
5.2.2 可用、不可用和激活 55
5.2.3 触发 55
5.2.4 挂起、恢复和暂停 55
5.2.5 冲突和优先级 56
5.2.6 互斥 56
5.2.7 同步 56
5.2.8 标记和可用序列 57
5.2.9 Petri网和有限状态机 58
5.2.10 Petri网引擎 58
5.3 案例分析 59
5.3.1 生产者-消费者问题 59
5.3.2 汽车刮水器控制器 61
5.4 基于Petri网派生的测试用例 62
5.4.1 保费计算问题 63
5.4.2 车库门控系统 65
5.5 经验教训 69
5.6 优势与局限 70
参考文献 71
第6章 事件驱动的Petri网 72
6.1 定义与表示法 73
6.1.1 可变迁与可点火 74
6.1.2 惯例 76
6.1.3 非图形化的表达方式 76
6.2 技术详解 77
6.2.1 上下文敏感输入事件 78
6.2.2 多原因输出事件 78
6.2.3 事件静默 78
6.2.4 事件驱动Petri网的引擎 78
6.2.5 事件驱动Petri网的优势与局限 79
6.3 案例分析 79
6.3.1 铁路道口门控制器 79
6.3.2 汽车刮水器控制器 80
6.4 基于事件驱动Petri网派生的测试用例 82
6.4.1 保费计算问题 83
6.4.2 车库门控系统 83
6.5 经验教训 89
6.6 优势与局限 91
参考文献 92
第7章 状态图 93
7.1 定义与表示法 93
7.2 技术详解 95
7.2.1 基于广播机制的交互 96
7.2.2 状态图引擎 96
7.2.3 基于状态图派生的测试用例 97
7.3 案例分析 98
7.3.1 铁路道口门控制器 98
7.3.2 汽车刮水器控制器 98
7.4 后续问题 99
7.4.1 保费计算问题 99
7.4.2 车库门控系统 99
7.5 经验教训 104
7.6 优势与局限 105
参考文献 105
第8章 泳道型事件驱动的Petri网 106
8.1 定义与表示法 106
8.1.1 可变迁与可点火 106
8.1.2 泳道型事件驱动的Petri网中的事件 107
8.2 技术详解 107
8.2.1 使用泳道模型 107
8.2.2 “模型检验” 109
8.2.3 基于泳道型事件驱动的Petri网派生的测试用例 110
8.3 后续问题 112
8.3.1 保费计算问题 112
8.3.2 车库门控系统 112
8.4 泳道型事件驱动的Petri网派生的测试用例 120
8.5 经验教训 120
参考文献 121
第9章 面向对象的模型 122
9.1 定义与表示法 123
9.1.1 用例图 124
9.1.2 活动图 125
9.1.3 状态图 126
9.1.4 顺序图 126
9.2 案例分析 127
9.3 后续问题 127
9.3.1 保费计算问题 127
9.3.2 车库门控系统 128
9.4 基于UML模型派生的测试用例 138
9.4.1 基于活动图的测试用例 138
9.4.2 基于用例的测试用例 138
9.4.3 基于用例图的测试用例 139
9.4.4 基于顺序图的测试用例 139
9.4.5 基于状态图的测试用例 139
9.5 优势与局限 139
参考文献 141
第10章 业务流程建模和标识 142
10.1 定义与表示法 142
10.2 技术详解 143
10.3 案例分析 143
10.4 基于业务流程建模和标识定义派生的测试用例 143
10.4.1 保费计算问题 143
10.4.2 车库门控系统 144
10.5 优势与局限 144
第二部分 基于模型测试的实践 148
第11章 国际软件测试评定委员会 148
11.1 ISTQB组织 148
11.2 认证等级 148
11.3 ISTQB的MBT大纲 149
11.3.1 基于模型测试的简介 149
11.3.2 基于模型测试的建模 149
11.3.3 测试用例设计的选择标准 150
11.3.4 MBT测试的实施与执行 150
11.3.5 评估和部署MBT的方法 151
参考文献 152
第12章 在组织内实施MBT 153
12.1 开始 154
12.1.1 识别改变的必要性 154
12.1.2 技术捍卫者 155
12.2 起步 155
12.2.1 候选的MBT产品 155
12.2.2 成功标准 156
12.2.3 试点项目 156
12.3 培训与教育 156
12.4 经验教训 157
12.4.1 物料 157
12.4.2 工具 159
12.4.3 使用工具的能力 159
参考文献 159
第13章 MBT测试工具供应商的信息 160
13.1 模板 160
13.2 单元级问题:保费计算问题 160
13.2.1 问题描述 160
13.2.2 问题模型 161
13.2.3 保费计算问题的程序代码(VB语言) 164
13.3 系统级问题:车库门控系统 165
13.3.1 问题描述 165
13.3.2 问题模型 165
13.3.3 车库门控系统的程序代码(VB语言) 167
第14章 Smartesting公司的Yest和CertifyIt工具 170
14.1 简介 170
14.1.1 产品架构 170
14.1.2 用户支持 171
14.2 使用Yest测试保费计算问题 171
14.3 使用CertifyIt测试车库门控系统 174
14.4 供应商的建议 180
参考文献 181
第15章 TestOptimal公司产品 182
15.1 简介 182
15.1.1 产品架构 183
15.1.2 TestOptimal产品套件 183
15.1.3 用户支持 184
15.2 保费计算问题的测试结果 184
15.3 车库门控系统的测试结果 185
15.4 供应商的建议 189
第16章 Conformiq公司产品 190
16.1 简介 190
16.1.1 产品特性 190
16.1.2 Conformiq 360°自动化测试套件 192
16.1.3 用户支持 193
16.2 保费计算问题的测试结果 193
16.2.1 Conformiq Creator的输入 194
16.2.2 生成的测试用例 195
16.2.3 测试覆盖率分析 198
16.3 车库门控系统的测试结果 203
16.3.1 输入图和QML文本文件 203
16.3.2 生成的测试用例 204
16.3.3 追踪矩阵 206
16.4 供应商的建议 208
参考文献 209
第17章 Elvior公司产品 210
17.1 简介 210
17.1.1 Elvior的TestCast工具集 210
17.1.2 相关的测试服务 211
17.2 保费计算问题的测试结果 211
17.2.1 被测系统建模 211
17.2.2 测试覆盖与测试生成 212
17.3 车库门控系统的测试结果 215
17.3.1 被测系统建模 215
17.3.2 测试覆盖与测试生成 215
17.4 供应商的建议 219
第18章 sepp.med公司产品 221
18.1 简介 221
18.1.1 sepp.med概述 221
18.1.2 MBTsuite概述 221
18.1.3 用户支持 222
18.2 保费计算问题的测试结果 222
18.2.1 问题输入 222
18.2.2 生成的测试用例 225
18.2.3 其他供应商提供的信息 229
18.3 车库门控系统的测试结果 229
18.3.1 问题输入 229
18.3.2 生成的测试用例 230
18.3.3 其他供应商提供的信息 234
18.4 供应商的建议 234
参考文献 235
第19章 国际验证系统公司产品 236
19.1 简介 236
19.1.1 RT-Tester工具箱 236
19.1.2 基于模型的测试组件RTT-MBT 238
19.2 案例分析:保费计算问题 242
19.3 案例分析:车库门控系统 244
19.4 供应商的建议 248
参考文献 250
第20章 开源的MBT工具 251
20.1 ModelJUnit 2.5 251
20.1.1 ModelJUnit 2.5 概述 251
20.1.2 利用ModelJUnit 2.5 测试车库门控系统 251
20.1.3 小结 254
20.2 Spec Explorer 254
20.2.1 Spec Explorer概述 254
20.2.2 Spec Explorer使用方法 254
20.2.3 小结 260
20.3 MISTA 261
20.3.1 MISTA概述 261
20.3.2 MISTA使用方法 262
20.3.3 小结 264
20.4 Auto Focus 3 264
20.4.1 Auto Focus 3概述 264
20.4.2 Auto Focus 3使用方法 265
20.4.3 小结 265
20.5 Graphwalker 266
20.5.1 Graphwalker概述 266
20.5.2 Graphwalker使用方法 266
20.5.3 小结 267
20.6 fMBT 267
20.6.1 fMBT概述 267
20.6.2 fMBT使用方法 268
20.6.3 小结 268
参考文献 268