Preface前言
为什么写这本书先讲两个故事吧。
一次我面试了一位有8年名企测试经验的候选者。面试中,我能感受到他对他现在做的业务很熟悉,但他熟悉的这些业务和他现在申请的职位中涉及的业务相差甚远,于是我就问了个问题:“如果我们有幸能够邀请到您加入我们的团队,您可以给我们团队带来些什么呢?”这位候选者竟然语塞——尽管他拥有8年的测试经验,但是除了业务知识,对测试本身,他却几乎没有任何思考和总结。一旦离开了熟悉的业务领域,他就又回到了“新人”的状态,之前的经验很难复用,需要重新积累。
不过这件事情更触动我的是在面试结束后和我一起面试的另一位面试官(这是一场“二对一”的面试)的话,她说她感到有点害怕,害怕8年后她也会陷入这位面试者这样的状况……第二个故事也是面试中的故事。一位有4年名企测试工作经验的候选者,已经开始在大公司里面做测试管理了。我们谈到了对测试技术的理解,他开始谈当前公司的流程,谈得很好。我接着他的话题,提了个问题:“您会在什么时候、从哪些角度去识别测试项目中的风险?以及如何处理这些风险?”这位候选者的答案是:“我们的风险就是项目延期,其他没有风险,流程上写得很清楚什么时候要识别风险,到了那个时候我们就把这个问题提出来,发邮件给大家,包括各个领导,请他们来解决。因为这个问题我们也解决不了。”显然,他一直在被所谓的厉害的“流程”牵着鼻子走,流程中蕴藏的测试理念、方法和实际工作已经无法落地了。
这两个故事,引出了一个值得我们思考的问题:什么是测试的核心?作为测试人员,掌握“业务知识”是必须的,但是“业务知识”并不能和“测试能力”画等号。“测试流程”或者说“测试管理”对测试来说很重要,但是否只要严格遵循它们就能做好测试了?如果上述答案是否定的,那么什么才是测试的核心?我们又该如何去积累沉淀这方面的技能?这就是我写这本书的初衷——想和大家来分享我对“测试核心”的思考,分享这其中的技术总结。
1.测试的核心是什么?我认为测试的核心不是业务、测试方法、测试设计、自动化、测试管理、测试流程等,而是“测试策略”。
我们该如何理解测试策略呢?测试策略通俗来说就是“测什么”和“怎么测”,大致包含了如下内容:
测试的对象和范围是什么?测试的目标是什么?测试的重点和难点是什么?测试的深度和广度如何?如何安排各种测试活动?(先测试什么,再测试什么)如何评价测试的效果?这就需要我们基于“产品的质量目标”,基于“风险”,在充分考虑“产品研发状况”的前提下来安排各种测试活动,在有限的时间里进行“刚刚好”的测试。这也正是本书想要讨论的主要内容。
2.这本书的价值是什么?本书讨论的主要内容是“测试策略”,虽然现在已经有很多优秀的测试类书籍,但是讨论测试策略方面的书籍却比较少,本书可以为读者在测试策略的制定上提供很有价值的参考。
本书也讨论了测试设计、测试方法、缺陷分析、质量评估等大家熟悉的测试技术,本书还使用了大量的篇幅来讨论如何在工作中使用这些技术,制定出如何适应实际情况的策略,来使测试更为有效。
另外本书还提供了一些有很强实用性的模型模板和checklist,读者可以直接在产品中使用。
本书的主要内容本书以“软件测试架构师”为线索,分为三个部分。
第一部分,瓶颈:软件测试工程师该如何进行职业规划。从当前软件测试行业的普遍困惑入手,对中国的软件测试行业、软件测试职业现状进行分析,给出软件测试的职业规划建议。特别指明了软件测试工程师在技术上的发展方向——软件测试架构师。为软件测试架构师画像,讨论作为软件测试架构师在测试过程中需要关注和不需要关注的内容。
第二部分,突破:向软件测试架构师的目标迈进。这部分又可以分为两部分,即软件测试架构师需要掌握的基本测试技术和软能力。
其中需要掌握的基本测试技术包括:
软件产品和质量模型测试类型测试方法测试设计探索式测试自动化测试软能力包括:
沟通和协商写好测试用例的技法第三部分,修炼:软件测试架构师的核心技能。在这一部分,我们首先介绍了与测试策略相关的技术:
四步测试策略制定法产品质量评估模型测试覆盖度评估测试过程评估缺陷分析技术风险分析技术分层测试技术然后具体讲解,如何运用这些测试策略编写技术和基本测试技术,包括我们的测试软技能,来制定总体测试策略、阶段测试策略;如何制定版本测试策略和对产品质量进行评估,以及在质量评估中发现问题时,该如何修正测试策略。
本书的核心思想中国软件测试行业整体起点较高,但对软件测试却普遍缺乏理解和认识。认为软件测试没有或者缺乏技术含量的居多,其中不乏领导或决策者。
软件测试在技术上可以向软件测试架构师发展,成为产品测试专家。软件测试架构师是产品测试的灵魂。
软件测试架构师需要像系统架构师一样理解产品的商业目标和用户的使用场景,要从整体上来把握测试节奏,为团队的关键测试活动(如测试设计、测试执行)提供辅导。要保证测试策略能够在整个团队中落地,而不是自己挽着袖子上。
软件产品质量模型是测试的基础。测试类型、测试方法都是在此基础上衍生出来的。
测试点不等于测试用例。测试点通过测试设计来得到测试用例。
软件测试架构师虽然是测试团队的技术官,但是也不应该忽视沟通协商和文档写作方面的能力。
测试策略是测试的核心。
测试应该基于质量目标、基于风险,围绕研发流程,通过分层来进行“刚刚好”的测试。
本书的独特之处目前已经有很多优秀的软件测试书籍,其中不乏精品,但是我发现这些书籍大多只是单方面地讲授软件测试理念和基础,或是单方面地讲授某种测试技术。本书则规避了这一点,并不单方面讲授理念或技术,而是通过“测试策略”把理念和技术串起来了,教大家该如何来确定测试目标,确定测试范围,确定测试深度和广度、重点和难点……你可以很容易将书中的内容运用到实际工作中去。
本书的另外一个特点是书中使用了5个高度概括模型:四步测试策略制定法、软件质量评估模型、四步测试设计制定法、测试方法车轮图和两份checklist(风险分析checklist和老功能分析checklist)。有了这套模型工具,我们就可以对软件测试工作进行系统思考了,这样有利于我们对自己的工作进行总结,突破“瓶颈”。
不同于一般的测试书籍,本书在行文安排和编写视角上也别具特色:从测试的职业发展规划入手,为软件测试架构师画像,为测试者指出测试技术上的奋斗方向;然后介绍软件测试架构师需要掌握的测试技术(除了我们熟悉的测试设计技术、缺陷分析技术外,本书还特别编写了沟通交流、文档编写等软技能);最后介绍如何使用这些技术来编写测试策略,在整个测试过程中需要设计、安排哪些测试活动以进行“刚刚好”的测试。可见本书并不是以技术为主线来编写的,而是围绕“软件测试架构师”,即“人”来展开的,我希望这样的设计能够让读者在阅读本书的时候感到更为生动和实用。
本书适合谁看本书比较适合有一定经验的软件测试工程师,以及希望在测试技术上有所发展的测试人员阅读。
当然,如果您是一位初涉测试的朋友,本书在测试职业规划方面的描述、测试技术方面的总结和叙述对您来说也会是不错的参考。
如何使用本书如果您是一位有一定测试经验的软件测试工程师,目前感到在测试技术或测试发展中出现了“天花板”,有些迷茫,那么本书就再适合您不过了。建议您不要跳过一些章节,而是按顺序阅读,相信本书一定能帮您答疑解惑,使您找到自己新的发展方向,而且本书也能帮您找到突破点并在测试领域能够有突破。
如果您已经是一位软件测试架构师,那么本书的第一部分,特别是第1章和第2章,建议您直接略过,推荐您重点阅读本书的第三部分。对于本书的第二部分,您可以选择感兴趣的章节参考阅读。
如果您是一位初涉测试的朋友,建议您重点阅读本书的第一部分和第二部分,参考阅读第三部分。
勘误和支持我由衷热爱自己所从事的职业——软件测试。很高兴我已经为此奋斗了10年,并很愿意再为此奋斗第2个10年、第3个10年……我写这本书的目的很简单,就是想分享我的经验、我的思考和我的总结。但由于我的水平有限,编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请各位读者批评指正。当然,如果您在阅读本书时有任何问题,也欢迎提出来,我将尽量为您提供最满意的解答。
致谢首先要感谢的是我工作时的第一位导师赵金明先生,谢谢赵先生将我带上了软件测试这条路。感谢我在软件测试之路上遇见的几位前辈,谢谢你们对我的指导和培养。还要感谢我的小伙伴、大伙伴们,谢谢你们对我的支持和帮助。
当然,我最要感谢的是我的妈妈、我的爱人和那些默默关怀我的人。在决定写这本书之前,我从来绝不会想到写书是一项如此艰难的工作,在我多次想放弃的时候,是你们让我变得勇敢、坚强,敢于坚持自己的理想,谢谢你们对我因为写作而无法陪伴你们的理解。
当然还有机械工业出版社的杨福川和孙海亮,感谢你们在我自己都快放弃的时候,还能对我不抛弃、不放弃,感谢杨福川策划对本书编写提供的非常专业的建议,感谢孙海亮编辑在我写作陷入困境时的悉心帮助和指导,真心地感谢!我唯有回馈努力、感恩和祝福!