基于模型的测试:一个软件工艺师的方法
作者 : [美]保罗·C. 乔根森(Paul C. Jorgensen) 著
译者 : 王轶辰 王轶昆 曹志钦 译
丛书名 : 计算机科学丛书
出版日期 : 2019-06-26
ISBN : 978-7-111-62898-9
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 280
开本 : 16
原书名 : The Craft of Model-Based Testing
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书第一部分讲解相关理论,帮助测试人员形成概念并培养判断能力。首先简要介绍什么是基于模型的测试(MBT),然后分别用9个章节介绍了9种不同的测试模型。这些章节是通过两个例子联系在一起的:一个简单的保险费计算系统,一个描述车库门控制器的事件驱动系统。每一章都详细描述了模型如何应用于MBT。本书的第二部分强调实践,使测试人员对MBT工具有更深入的了解。讨论了6个商业MBT产品,展示了每个产品的显著特点,并演示了在保险费和车库门控制器实例中如何使用这些产品。这些章节的结尾都给出了在组织中实施MBT的建议,最后一章还介绍了六种开源工具。

图书特色

图书前言

首先是免责声明:我所使用的“工匠”和“工匠精神”这两个词是完全中性的,无意冒犯任何人。我相信,基于模型的测试(MBT)技术能够成为也应该成为一门手艺,而非艺术。工匠精神包含3个关键部分:对物料的深入理解,选择合适工具的能力,以及使用这些工具的经验。工具与手艺之间的关系是很有趣的,一个工匠就算使用很破旧的工具也能做出让人满意的产品,但一个新手就算使用精妙的工具也制作不出好产品。对于MBT这门手艺来说,这一点尤其如此。
除了软件测试之外,我个人最喜欢的手艺是木工活。作为一门手艺来说,木工需要了解物料,也就是木头。不同的木头有不同的特质,了解这些特质的木工才能做出正确的选择。枫木非常坚硬,需要非常锋利的工具;松木则很软,而且很容易塑型。我最喜欢的木头是樱桃木,它虽然不像枫木或者橡木那样坚硬,但是它有非常漂亮的花纹,而且好用。工具部分就更明显了。拿手锯来说吧,一个工匠可以有横切锯和粗木锯,有镶边手锯、轴锯箱、钢丝锯,也许还有些特制的日本锯用来进行更精细的切割。每一样工具都有某一种特殊的用途,没有一把锯能够符合所有的要求。但仅有工具是远远不够的。未来的工匠必须知道如何使用这些工具来达到自己的目的。此时经验就发挥作用了。在我看来,也许史上练就手艺的最好方法是学徒制,包括学徒期和熟练工时期,最终是大师级的工匠。整个学徒过程的核心是,在成为一个公认的、值得信赖的工匠之前,一个人必须经过长期的、受督导的学习历程。
上述内容与MBT有何关系呢?MBT中,类似工匠的角色有哪些呢?物料,也就是被测软件或者被测系统。它们简单的区别在于,软件可能是转换类型的或者交互类型的。类型不同将影响如何选择合适的MBT工具。
MBT工具包括用于描述软件的模型,在书中第一部分会涵盖这些内容。能够生成并且可能运行从模型派生出来的测试用例的商用或开源产品,会在第二部分介绍。第一部分首先简单介绍一些基本知识,第2~10章则分别讲解了9个模型,它们有不同的复杂度和表现力。有些非常有名,比如流程图和决策表。我们特别关注有限状态机,因为大多数的商用工具或者开源工具对其支持力度最大。第二部分展示了6个商用的MBT产品,最后一章简单描述了6个开源的MBT工具。
写作本书最大的挑战是如何传授经验。有两个贯穿全书的例子,保费计算问题是一个转换型应用的例子,车库门控系统是一个交互型应用(事件驱动)的例子。在第2~10章,我们用教学的方式对这两个问题予以建模。之后把这两个例子交给了6个商用工具,看看这些产品是如何支持这两个贯穿全书的例子的。所有MBT社区都承认,MBT的成功在很大程度上取决于被测系统的建模好坏。因此第2~10章非常重要。
我父亲是一位工具和骰子制造商,他的父亲和祖父是丹麦的橱柜制造商。我外公是一位画家,我妻子是一位出色的厨师。我的家庭成员都将各自的才能作为手艺,并以各自的工作为荣。我相信,这种自豪感能够将普通的工作升华为手艺。我希望读者能够使用本书所展现的内容成为一个MBT的手艺人。

Paul C. Jorgensen
密歇根州,罗克福德

上架指导

计算机\软件测试

封底文字

本书是知名的“Craftsman”系列软件测试书籍中的新作,主要讨论基于模型的测试(MBT)技术。作为一门手艺而非艺术,其关键在于:对被测软件或系统的理解,选择合适工具的能力,以及使用这些工具的经验。围绕这三个方面,书中不仅综合阐述了MBT的理论知识及工具,而且分享了作者的实战经验。

本书共两个部分:第一部分讲解理论知识,介绍了9种不同的测试模型,包括流程图、决策表、有限状态机、Petri网和UML等;第二部分关注工具及实践,介绍了6个商用的MBT产品和6个开源的MBT工具,包括Yest、CertifyIt、TestOptimal和ModelJUnit 2.5等。书中设计了两个贯穿各章的例子,一个简单的保费计算系统,一个事件驱动的车库门控系统,以帮助读者深入理解建模过程和工具的应用技巧。

作者简介

[美]保罗·C. 乔根森(Paul C. Jorgensen) 著:---作者简介---
保罗·C. 乔根森(Paul C.Jorgensen) 软件工程领域的知名学者,大峡谷州立大学荣誉退休教授,在软件产业界和教育界拥有50多年的从业经验。在职业生涯的前20年中,他主要从事工业软件开发和管理工作。1986年以来,他一直在大学为研究生讲授软件工程课程并进行相关研究。他著有《Software Testing:A Craftsman''s Approach》和《Modeling Software Behavior:A Craftsman''s Approach》等书籍,在程序员中影响甚广。

---译者简介---
王轶辰 北京航空航天大学可靠性与系统工程学院副教授,硕士研究生导师,主要研究方向为软件可靠性技术与软件验证技术,曾获得国防科技进步一等奖。

王轶昆 计算机专业硕士,具有ISTQB的TA、TTA、TM证书,担任中国软件测试认证委员会测试自动化专业组组长、安全性测试专业组专家、汽车软件测试和质量保障组专家。

曹志钦 北京航空航天大学可靠性与系统工程学院硕士研究生,研究方向为软件可靠性与软件测试技术。

译者序

在艺术领域,每个亟待成名的人都希望自己能掌握“golden touch”(点金术),因为一旦有了这种本领,成功是迟早的事。但是在工程界,尤其是软件行业,我们连silver bullet(银弹)都没有,只有“一万小时定律”。
本书的作者Paul C. Jorgensen是软件工程界的名人,相信很多软件测试的从业者都曾经读过他的著作《Software Testing: A Craftsman’s Approach》。我们把编程人员称为码农,Jorgensen将软件测试工程师称为匠人,两者并无本质区别。作为译者,我们是在中国从事软件测试研究和工程实践超过20年的匠人,其中一位是曾经的码农,在软件行业已经浸淫超过三万小时。
在翻译此书之前,我们一直在思考一个问题:基于模型的测试(MBT)这种理论性极强并且基本上还处于象牙塔里的技术,是如何撑起20章的?如何把带有泳道概念的Petri网,运用到软件测试项目当中呢?带着这样的疑问,我们开启了“边学习边翻译”的历程。
翻译这本书的时间远远超过了预期。并不是我们不能很好地将英文转换成中文,我们也不是拖延症患者,而是因为翻译这本书是一个非常赏心悦目的过程,让我们不由得放慢了脚步。
本书的前10章详细介绍了基于模型的测试的基本理论和方法,深入浅出,层层递进。阅读和翻译的过程,就好像跟随一位经验丰富的老师上了一学期带有实践的MBT课程。书中配备着表格和图的案例分析,能让MBT小白在短时间内了解MBT的前生今世。而本书的后10章则详细介绍了具有代表性的、支持MBT的商业工具和开源工具,读者可以按照前10章给出的各项MBT技术,在后10章寻找对应的工具。因此,不管是新手,还是已经在软件测试行业摸爬滚打多年的老将,都能从本书中有所收获。作为译者,我们力求使用“行话”而非绝对正确的“原话”来表达书中的技术内容。对于有些术语,我们加上了英文标注,一方面便于读者理解,另一方面读者也能够使用原文做进一步的查阅。
MBT有很多毋庸置疑的优势,但它不是软件测试的银弹。学会了MBT,也绝不是掌握了点金术。这本书带给我们的最大启发恰恰是“匠人”这两个字。本书作者以做木匠活为例,说明了在完成一件作品的过程中工具不是关键,了解物料本身的特质,因材施法,才是匠人的本领。
希望本书能够让读者在成为软件测试匠人的路上知己知彼,少走弯路。

图书目录

出版者的话
译者序
前言
致谢
作者简介
第一部分 基于模型测试的模型理论
第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
第二部分 基于模型测试的实践
第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

教学资源推荐
作者: [美]布莱恩· W.克尼汉(Brian W. Kernighan),丹尼斯· M.里奇(Dennis M.Ritchie) 著
作者: [美] 基普·R.欧文(Kip R.Irvine) 著
作者: (美)Delores M. Etter; Jeanine A. Ingber 著
参考读物推荐
作者: 【美】米兰·斯特瓦诺维奇(Milan Stevanovic) 著
作者: 白鉴聪 潘军锋 罗剑波
作者: 吴仲治 编著
作者: 黎跃春 韩小东 付金亮 编著