作者:高翔,花名季哥
原文地址:http://blog.sina.com.cn/s/blog_6cf812be0102y1kt.html

很久没写文章了,之前测试十年,也是在自己有变化的时候 ,强迫自己写了一篇文章,说了自己的困惑和痛苦和思考,也得到一些共鸣,阅读破千,大家参考链接看看《测试十年 - 我难以逾越的困惑和痛苦和思考》。现在测试十二年了,相当于一个轮回,也有一些新的痛苦和感悟,趁还在这个圈子里面,纪念一下,当然了,YY 比较多,干货也不多,反正纪念下,或许我是真的不太可能写测试 15 年的文章了。大家有任何问题,欢迎讨论,欢迎吐槽。

其实写这篇文章之前,我一直是犹豫的,感觉写不出啥花样来,一是因为水平有限,另外就是因为测试这个圈子里面说不出啥新花样出来,还是老生常谈的那些,而且不同水平的读者想看的内容也不一样,很难写的深入人心,反正真的差点放弃了;但是我内心是渴望的,想说些那些不一样的,了解我的人都知道,我是不甘平庸的,是有自己的思考和底线的,很多时候可能被现实打败,但是我还会站起来,继续战斗。

——— 这 2 年我干了啥

我是一个很怀旧的人,简单说说这 2 年干啥了,这两年做天猫新零售的业务,这是一个新业务,大家应该理解新业务的背后的意义吧,我这里就不赘述了,团队成员都非常给力,拿到了不错的结果;其实大家都知道,测试在一个业务的发展过程中,自己能起到了哪些作用,不管这个业务是发展了多长时间,我们都是会经过三步走,很多时候我们就是在平衡这三步的比例和深度。

——— 国内测试都在关注什么

这个话题有点大,其实真的不敢写,但是无知者无畏,虽然在阿里干测试 9 年多了,比起” 阿里测试都在关注什么”,我觉得我更敢写这个,其实也有点心虚的。这些年,我一直专注在我们自己的业务和系统、测试问题,这些细节非常多,我们的目标和规划都围绕这个来,非常接地气;是的,说这个就说明我对国内测试在发生什么,在追求什么,其实对细节了解不多,但是在微博、在大会的主题、在相关的 ppt 和群讨论中,还是能感知到一些的,接下来就说说,很多理解不一定对和全面的,欢迎大家补充讨论。

在正式的说之前,大家回想我之前说的一句话,我们干测试的,很多时候就是在平衡这三步的比例和深度,在质量、效率、驱动业务上不断的调整策略和战术,根据不同的业务阶段、根据不同的目标、根据当前的大事件驱动等。
我们最怕干的是就是平衡,因为平衡的好,前途光明,平衡的不好,万丈深渊。大家都知道我们干测试的,杂活特别多,很多事情都需要投入一点,很多事情做起来很多人看来也没有亮点,那我们很多时候就是在不断的平衡一些事情,但是不管怎么样,我们的目标还是比较聚焦的,就是对应自己的业务和开发技术,以及未来的业务发展,在质量和效率上如何做的更好,成本上越来越低,解决方案也越来越有技术含量。

大家都知道,不同行业对应测试的要求是不一样的,那么测试技术和要解决的问题也是不一样的,但是有几个套路其实是差不多的,大体上分这几个方向。
基于模型的测试:这块领域很多人不太熟悉,而且在不同的行业的实践和效果是差异比较大的,但是不能否定这个方向带来的价值,在通讯、IOT、嵌入式等领域都有非常多的实践,效果也不错,我认为是测试前移比较重要的一块;但是很多人对于这块只是基本的了解,很多时候都有可能直接放弃;最后的结果,可能是我们的开发同学先开始业务建模,先开始各种模型抽象,提升开发效率,然后再到测试的模型和效率提升,很显然,我们是被动的,而且很多时候我们错过了一些风景,可能感知不到呢。

——— 国外测试在走什么方向

好了,我们的所有测试技术和方向的探索,国外基本上前几年都已经开搞了,有些领域可能领先十几年,有些大家都在同步探索阶段。我们需要更大视野去看国外测试技术和体系的发展,不仅仅是某个框架或工具的角度去看,甚至不是某个行业的测试解决方案来看。我们知道某一个技术的开始和发展,不仅仅是和企业的工程领域有关系,很多时候和学术领域有关;国外测试领域里面包括很多学派,它们分别代表了不同的测试领域的思考和沉淀,不仅仅是不同的测试类型,还包括很多测试理论上的思考,包括自动化测试学派、质量保障和规范学派、上下文驱动学派、开发测试学派等,每个学派都有自己主张的观点、方法、实践方案、工具体系等,而且每年都是有序的讨论和发展(有那种百家争鸣的感觉,在工程和学术领域同步开花结果);在这里,我们在看看一个很明显的区别点,国外的测试大会上和国内的测试大会上的 topci 就可以看到一些区别了。

这里面有一些共性的 topic 包括敏捷测试、Test in ops、性能测试、监控、安全测试、自动化测试、国际化本地化测试;但是国外的很多 topic 是强调测试本身的思考的,包括测试信息输入论、探索式测试、基于风险的测试、测试管理、测试策略和计划、某领域的测试设计方法。这里,很多人其实都看到了不同点,国内这方面的沉淀相对来说少很多,很多人都不感兴趣的,觉得都是理论的多,对我的技术没有帮助。

另外一个层面来看国外测试就是测试大师们,国内从事一线测试工作的工程师基本上 10 年以下的,10 年以上的基本上都是管理的、或者走其他路线了;持续在某个领域进行测试技术体现的研究在国内很难找到,但是也是有的(陈能技、朱老师、领测贺老师、CSATQB 周老师、阿尔卡特郑老师、顾问邰老师等等,这些老师很有可能和其他些人观点非常冲突,互相不被认可),整体上来看还是缺少很多的,大部分人对于测试生涯、测试价值、测试发展、测试方向都有一种悲观的预感。反看国外测试工作 10-20 几年的测试大师们非常多,他们在测试本身价值上进行了非常多的思考和沉淀,一点点形成自己的思考和理论,一点点去实践自己想要的测试方式和思路,感兴趣的同学可以去多看看国外的测试论坛,你肯定会看到不一样的测试理解的,好了,我也好久没看了,赶紧补课去(对绩效啥好处都没有,我真的要看?)。

——— 测试生涯还剩下什么

我们先讨论一个热门词语 “测试开发工程师”,大家可以思考下为什么不叫"开发测试工程师"呢?大家都知道的是未来开发测试是融为一体的,很多一些外企也做到了,开发测试的融合,互相 backup,互相对产品质量和稳定性负责,其乐融融的感觉。说实话,最近几年我对外企里面测试的理解不多,这里不敢多说,怕说错了;但是国内的测试里面,大家其实都能感觉到,那就是我们更多的在关注我们是不是会写自动化测试脚本,会写 java 代码,懂很多开发技术,做过很多平台或工具等。这里面的技能重要不重要,当然重要了,但是不是我们考察一个测试开发工程师唯一的思考点呢;我们的批判性思维、我们的打破砂锅问到底的精神、我们的错误猜测的思路、我们的细心专一的用心、我们的异常逻辑判断的方法、我们的流程优化的意识等等,这些我们到底有多关心呢,不好意思,不怎么关心,因为干了这么久,干了这么多,看不到产出、说不清投入、显不出能力。

我们再分析下,我们测试开发工程师要干的事情到底哪些呢,之前就是说过了,保障产品质量和提升研发效率,这两块我们的投入的比重呢,这两块我们看结果的思路呢,这两块我们要沉淀的方向和方法的抽象呢?这些说实话,大家看到的都很少,我自己也是一样。说直白了,未来测试工程师会越来越少,质量很多时候都是开发去负责、或者其他灰度监控手段去避免,那意味着我们在质量上的投入会越来越少,在效率上投入会越来越多,其中的道理大家都应该理解的吧。

当我们第一眼要追求的是效率问题时,我们更多的关心开发技术的提升,以及开发技术在解决效率问题时的应用,因为这些价值是显而易见的,是被高度认可的;我们打着效率提升的口号,似乎也能解决质量的问题,但是扪心自问,真的能解决吗?大家知道自己产品的用户是怎么用我们的产品的吗,我们的用户遇到了哪些问题吗,每天都暴了哪些线上 bug 给你吗,其实很多时候,我们都是不敢正视这些问题的,因为我们会被彻底打败,太丢人了啦。好了,我知道了,测试不可能测试全面的,那样成本也是非常高的,我们还是快速发布第一位的。因为我们不能真正的去面对这些线上 bug,所以大家有真正的去思考线上 bug 遗漏的真正原因吗,有多少是从测试设计角度去思考的,更多是从监控、fix 效率等角度来加强和避免。

当我们去加强测试工具的开发、测试平台的建设、监控平台的建设时,我们测试开发工程师还剩下什么?我们只能做这些事情吗?难道就因为这些能拿到好的绩效、能体现你的技术能力、能快速晋升?好了,不能说太多了,这里有可能会带来吐槽。其实我不反对这些事情的价值所在,我只是想想我们在干这些事情的时候,有没有去思考测试本身的核心定位,测试本身的经验教训到底是什么?

——— 六道轮回后的初心是什么

你猜对了,前面一大堆都是废话,现在才到正题,测试的目的和初心到底是什么,我们为什么要干这件事情,是用户需要我们干,是系统需要我们干,那我们干到什么程度呢,我们到底是做测试,还是做校验,还是做验证,还是做探索;每个人心中都有自己的理解,可能不一样,没关系,有一点你肯定无法否认,不管你是谁,你肯定是某个产品的用户,你都肯定遇到这些产品的 bug,你都可能是傻笑、生气、发飙、投诉、卸载、放弃等,然后没有了,没有了。

前面也是谈了非常多了,关于测试核心工作产出上,有不得不必须要干的、有可干可不干的、有非常想去干的、有老大们逼着去干的、有大家都在干的我也想干的;在这里,我想谈谈我个人认为的我们可能忽略的一些问题,大家听到测试技术或测试方法时,第一能想到的是什么呢?如果说到测试设计方法时,你第一能想到的又是什么呢?如果说到测试架构师,你第一能想到的又是什么呢?如果说到项目测试负责人,你第一能想到的又是什么呢?

建议大家先看看《google 测试分享-SET 和 TE》我们是测试开发工程师的 title,但是我们干的什么活呢,基本上把 SET 的工作和 TE 的工作合二为一,放在一个人的身上,大家其实也看到了 SET 和 TE 的技术和要求是不一样的,我们测试团队的测试开发工程师都能很好的具备 SET 和 TE 的能力吗,我们真正的测试工作的初心到底是什么呢?我们的测试开发工程师都能在产品的测试过程中发挥这么多的作用吗?在技术日新月异的时代里面,开发都在全栈了,测试也是该全栈了,不仅仅测试类型上,在不同的领域测试上也有这样的要求,但是这里面有一个基本的基石,那就是如何更好的去测试,去想到测试什么地方,去抓到那些隐藏的 bug,去识别到那些隐藏的风险。

好了,言归正传,通用的基石有那么几块,最核心的当然是使用什么方法去测试了,知道测试哪里了,所以测试设计是一切测试活动和技术的基础及前提; 同时,我们需要考虑需求文档不足下的测试设计怎么做? 我们还需要思考测试模型该怎么建立,而且测试模型分为测试方法模型和业务测试模型,所有设计都是基于模型的,我们也知道好的测试设计能提高测试执行效率,但是我们如何有一个好的测试设计呢。我们先从大家最熟悉的黑盒测试方法来说,大家都熟悉的等价类划分、边界值分析等测试方法,很多人都说一个正常的工程师 都能在一个下午学会和理解大部分的黑盒测试方法。 对此观点,我是不敢苟同的,这就讨论到这些黑盒测试方法的深度的问题了(这个话题之前就是打架无数了,最后我输了)。
(1)学会和理解测试方法的使用步骤是很简单的,但是真正的在项目需求中应用起来可不是一朝一夕的。这就好比给你一张扑克一样,高手就能拿它杀人,一般的人能做到什么程度呢。 这个也很像有些人能发现你不能发现的 bug 一样。至于原因有很多,具体看在淘两年的 blog。
(2)谈谈我自己的感想吧,我自己在工作前两年也是认为这个黑盒测试方法一下午就可以学会的,找几个例子试着使用下,感觉自己掌握到这些黑盒测试方法,但是后来我看过很多这些测试方法的背景以及应用的注意点后。我发现自己真的是了解了一些皮毛,没有深入的了解。对于个项目需求,如何快速且完整的应用这些黑盒测试方法设计出不多不少的测试用例,这个需要的经验的积累,也就是你测试价值的核心体现。
(3)多次和其他公司的测试同学交流,发现很多同学说自己都说自己是工作 2-3 年的人,已经遇到瓶颈了,感觉测试很单调和无味。我给的建议其实很简单,那就是真正的理解和掌握所有的黑盒测试方法。怎么来验证呢,我自己就是这样:给你一个白板,你能把所有测试方法的 5W2H(What、Why、When、Where、Who、How、How Much) 都能非常清晰明了的演讲出来,记住是不需要参考 ppt 或其他资料的情况下。
就像火影里面的鸣人一样,他只会螺旋丸这个核心的攻击忍术,但是在扩展其他忍术之前,他会把这个忍术的深度发挥到机制,从而研究出威力更强的超大螺旋丸、超大玉螺旋丸、风遁螺旋丸等等。

大家再想想,这些黑盒测试方法都是 20 年前国外的测试大师们发明的了,然而 20 年后的今天我们在学习测试方法的理论时还是这些,这是为什么呢?这里面有几方面的原因,一方面我们的测试同学很多是非科班毕业的,本身技术能力和逻辑能力相对来说薄弱,这样在测试生涯过程中更加无法变幻出更多的测试方法,另一方面,我们在各个行业领域内更多的关注效率问题,更多的关注如何快速的测试,而不是如何更正确的测试,所以我们都很难沉下心来来思考改领域内的一些通用的测试方法,从而能分享和传承给所有测试同仁;说我们不愿意去做,或者说我们没有意识去做,可能是乐观了,其实这个非常有难度,这个方法的抽象和建模非常的难(之前做过一些测试模型的抽象,感兴趣的可以了解下),不是在某个领域扎根多年的测试大师们无法做到的,前提还是这个大师在这块上有更多的思考和沉淀和总结。

——— 我们还能找回初心吗

好了,前面说了蛮多了,大家在现实面前还是需要现实一点,随着开发测试比例的提升,测试人员会更加专注在效率上,而不是质量上,我们都有一个美好的愿望,就是我们先把问题解决了,先把效率提升了,我们就有时间好好研究如何正确的测试 SUT 了,如何创新出新的测试方法了。理想很丰满,现实很骨感,就像需求列表里面一样,都是 P0 的需求,我们都在想 P0 需求做完了,下一期我们做 P1P2 的需求,然后你会发现 P0 的需求永远做不完,同理,我们的效率和问题解决也是做不完的,那我们的重心和目标规划还是在这上面,这有错吗?没有错,对 SUT 来说、对质量和效率来说、对业务发展来说、都没错。

当然很多人会说我测试效率提升了,质量也会同步的提升,这个仔细想想还真不一定哦;前面其实也提到了,我们在平衡质量和效率上的投入,到底平衡到什么程度,我们自己也不知道,很多时候为了功利、为了自己、为了未来、为了测试行业本身,我们做的选择可能有所不同,最关键是你做出了什么选择,你是如何平衡这些的,在这个平衡中,你学到了什么,你知道了测试这个产品有什么样的坑,你的测试经验教训到底有几条,哪些是对他人是有价值的,你有没有总结和抽象出。

回答问题,在这个现实世界里面,我们工作 10 几年的测试工程师们,我们还能找回初心吗,还能静下心来思考我们真的是正确的做测试吗?真的只有这样的一条路吗?我们还能有其他的路吗,对于绝大部分测试同仁来说,我们都无法找回初心,我们只能在这现实世界里面随波逐流,当然,很有可能包括我自己。

——— 忘记我所写的

感谢你能看到这里,看到了那么多的废话,那么从现在开始,忘记我所写的,继续写代码,继续开发测试平台,继续解决问题,你会成长的很快很多的。以上所有的观点都只是我的个人看法,很多地方说的容易被人挑战,被人骂 SB,是的,但是又有什么关系呢。

我思故我在,在此纪念测试十二年的酸甜苦辣。
下一个轮回,又是 12 年,很漫长,如果我不干测试了,我也会关注你们的。
青山不改,绿水长流。


↙↙↙阅读原文可查看相关链接,并与作者交流