关于背景

学生时代
  • 高中:精力都放在魔兽3冰封王座上了,种族UD,全校第一。各个班级和周边网吧都挑战遍了。结果当然是不学无术的我高考失利,上了三流大学。
  • 大一:因为酷爱电脑游戏报了计算机系。大一期间同样不思进取,打了一年的魔兽世界,60年代,全服第三工会中第一DPS。
  • 大二:这一年幡然悔悟,痛定思痛,洗心革面,痛改前非,重新做人。花了一年时间把英语4级过了(底子太差。。。花了这么久)。
  • 大三:这一年学java,学校跟一个培训机构合作在学校办班。我跟一帮同学报名并组了个项目组,接接活,日子挺愉快。当时对编程入迷,好像当初玩魔兽一样入迷。现在想想是入对了行业了,放到其他行业我都不能这么上心。
  • 大四:通过培训机构来北京实习,但由于学校和培训机构的利益纠葛闹翻了,学校挡着不让来。通过别的方式很难找到实习机会,毕竟我们的学校说出去都没人听过。所以我们几个同学大晚上的跑到导员家里送礼,好歹换来了导员睁一只眼闭一只眼的结果。我们一行5人搭上了北京的火车来到了文思的贫民窟(我们的戏称,因为给实习生住的宿舍实在太破,跟贫民窟似的)。大四这一年就是打杂,跟测试没啥关系,好不容易求爷爷告奶奶的混进了项目组,也是做的微软的外包,做本地化测试,技术含量为0。

大学期间貌似挺失败,苦哈哈的大早上起来去图书馆学习,到头来学业也没啥起色,恋爱也没谈一个,实个习都这么波折。但我都认了,高中没好好学习,大学就得还债,我自己种下的因,就得吃自己得下的果。

入行

毕业后待在了文思做微软外包,之后辗转各个欧美外包项目,从手动测试到自动化,从c#到java。后来到了一家小的外包创业公司何易达, 是文思的一位高管出来成立的公司。给美国的一家叫ariba的公司做外包项目。头几年就这么在外包中混混度日了,欧美项目很清闲,老外没有加班文化,挺养人的,这几年干下来身体也没落下什么毛病。也就让我有时间去研究自己喜欢的东西。那几年技术上没什么进步,外包么,核心的东西不交给你做的。不过由于都在做欧美项目,所以见识涨了不少,我见识到了很多优秀的人,见识到了微软,google等巨头的工作方式,我现在很多自动化的理念是跟他们学的。同样借着出差的机会,公费旅游了很多地方。我见过了首尔地铁的四通八达,旧金山金门大桥的如梦如幻,几乎被印度人包围了的硅谷,牛在街道上横行无阻的班加罗尔,蓝天白云的加利福尼亚,洛杉矶球场中三分战术还在雏形状态的勇士vs快船。我知道了原来加州牛肉面真不是加州的。外国女人真的是不做月子的,程序员真的是可以干到60多岁的,真有城市别说雾霾就连大街上一层灰都没有的,在outlet里一麻袋一麻袋买奢侈品的真的全是中国大妈。再一个就是英语口语终于锻炼出来了,我这个英语4级水平的小垃圾终于一点点适应了印度人的叽里咕噜式的发音。记得一开始每次开会都是老大帮我翻译,只要是我跟客户开会老大都会跑来帮我。那时候挺感激他的,我把会议录音下来一遍一遍的听,实在听不懂了就去问老大。现在能看懂技术文档,多亏了那时候打的底子。所以虽然那几年虽然技术上没啥长进。但我也不后悔。

波折

事情发展的很戏剧化,本来我就这么在外包公司休闲的呆着,一人吃饱全家不饿。但是后来我恋爱了,甚至开始谈婚论嫁。 那时候突然压力倍增。在北京才1W多的工资,我实在是没什么底气。外包这行还没什么年终没什么福利,公积金和社保都是按北京最低收入缴的。所以那时候有点焦躁,虽然媳妇没说什么,她不太在乎我挣多少钱。但我也不想就这么混下去。 后来我联系上了同学,就是之前说的我们一行5人来北京闯荡中的一个。 他把我介绍到了一家互联网公司面试,也就是58到家,一家让我又爱又恨的公司。我爱它因为它带我进入了互联网,让我有机会实践自己在外企学到的东西,让我开发一个又一个的工具和框架。它给我犯错的机会,给我成长的时间,让我认识了很多优秀的人--58同城技术委员会的主席沈剑大哥还有他下面的基础架构团队,后来我有幸也到他手下干活,受益匪浅。那是一段爆发时期,天天以肉眼可见的速度成长。恨的是我也同样见到了测试这一行业的黑暗和堕落。政治斗争似乎就是这家公司测试团队的主旋律。我的直属上司想吃掉其他几位测试老大,为了她的位子整日勾心斗角,背后阴人,笼络人心,抢占地盘,打压下属。整日不事生产,到处刷存在感乱指挥。出事以后推卸责任,让小弟背锅。只是她野心虽有,情商实在有点低,格局实在有点小。加之其他的测试老大也不是省油的灯,互相见招拆招下,她倒是日渐式微,我临走的时候她手下只有2个人了。那段时间很快乐也很痛苦,快乐的是我正在飞速的成长着,痛苦的是这种工作氛围简直是在慢性自杀。天天都在跟自己顶头上司吵架的人物也就我了,貌似她气走了那两个测试架构师以后主要火力就由我承担。那是一种在跟白痴吵架的无力感。是一种完全是外行人物却在瞎指挥内行人的愤怒。手下的人没人服她,要技术没技术,要业务没业务,要管理也没管理,就连工资都比我们低。我们私底下讨论的时候一直不明白这么一个人怎么做到这样的位子的。58果然是一个神奇的地方。我热爱这个地方,这里也有我舍不得的人和事,但是这里的测试团队实在不是做事情的地方,我也是寄人篱下,人轻言微。多番努力无果后,我也就萌生了离职的想法。 后来她看我实在是不听话,慢慢就架空我了。我也就顺势找下家四处面试,在今年2月份拿了年终奖就离开了那里。

沉淀

离开58前在各个地方面试,拿了微店,美团,和第四范式的offer。其实跟第四范式的缘分也挺戏剧化的。本来再隔两天就要去入职了,后来在猎头的推荐下,冲着戴文渊的名字去试试。面试的时候就感觉这是一个能专心做事的地方,每个面试官都透露出技术人的强大功底,对我想在58推行的持续集成十分认同。最后跟戴神聊过之后,当场就决定来这了,戴神一点不拖泥带水,直接让我第二天来上班。HR速度也很快,下午面试,晚上发offer,一切都充满了效率的感觉。当时公司刚创业1年多点,头一年没有QA,都是开发自己测试,所以来这的时候测试几乎是一片空白,需要从0做到1,测试流程,基础服务和管理工具,接口自动化,UI自动化,docker环境部署自动化,持续集成等等。桩桩件件都是我自己一行代码一行代码,一篇文档一篇文档磊起来的。虽然看着工作比较多,但都非常顺利。开发团队十分配合,帮我推流程,帮我写脚本,耐心的给我讲解产品的每一处架构。有些东西不用我说,人家都懂。我深深的觉得跟优秀的人在一起共事是多么幸福,不用苦口婆心的说服别人持续集成的效果,自动化的便利,流程的规范,单测的重要。在他们心里,这些都是很自然的。这段时间像是打了鸡血的战斗鸡,即便是在家,有时间就打开电脑学习,工作。 因为身边的人都很优秀,不会的东西又太多。 人工智能这个方向很难,非常难。招人的时候最担心的是对方可能在这干一年都不知道这产品在干嘛。我花了很多时间在学习机器学习的概念和原理,可到如今也依然是门外汉。前段时间脉脉上有人提问哪有AI的培训机构。我们都会心一笑,这玩意要是能培训速成那我也就不那么痛苦了。现在团队中也只有4个QA,不过一切都往好的方向发展,很多东西不在再是0到1的过程。而是1到100的过程。这一年不再像在58的那段爆发期,一切显得平稳起来。这一年沉淀了很多,不再那么杂乱无章。 这一年也沉稳了很多,不再像以前那么毛躁。

关于分享

我以前只是个看客,看着别人的文章,别人的分享,别人的技术来充实我自己。今年5月份的时候突然就想写点什么,我也说不出来为什么,当时就突然有一种想写什么东西的欲望。可能因为那一点虚荣心,可能因为想装装逼,可能因为帮助别人后那一点点的成就感。 当时的动机我也说不清楚了,反正《测试开发之路》就这么诞生了,一直坚持到了现在。今天看着7个月来30多篇帖子,心里还是有点欣慰的。中间也有过波折,有过撕逼,有过不成熟。有人支持,有人反对,有人诋毁,有人谩骂。不过我也当做事成长了过程中必然的结果了。

关于测试

  • 最近这一年我越来越重视业务,回归业务,拥抱业务。直到现在我都是手动测试的一员。我们不区分手动测试和自动化测试,我们都是业务测试。让业务逼着我们优化工具,让业务逼着我们把自动化做的更好。
  • 最近这一年我越来越务实,不再追求华而不实的测试平台,不再追求貌似高大上的录制回放和关键字驱动框架。回归本质,一行一行的写代码。跟着我一起做自动化的人,必须是能写好代码的人。我不需要不堪一击,动不动就崩溃的自动化。 我需要的是稳定,高效,应变样样不俗的能加入到持续集成的自动化。因为我见过case规模成千上万的UI和接口自动化。到了这个数量级的时候我知道录制回放和关键字驱动是多么不堪一击,我知道这时候运行稳定和性能是多么重要。
  • 最近这一年我越来越从全局看事情。事分主次,低优的给高优让道,低风险的给高风险让道。不再一头扎进一个技术里不出来,不再遇事一头热的不管不顾。所以到现在我也没弄出多少花样来。UI自动化,接口自动化,环境管理自动化,持续集成自动化。除了这几样基本上没啥了,没有什么静态扫描,自动遍历,自动生成case,这个平台那个平台的。一方面是产品业务和架构原因,有些东西不一定是适合这个业务的。 还有就是他们都在排队呢。开玩笑,前面说的那几位大爷还没做成熟呢,哪有那个人力管你们。
  • 最近这一年我的技术情怀越来越少,不再是看到这个技术高大上就搞,那个技术逼格满满就做。只选择对当前业务最有用的那个,最适合当前团队的那个。人总得现实一点,有时候项目需要和技术情怀是对立的。我们想更有竞争力,所以想学这个技术,那个技术。可这个技术那个技术的可能不适合你的项目。可以业余时间自己学习,但在项目里乱用就是不负责任。

关于责任

两年以前我还只是个只管开发测试工具的普通工程师,既没业务压力,也不需要对团队负什么责任。而现在我整天想的是怎么减少人力成本,怎么提高产品质量,怎么设计团队发展路线。挣得钱变多了,责任也就越大了。有些时候眼界挺重要的,我也不得不说BAT出来的人确有过人之处。小公司和龙头企业的员工看到的东西,确实是不一样的。 而当你承担了责任以后就得做好它,每做一件事,每投入一个人力都得思前想后,这个投入是否值得,这个投入是否有产出,这个投入是否是当前阶段该做的。因为人就那么几个,用一个少一个。没人告诉你该怎么做了,而是你决定该怎么做了。所以我现在做每一件事都想着要有产出,有产出是对自己负责,对项目负责,也是对老大负责。没有产出是在作死,是在瞎搞。什么是瞎搞呢,在工程项目中偷偷玩实验性技术是瞎搞,技术情怀泛滥是瞎搞。想学习,想提升可以在业余时间学习,但在项目里乱搞就是不负责任了。我记得我现在的老大对我们说过一句话,意思是说大家来创业公司都是有点追求的,创业公司也是最能给你机会给你权利做一些事情的。所以珍惜你手上的权利,做每一个决定前要思考清楚,这是你的责任。现在我总能想起这句话来,时刻提醒自己,别再跟以前一样,生产出一些看似高大上实际上没什么卵用的东西。

关于自动化

这一年我做自动化越来越看重节省成本,越来越看重提升团队工程化。我之前就说过做自动化的时候先别老想着发现的bug多少。要先想着自动化能为你节省多少成本。我们说的自动化不只是自动化测试,我要自动化的东西很多。我总能看见有些项目的自动化处于很奇怪的状态。搞自动化之前需要这些人,这些天。搞了很久自动化以后还是这些人,这些天,甚至为了搞自动化还加了人。自动化的实力不济也导致了根本没法持续集成。这是很危险的状态,没尽好责任的状态。这里面的原因很多,有的是因为自动化质量不高,人为维护成本太高。有的是没分清楚主次,在低优先级的事情上搞上了,高优的投入不够,结果项目还是堆人的状态。 不管什么原因,这都是一个恶性循环--技术投入不够解决时间和人力成本--项目堆人加班--加班太多没时间做技术改进--技术投入不够解决时间和人力成本--项目堆人加班。一如之前所说,恶性循环,你更没时间去做自己喜欢的技术来改进项目质量。我们做自动化的主要责任之一是节省人力,这个没做好,就是没尽好责任。这个我要深深的反省,之前搞的那个破关键字驱动项目就是典范。我今年总结自动化的良性状态应该是这样的:投入技术成本--减少整体成本--空余出的成本投入其他技术项目--减少更多的成本--有更多的空余成本投入其他能提高产品质量的技术项目上--产品质量越来越好,良性循环。

关于提升

昨日跟我同学喝酒之时他又跟我讲了很多,就是介绍我去58的同学,点醒我的同学。他现在是一家公司的测试总监,之前创过业,做过CTO,总之能力比我强的多。一路上他对我帮助很多。昨日酒意正酣时,他跟我说如果你想再往上一步,除了保持技术以外,你要站在更高的角度看东西。你要告诉你的老大你们的团队该做什么,这个团队的问题在哪,质量保证体系怎么搭建,该招多少人,多少人投入自动化多少人做手动等等等等,如果让你的老大告诉你这些,那你就还差的远。所以2017年,我希望我能锻炼到告诉我的老大这些问题的答案。

关于转型

今年关注了很多与测试息息相关但没那么直接的事情,除了自动化测试,持续集成等等。我更多的关注了工程自动化,devops。我主动请缨接管了公司内所有产品环境的自动化部署和管理工作,从编译,出包,部署。根据开发,测试,产品,运维对环境不同的需求定制了一套基于docker的环境管理方案。我开始更多的实践devops,我们部署在客户场地内的产品版本和环境是不一样的。我们开始制作基于不同操作系统与产品版本的部署镜像与自动化测试方案,希望让开发人员在出事的时候一键搭建客户的产品版本和部署的系统环境,解决问题后迅速自动化测试并出包发送给进场人员。 总之这一年,我开始像devops进军。