羡慕之余,也有人请教我如何才能成长为一名测试专家?如何能成为一名测试顾问?这个问题我也思考过,就我个人的成长经历而言,简单点说,只五个字:“唯更努力尔”!要是复杂一点说,那就是:“你需要长期地、保持高度学习热情地、去探究一个个遇到的问题”。这样的例子在我16年的测试生涯中可以信手拈来举出很多,不过受篇幅所限,今天就只讲一个例子:关于“测试分析”的。《海盗派测试分析:MFQ&PPDCS》这本书不过是沿着“测试分析”这个点一路探究下来顺带产生的一个结果而已。
1. 更努力地-->思考和提问
2008年1月,我有幸参加了TorbjörnRyber的一个2天版的测试设计课程。再此之前,我对测试设计的认识仅仅是停留在7年测试工作经验积累的层面,从未刻意地练习过。
我在学生时代积累的好习惯:只要上课,就要认真听讲,积极思考,主动问问题。这个习惯,让我在Ryber的课堂上表现突出,记得Ryber带来2本他的著作《EssentialSoftware Test Design》,用于奖励优秀学员,其中一本就送给了我- 从此,这本书开启了我研究测试分析的新时代。

2. 更努力地-->阅读和练习
其实短短2天的培训不可能让你的技能突飞猛进,更多地只是开阔眼界,让你抓住几个点,以后可以顺藤摸瓜地深入下去,我深深地明白这个道理。
Ryber的课上做了很多测试设计的小练习,练习使用那些每个tester都耳熟能详的测试设计技术,什么等价类、边界值、因果图啊等等(真奇怪,之前我从未想过刻意地练习这些技术)。课程结束后,参加的学员在线上展开了热烈的讨论,有的说Ryber提出的4-step方法很好,比IPD流程轻盈;有的说这些技术不是什么新鲜的东西,也没有什么新意;有的侃侃而谈自己的感受;有的已经写好PPT,向自己部门的人转发转授去了。。。一、两个月后,这些讨论的声音渐歇渐息了,绝大部分人回归到原来的工作模式下,仿佛Ryber从未来过一般。
而我的大脑一直未停歇地在寻找2个问题的答案:
1)为什么这些测试设计技术在工作中很少使用?我们是否应该使用?
2) 课堂上的练习题目相比于实际工作中都过于简单,如何在实际项目中有效地应用这些成熟的测试设计技术?
我知道这两个问题都太大,得一步步来解决。正所谓“知己知彼,百战不殆”,首当其冲的是要掌握Ryber的测试设计理念。好在我手头已经有了Ryber的书,所以就开始了“更努力地阅读和练习”这个阶段:这本书我从头到尾仔细翻阅了两遍,并且认真地将书中的练习逐一做过。
随着学习的深入,越发感觉到分析建模的重要性(这些已存在很多年的测试设计技术都是可以帮助我们更好地建模的有效手段),这与我们通常所说的测试设计是不一样的,而平常大部分人都没有将测试分析与测试设计区分开来。于是上网查找测试分析与测试设计的关系,终于找到一、两篇类似观点的文章,这更加证实了我的观点。那么,我们工作中在测试设计暴露的各种问题又究竟与测试分析有多大关系呢?我想是时候对测试设计的问题现状做个全面的调查了。
3. 更努力地-->收集和整理
我主动请缨要求开始一项测试设计问题的调查工作。
选择一个真实的项目,开始了信息和材料的收集和整理的过程。这期间阅读了大量的项目文档、访谈了项目中的多个角色、从网上搜集所有测试设计相关的问题,最终整理出一份测试设计问题调查报告,其中从五个方面进行了阐述:测试设计原则、测试设计技术、测试用例管理、测试设计有效性、和测试设计度量。
虽然问题很多,但是最突出的那个问题却愈发明显地暴露出来:我们缺乏的不是测试技术、测试方法、测试工具,而是缺乏分析能力强的测试人员。
这样,准备工作已经差不多了,我迫不及待地想探求上面那两个问题的答案了。
4. 更努力地-->尝试和分析
最有效的找到答案的方式就是亲自上手实践。我选取了一个已经结束测试的项目特性,然后假设我负责这个特性的测试分析,该如何开展?
我找来所有能找到的各类文档,开始学习了解这个特性,包括需求文档、高层设计文档、底层设计文档、协议规范等,将整个特性分成四个可以单独对其测试的部分(后来被我称为单功能的M),针对每个部分分析建模得到一些测试场景,在此期间我还想到很多更复杂一些的测试场景(就是后来被我称为功能交互的F和非功能质量属性的Q),也顺便记录下来。我没有急着继续设计测试用例、也没有开展测试执行,而是拿着我设计的测试场景和项目已经完成的所有测试场景去比对,结果令我大吃一惊!
这个特性前后经过多个开发人员的测试、多个测试人员的各个level的测试,由于没有发现什么严重的问题,大家一致认为质量还可以,测试就关闭了。而我虽然仅仅做了一点测试分析,就发现了很多疑点和问题,并且发现我所分析出来的很多测试场景都没有被覆盖到,带着高度怀疑自己哪里搞错了的精神,我找到负责这个特性的开发人员和需求人员,和他们一一确认问题,最终却证明我的分析是对的,该特性的确暴露出比较严重的质量问题,大家只好重新修改代码、重新测试。
这次实验给我以足够的信心,至少对第一个问题有了更深入的认识,答案是肯定的,我们应该在实际工作中运用测试设计技术来进行分析建模。紧接着针对第二个问题:如何更有效地应用这些技术来开展测试分析?虽然上述的实验是成功了,可是我有多大程度上能够确保下次仍然可以有效地开展测试分析?我是否可以提炼出一些规律性的东西,以便于向更多人传递?换言之,测试分析的能力可以怎样来提升呢?看来实验还得继续。
我开始选取更多项目中真实的特性练习测试分析,有时针对一个被测单功能,我会使用多种测试设计技术来建模,然后比较他们的差别。我发现现有的测试书籍或文章都是在讲述一个个已有的测试设计技术:是什么、怎么用、配有一些简单的练习。这太理想化了,实际项目中,测试人员所面临的问题要复杂的多,于是我思考的问题也越来越多了:针对同一个单功能,是否存在一个更合适的Model开展测试分析呢?是什么因素决定选取哪个Model更合适呢?这里面是否存在着什么普遍性的规律可循呢?
几个月的摸索后,一种规律性的东西渐渐浮出水面:我发现,仔细观察的话,被测对象都是有一定主导特征的,而测试设计技术也各有其优势特征,一对齿轮啮合的场景就浮现在我脑中,只要这两个特征相吻合,齿轮不就可以正确啮合了吗?这就是后来提出的PPDCS的思想。

5. 更努力地-->实践和优化
MFQ&PPDCS的思想成型后,我开始在国内外的各种会议上分享,也组织一些培训。我想收集大家的反馈,不断优化它。不过几年的时间下来,收效甚微。我发现绝大部分听我分享的人都没有做到这份“更努力”-课上鲜有人“更努力地思考和提问”、课后鲜有人“更努力地阅读和练习”、更别提事后的“更努力地收集和整理”以及“更努力地尝试和分析”了。
不过,我还是发现了这个MFQ&PPDCS框架所缺失的一块:我找不到一个合适的方法教会别人如何将一个复杂的特性划分为多个可以独立开展测试分析的单功能。如果给我一个测试特性,我会轻松地划分出多个单功能来;但是如果问我“根据什么原则划分的?”,我会觉得没有什么原则,就是根据经验。这显然不是令人满意的答案,当然现在我已经知道,我根据的是一些我还不知名的启发式方法既Heuristics(注:熟悉敏捷的朋友可能要说,可以参考划分Story的思路啊,其实Story和单功能二者的目的不一样,一个是为了开发而划分、一个是为了测试而划分,思路只能作为借鉴,不能等同起来的)。
2013年1月,我报名了JamesBach的线上课程RTIOnline,James谈到的HeuristicTesting Strategy Model以及ProductCoverage Outline等概念给我以不小的启发,我预感到对这些概念的深入理解和刻意练习应该会有助于我找到一套如何有效划分单功能的方法。
2015年开始陆续做了很多的测试咨询(主要是coaching),当我coach一个tester时,我们一起完成一个真实的特性的测试分析工作。我立即发现,我的工作思路与所有与我结对的tester的思路存在着一个很大的不同:我总是先问出各种各样的问题来收集信息,而他们一上来就想立马开始测试设计。我意识到,我收集信息的目的就是为了后续划分单功能做准备的,我不会急于开展测试设计,而是从HighLevel到LowLevel的层层细化开展测试分析,最后才开始测试设计。于是,我给这种事先问出很多问题的做法起了两个名字:KnowYour Mission和TestingCoverage Outline,并把它们也融入MFQ&PPDCS这个框架体系中,这样我就可以有章法地Coach别人如何一步步地分析一个复杂的事物,如何有效地划分出单功能了。

6. 更努力地-->总结和提升
在深入的测试咨询中,我愈来愈感觉到测试人员思维和技能的重要性。
起初,我只是想把MFQ&PPDCS作为一个方法推广给更多的人,现在知道,这是很不成熟的想法。参加过培训和分享的人中,能真正将其应用起来的寥寥可数。
后来,在测试咨询中,才发现我和被coach的tester之间最大的区别不在于我懂MFQ&PPDCS而他们不懂,而在于我们所拥有的测试思维和测试技能的不同。比如问问题的技能、信息收集和整理的技能、记笔记的技能、沟通的技能等等。记得一家客户在coaching结束时,告诉我,其实我给他们公司带来的最大的改变不是引入了MFQ&PPDCS这个方法,而是很多tester的测试思维改变了,测试技能提升了。
这给我以很大的启发。我开始明确地以测试思维和测试技能为中心,开展我的测试培训和咨询工作。2016年我正式地提出海盗派测试的理念,就是希望人们重视测试中人的因素,重视测试思维和测试技能的培养,把测试当做一门匠艺。

MFQ&PPDCS在一年多的coaching中愈加完善了,也经受住了来自不同行业真实项目的考验,我终于十分地确信MFQ&PPDCS是一个对各个行业通用的测试分析框架,学习和运用MFQ&PPDCS的过程可以极大地帮助提升测试人员的测试思维和测试技能,2016年初的时候,我想有必要对MFQ&PPDCS进行系统的总结和梳理了,于是用时1年写书又做书,不过那已经是另外一个有趣而又令人难忘的故事了。
9年磨一剑,2017年1月,《海盗派测试分析:MFQ&PPDCS》终于由人民邮电出版社正式出版,不难理解,这本书注重实践应用而不是理论讲解,注重思维和技能而不是方法本身。
学习永无止境,这本书的诞生只代表着MFQ&PPDCS的一个阶段性的里程碑而已,总结和提升的路还很长远呢!