作者简介
The Craft of Model-Based Testing
Paul C. Jorgensen博士从事电话交换系统软件开发工作20年,这是他的第一份职业。他于1986年开始了大学教学工作,先在位于亚利桑那州坦佩市的亚利桑那州立大学教授研究生的软件工程课程,后于1988年在位于密歇根州阿伦达尔的大峡谷州立大学担任正教授。在从事学术工作之余,他还短暂从事过“软件范型”的咨询业务。他曾服务于数据系统语言会议(CODASYL)、计算机协会(ACM)、电气和电子工程师协会(IEEE)标准委员会。2012年,他所在大学以“杰出学科贡献奖”表彰了他这一生的成就。
除了他的软件测试书籍《Software Testing: A Craftsman’s Approach》(第4版)之外,他还是《Modeling Software Behavior: A Craftsman’s Approach》一书的作者,以及《Mathematics for Data Processing》(McGraw-Hill,1970)一书和《Structured Methods—Merging Models, Techniques, and CASE》(McGraw-Hill, 1993)一书的合著者。*近,Jorgensen博士参与了国际软件测试评定委员会(ISTQB)的工作,他与人合作编写了相关工作的高级教学大纲,并担任了ISTQB术语工作组的副主席。他是ISTQB“基于模型的测试”教学大纲的审阅者。作者简介
The Craft of Model-Based Testing
Paul C. Jorgensen博士从事电话交换系统软件开发工作20年,这是他的第一份职业。他于1986年开始了大学教学工作,先在位于亚利桑那州坦佩市的亚利桑那州立大学教授研究生的软件工程课程,后于1988年在位于密歇根州阿伦达尔的大峡谷州立大学担任正教授。在从事学术工作之余,他还短暂从事过“软件范型”的咨询业务。他曾服务于数据系统语言会议(CODASYL)、计算机协会(ACM)、电气和电子工程师协会(IEEE)标准委员会。2012年,他所在大学以“杰出学科贡献奖”表彰了他这一生的成就。
除了他的软件测试书籍《Software Testing: A Craftsman’s Approach》(第4版)之外,他还是《Modeling Software Behavior: A Craftsman’s Approach》一书的作者,以及《Mathematics for Data Processing》(McGraw-Hill,1970)一书和《Structured Methods—Merging Models, Techniques, and CASE》(McGraw-Hill, 1993)一书的合著者。*近,Jorgensen博士参与了国际软件测试评定委员会(ISTQB)的工作,他与人合作编写了相关工作的高级教学大纲,并担任了ISTQB术语工作组的副主席。他是ISTQB“基于模型的测试”教学大纲的审阅者。
在意大利生活和工作的三年,使他成为一个坚定的“Italophile”(喜爱意大利的人)。他和妻子Carol以及女儿Kirsten和Katia曾多次访问那里的朋友。自2000年以来,Paul和Carol每年夏天都会在南达科他州Pine Ridge保护区的Porcupine学校做志愿者。他的大学电子邮件地址是jorgensp@gvsu.edu,他在2017年夏天成为荣誉退休教授,也可以通过pauljorgensen42@gmail.com联系他。
前 言
The Craft of Model-Based Testing
首先是免责声明:我所使用的“工匠”和“工匠精神”这两个词是完全中性的,无意冒犯任何人。我相信,基于模型的测试(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
密歇根州,罗克福德