本书主要面向测试经理并介绍在测试估算、测试策划、测试监视和测试控制中熟练运用高级技能所必须掌握的知识。通过本书,读者将会学到如何制定测试系统的总体测试目标和测试策略。
本书通过大量实际应用的例子,介绍了对测试任务进行计划、进度安排以及对测试任务跟踪的丰富经验。学完本书之后,您将能够描述和组织必须的活动,学会如何挑选、获取、分配测试任务所需要的充分的资源。学会如何组建、管理和领导测试团队,负责协调测试团队各成员之间以及测试团队和各利益相关者之间的沟通。另外,您还将学到如何证明决定的正确性并提供充分而合适的报告信息。本书的目标读者对象为软件测试人员、程序员、系统设计人员、信息技术经理。
Rex Black先生在软件工程和系统工程领域有超过25年的从业经验,他是RBCS(www.rbcs-us.com)的总裁,也是软件、硬件和系统测试的领军人物。经过十多年的发展,RBCS的服务覆盖了咨询、外包、软件/硬件测试培训等多个领域。RBCS拥有一批业界最有经验和知名度的顾问,帮助其客户开展产品测试,组建测试团队,提高其测试水平,同时为全球范围内的数百个客户提供测试人力资源。RBCS服务的对象不仅有《财富》20强企业,也有一些刚起步的公司,它帮助客户通过改善产品开发的过程,节省时间和金钱,减少在技术支持上的投入,提高公司的信誉度等。
作为RBCS的领导者,Rex是当今在软件测试领域最多产的作者,他最受欢迎的一本书“Managing the Testing Process”在全球售出超过30 000本,并发行了日语、汉语和印度语的译本。他的另外3本与测试相关的著作“Critical Testing Processes”、“Foundations of Software Testing”和“Pragmatic Software Testing”,也售出了数万册影印本,包括希伯来语、印度语、汉语、日语和俄语版本。他撰写了超过25篇测试领域相关的文章,出席了数百个专业论文的讲习班和研讨会,并在全球各大会议和活动中发表专题演讲约30多次。与此同时,Rex还兼任了ISTQB(国际软件测试认证委员会)的主席和ASTQB(美国软件测试认证协会)的理事。
如果想把所有曾在我测试职业生涯中给过我帮助的人士一一列举出来,恐怕我需要另外写一本书了。在此我只能列举那些对我创作本书具有直接影响的人士并向他们致谢。
首先,我想向我在美国软件测试认证委员会和国际软件测试认证委员会的同事致谢,尤其是和我一起在高级大纲工作组中工作的同事。正是有了他们的努力,本书才得以成型。令我倍感荣幸的是,我不仅与本书的各位参与者分享和学习了彼此在测试方面的见解与观点,还连续两届兼任了美国软件测试认证委员会主席,国际软件测试认证委员会主席两项职务。在即将卸任国际软件测试认证委员会主席一职之时,我为我们在软件测试领域所获得的成就感到自豪,我将怀着同样的自豪期待我们能在将来共同创造出更大的辉煌。同时我也期待通过本书对我们在软件测试领域共同做出的贡献恰当地表达我的致意与致敬。
其次,我想向那些为本书提供素材的人们致谢。本书中包含的素材,以及高级软件测试分析师指导书、教程和高级软件测试分析师在线教程,都经过他们的反复地校订,几经推敲和完善。他们是José Mata、Judy McKay、Jamie Mitchell、Paul Jorgensen和Pat Masters。
一旦本书中所需的素材创作出来,整理这些素材的各种初稿包括手稿、幻灯片、大纲并形成本书架构草案的工作就落在了Dena Pauletti的身上。她是RBCS相当出色和严谨的技术主管,没有她及时且不懈的协助,完成本书恐怕需要延迟数月时间。
当然,没有基础, 尤其是ISTQB基础级大纲,就不可能有高级测试认证大纲。我很荣幸也曾是基础级大纲工作组的一员,我感谢他们这么多年来出色的工作,正是他们建立的坚实基础,才有了今天的高级大纲,有了本书的出现。
在本书的教程和本书素材创作过程中,我运用了我自己从事“作者”、“测试人员”、“顾问”和“讲师”时积累的经验,因此令我受益的人不计其数,很难一一列出。我感谢那些买过我其他书籍的读者,感谢你们对我作为“作家”这一角色的鼓励。我感谢那些曾经跟我一起工作的项目组成员,正因为有了你们,我才有机会不断提升自己,成为一个合格的测试经理、测试分析师、测试技术分析师。我感谢那些曾经聘请我做顾问,与我共事的人们,
是你们给我机会从你们各自的公司学到更多的经验和知识。我还要感谢那些曾经听过我讲课的学员们,你们教会我的远比我教给你们的多得多。感谢读者、感谢我的同事、客户和学生们,希望我所尽的微薄之力能表达我对你们无尽的感激。
在过去的十多年间,我经营着一家提供软件测试的服务公司——RBCS。现在这家公司已经从一个简陋的小公司,成长为一个国际化的集咨询、培训和外包等多种服务于一体的公司,拥有的客户遍布六大洲。这不可能只是我个人努力的结果,推动力来自于我们一百多名雇员、次级承包商和业务合作伙伴。我感谢你们为客户所做的辛勤工作,没有RBCS的成功,我将很有可能没有精力和财力写这些技术相关书籍,因为这些书,能给我带来自豪感,却无法给我带来巨大的财富。在此,我再次向你们表示无尽的感激,正是我们共同的努力,才有了今天的成就。
最后,我要感谢我的家人,尤其是我的妻子Laurel和我的两个女儿Emma和Charlotte。经营一家国际化的软件测试服务公司意味着我的日程总是排得很满,很少有时间可以和我的家人在一起,而我永无止境的写作习惯更是使得这时间少之又少。Laurel、Emma、Charlotte,我想告诉你们知道的是,我知道我永远都无法偿还你们给予我的一切,但是我对你们每个人的爱,远多于我们共享的时光。
本书基于ISTQB高级大纲的2007版本,同时也参考了ISTQB基础大纲的2007版本。它使用了ISTQB词汇表2.0版本的专门术语定义。这3个文档的版权归ISTQB所有,未经ISTQB许可不得使用。
作为软件工程师,我从事软件测试行业已经超过25年。当我还是个程序员的时候,我就学习如何对自己开发的代码进行组件测试。20年前当我成为一名专业的测试人员之后,我不仅测试自己的代码,也要测试其他人的。
我在20世纪80年代获得了加州大学洛杉矶分校的软件工程学位,这是一所享誉全球的一流大学。但是,我在那里学到的测试知识非常有限。所以当我成为一名专业测试人员的时候,我只好通过阅读书籍和积累项目经验来自学并掌握必需的技能。
在20世纪80年代,软件测试只是软件工程领域刚刚兴起的一个独立分支。因此在高等学府甚至一流大学都没有提供软件测试相关的教育课程,那也就不足为奇了。
不幸的是,在这此后的20年,大学和学院中关于软件测试的教育都没有获得很大的改善。一些私营公司提供的软件测试培训,包括我自己的公司RBCS,帮助填补了市场空白。但是,测试人员获得的培训通常都是断断续续的,没有对特定方面进行连续的培训。因此,许多软件测试的从业者还是通过自学或者非系统学习方法来帮助自己理解整个测试领域。这样造成了很多的测试从业者甚至连软件测试的基础和高级的概念都搞不清楚。
国际软件测试认证委员会(ISTQB)通过定义一组大纲(或者知识体系,如果您喜欢这么理解的话)来指导从业者在其通往软件测试专家的职业发展道路上应当掌握哪些相应的内容。我曾经担任国际软件测试认证委员会和美国软件测试认证委员会,我也曾就职于ISTQB基础级工作小组和高级工作小组制定这些大纲。
之前我曾经和Isabel Evans、Dorothy Graham、Erik van Veenendaal,合著过一本书,叫做“Foundations of Software Testing”,书中介绍了软件测试基础级大纲。
本书中讨论的软件测试高级内容是针对测试经理的。这里,我会讲述测试从业者在职业生涯中达到软件测试高级水平所要掌握并应用的一些概念。我希望通过阅读本书,你们会觉得在理解和应用这些概念的时候更加得心应手。在未来的20年里,在我从这个领域退休之前,我希望提高人们对软件测试零散、片面的初步理解,而使其成为一门真正受人尊敬的专业性行业。我希望这本书可以帮助你们成为这些受人尊敬的测试从业者中的一员。
这是一本针对测试经理的高级软件测试的书籍。因此在书中我阐述的观点是那些选择管理软件测试作为职业的软件从业者应当掌握的内容。本书着重讲述了和测试分析、测试设计、测试执行和测试结果评估相关的技能和技术。我会假设您了解测试工程、测试设计、测试工具、软件开发生命周期和测试管理的基本概念,并且您已经准备深入了解并将其运用到作为测试专家的日常工作中。
本书遵循国际软件测试认证委员会(ISTQB)的高级大纲,侧重于与高级测试经理认证相关的材料和学习目标。本书可以帮助您准备ISTQB高级测试经理的认证考试。您也可以用本书自己复习准备认证考试或者作为在线学习以及指导课程的一部分。如果您要参加ISTQB官方认证的高级测试经理培训课程,那么这本书是该课程很好的辅助材料。
不过,就算对ISTQB认证考试不感兴趣,您也会发现这本书可以提高您的软件测试工作水平。如果您是一名测试经理、测试总监、测试分析师、技术测试分析师、自动化测试工程师、手动测试工程师、程序员,或者就职于任何一个需要对软件测试管理深刻理解的领域,本书都是非常有用的。
本书侧重于测试管理。共包括11章,主要内容如下:
1. 软件测试基础。
2. 测试过程。
3. 测试管理。
4. 测试技术。
5. 软件特性测试。
6. 评审。
7. 事件(缺陷)管理。
8. 标准和测试过程改进。
9. 测试工具和测试自动化。
10. 人员技能(团队构成)。
11. 认证考试准备。
由于本书结构基于ISTQB高级大纲,因此本书对测试经理角色相关的一些章节进行了详细讲述,而对于有些只需要简单了解的内容则快速带过。例如,我们在本书中详细介绍了测试管理,因为这是测试经理需要掌握的
核心内容,而对于测试技术我们花费的时间则相对较少。
如果您也读过本书的卷1,您就会发现有些相似章节的描述同样详尽,但是却各有各的侧重点。例如,测试分析师需要掌握相当多的事件管理技能。由于测试分析师需要花费大量时间以生成事件报告,所以您需要知道如何做好它。测试经理也需要掌握事件管理技能,但是他们侧重于如何推进这些事件,从最初的报告到最终的解决,在事件生命周期中始终不断地推进,并且要掌握如何从这些事件报告中分析并收集度量元。
测试经理应当做些什么工作呢?或者换一种问法,在读完本书后,您能够学到什么,或者如何学习做得更好?
* 定义被测试系统的总体测试目标和策略。
* 计划、制定进度表,以及跟踪任务。
* 描述和组织必要的活动。
* 选择、获得并分配充足的资源,以保证任务顺利。
* 选择、组建和领导测试团队。
* 建立测试团队各成员、各测试团队和其他利益相关者之间的有效沟通。
* 证明决定的正确性,并提供充分而合适的报告信息。
本书侧重于讲解这些主要的概念。在学习后续各章节的内容时,请记住这个概要中罗列的高级软件测试的目标。
在撰写本书以及关于高级测试分析的姊妹篇时,我一直牢记一个很重要的宗旨,如何使这些学习资料对您有用。如果您正在使用本书准备ISTQB高级软件测试经理的认证考试,那么建议您先阅读本书的第11章,然后再依次阅读其他的10章,如果您并没有打算参加该考试,而只是希望通过学习本书拓展您关于测试的整体把握,那么建议您只阅读本书的1~10章即可。当然如果您只是想将此书作为一本参考书,那么仅仅阅读那些您感兴趣的章节吧!
前10章中的每一章将会被分为若干个小节。大部分的划分方式沿用了ISTQB高级大纲中的结构组织,但是有一些子章节的划分与大纲不尽相同。您会发现每个章节的开始都会有描述本章节的学习目标。如果您有兴趣知道每个学习目标前面K2、K3、K4这些标注,以及ISTQB大纲中学习目标的组织与含义,请阅读第11章。
在很多方面,软件测试与弹钢琴、烹饪、开车很相似。为什么?因为无论以上何种活动,您都需要先通过阅读书籍学习相关知识,但直到实际操作之前,这些知识都所用甚微。所以我在关键的概念中加入了很多实际、实用的练习。我鼓励您通过本书练习去实践所学的概念,并将这些理念融会贯通到自己主持或参与的测试项目中去。成为高级软件测试管理专家的唯一方法就是要实实在在地管理软件测试。