职业经验 测试开发之路 -- 每一次发布都是一次成长

孙高飞 · 2018年07月01日 · 最后由 孙高飞 回复于 2019年10月28日 · 4505 次阅读

前言

经过了数月奋斗的 ProphetEE 项目终于在昨晚 7 点宣布发版。 之后大家要么组团去看世界杯,去狂欢。 要么就跟我和我老大一样,回家睡觉。 昨夜睡的昏天暗地,一睁眼睛上午 11 点,舒爽到每一根汗毛都伸展着。感觉已经好久没有这么任性过了。 打开手机发现女王大人炸了锅,赶火车要晚点了,于是赶紧收拾东西奔赴火车站。 是的, 项目忙完了,该接老婆孩子回来了。此刻的我坐在开往哈尔滨的火车上, 回忆一下过去几个月在这个项目中经历的一切。

这是一场战争

可以说每一个项目都是一场战役, Prophete 2.X 这场战役我们打了一年半。 而在接到 ProphetEE 的项目目标的时候我们在本能上是抗拒的, 因为我们要在不到 3 个月的时间里超越过去 1 年半的成果。不知道当初有多少人质疑过, 我只记得当时听到过很多次不可能。 甚至就连老大第一次找我聊这个目标的时候,我的第一反应也是这三个字。在这么短的时间里完成这么多的复杂到极点的功能。我当时就可以预感到接下来的发展态势将是不停的压缩测试周期以及数以千记的 bug 像我招手。所以昨晚正式宣布发版的时候我有点恍惚,那是一种我们真的做到了的恍惚感。项目还没正式开始的时候,老大就不停的跟我们做战前动员,拆解目标,讲解架构和人员分配。 我们把这定义为一场战争,一场你死我活,破釜沉舟,没有任何退路的战争。 deadline 没有任何妥协的余地,做不出来就可以洗洗回家了。在这种氛围下,每一个人身上都背着沉重的压力。 于是 5 月份我把老婆孩子送回了老家,转头自己掏钱组织了一次小 TB 来鼓舞士气。 我们用最严肃的态度来迎接这场战役。在把老婆孩子送回老家的第二天,就是一波加班到 12 点以后的节奏, 从此一发不可收拾。基本上没有休息日,回家倒头就睡,醒了就来上班。所有人都走动了起来,这是有史以来所有部门合作的紧密的一次。项目经理和各个 TL 们每天都花大量的时间校对进度,安排资源。甚至在项目后期,TL 们对着几百个 bug,一条一条讨论。 我感受到了如何在最短的时间内产出客户最需要的东西,是一门很深的学问。

一次发布就是一次成长

目标一致比什么都重要

以前我不理解这句话,做面试官的时候从来没想过他是否能融入我们的团队,是否跟我们拥有相同的目标,是否符合我们的理念,我只对能力做出评价。 但当面对一场战争的时候,你发现你更需要的是一个军队而不是漫威的超级英雄,你需要的是军队中的每一个人都朝着同一个目标冲锋,而不是散兵游勇上去送人头。在这样的氛围下能达到 1+1>2 的效果, 而如果有人在这里面捣乱,你会体会到什么是 1+1<2 甚至 1+1<1。团结比什么都重要,一个害群之马的出现都将导致严重的后果, 这一次我深刻的体会到了这一点。 团结和目标一致是胜利的最重要因素。 即便我质疑这件事情,即便我不认可这个理念,但我依然保持向同一个目标前进。我觉得这是一个职场人员该有的素质。 每个人都有自己的想法, 我们不可能要求所有人都认可同一件事,一件事有分歧有争执是正常的,有些时候没有什么正确和错误,哪一边可能都是正确的。 但只要大家定下来了要怎么做,那么即便是我反对的路线,我也会按照这个目标走下去。 我遇到了一个好的团队,即便我们有着不同的理念,不同的行为方式,我们经常发生争执和争吵。 但是我们最后还是能够理解对方的想法,包容对方的价值观。我们最后还是朝着一个目标冲锋

不给自己设限,你会发现你比自己想的优秀

入门机器学习已经两年多,但正经八本的认真学习是在不到一年前。 第四范式是一家什么公司? 是一家专门做机器学习的公司。 在这里做任何事情都离不开机器学习这四个字。那为什么我是从不到 1 年前才开始正经八本的学习这门学问?因为这之前我一直在给自己设置限制,那就是机器学习是算法工程师学的,是数据科学家用的, 我一个小 QA 学它干嘛。 当时团队中也确实有一种氛围,不论开发还是测试,大家都是不怎么懂机器学习的,有些东西测不出来,做不正确也是可以理解的,毕竟懂机器学习的人是少数,你不可能组建一个人人都懂机器学习的团队来。 最主要的是,机器学习这么难,我学的会么?

直到大半年前,我决定打破这现状。 对着吴恩达的视频课程开始学习了起来。 一开始是很痛苦的, 还好之前在我们的产品上懂得了一些基本概念。 要不然真的 0 基础自学机器学习,一定是一场自虐到极点的旅行。 开始的时候想过放弃,但好在我坚持下来了。 也是从那时候开始,测试开发之路这个系列的文章就停止更新了。 取而代之的是深度学习基础系列文章。到现在为止已经连载了 25 篇了。从基本的机器学习算法再到深度学习理论再到最近开始使用 tensorflow 去写自己的模型,我收获很多。 也是因为这样, 在这次项目里我自然而然的成为了深度学习这条线的测试负责人。在跟开发调试的时候,研发拿着我写的模型去上线的时候跟我说上线成功了,模型准确率还是挺不错的,虽然只是轻描淡写的一句话,但我心里当时特别激动,这对于我来说是一个里程碑式的一步,过去大半年的学习都是为了这一刻准备的。尤其在中间我表明 tensorflow 算子暂时不是我测试的时候,大家跟我说在我们心里你就是最适合测试这块的人。那一刻我心里特别的高兴,是一种过去的努力没有白费,被人家认可的高兴。 现在我偶尔也会被人邀请去讲一些人工智能领域的测试的 topic。 现在回想,如果当初我继续给自己设限,不去学习机器学习,那我根本得不到今日的果实。

广度是深度的副产品

最近在朋友圈里看到了这句话,我破以为然,很同意这个观点,在这次项目中我也切切实实的体会到了, 跟我对接的研发人员中有一个很特别的。 记得他刚入职的时候公司的介绍邮件里对他的介绍很牛逼。 小米深度学习平台的架构师。 一开始我没什么感觉,后来在我读的一本 tensorflow 的书中发现了他的名字。 我学习 tensorflow 的时候跟他请教了很多东西。 发现他会的好多, 不仅机器学习和 tensorflow 让人敬佩, k8s 技术也很厉害,是 k8s 社区的成员,大数据也懂,各种架构设计都会。 很多次团队讨论架构的时候都会叫上他。 但他会的广度不是那种杂而不精的广,否则他的名字也不会出现在那本书上。 我向他学习了很多东西, 之前写的 tensorflow 的技术中有很多都是看着他的代码学习的。 我是之后慢慢的明白了为什么他给人的感觉是什么都会。 因为他在这个领域里太过深入了,他要做机器学习,那那必然就会去学习大数据和 tensorflow, 要深度 tensorflow, 那就必然要去搞 tensorflow on k8s。 那把机器学习做成企业级产品,就必然要这在相关技术中全玩到专业级别,这跟随便拿 tensorflow 写个 demo 是不一样的。 我再跟着他的脚步学习 tensorflow 的过程中也发现了, 做好深度学习这个领域要学习的东西很多,除了机器学习本身的东西, 还要学习 hadoop,spark,k8s。研究的深入了,广度就不会差。

所以网上有一句话流传的很广,叫杂而不精不如专精一样。很多人对这句话的理解有误。 就拼命只钻研某一样技术,比如我只钻研接口测试,或者只钻研端上的测试,并且很多人都引以为豪。 但你把接口测试玩出花来,那也还只是个接口测试,它产生不了其他价值了。 我们要深入的是一个领域,而不是某一样技术。一个领域内,包含了很多技术, 甚至我们要深入的不仅是技术,还有这个领域内的业务,用户以及盈利模式。 当你把这些都穿成一张网的时候。 就会产生巨大的价值。

放宽视野,跳出思维局限

广度是深度的必然产物,没有广度的深度是伪深度。而深度带来的另一个副产品,就是视野。 深入了这个领域的各个方面,就会从更加全局的视野来看待事情。 还拿接口测试来说,在有的同学眼里,接口测试就是接口测试。 在另外一些人眼里,接口测试只是 CICD 其中很小的一环。 而我再这次的项目中,很幸运的暂时充当 CICD 的 owner,在整个机器学习产品的特性上,在微服务架构 50 多个模块上,在全面引入 k8s 支持产品的基础上。我面对了以前从来没有遇到过的坑,与研发测试运维深度合作, 这是一次思维方式的转变。 之前的时候我只是想着部署工具怎么做,自动化测试怎么接入。 但这次我必须跳出测试人员的条条框框。 解决所有人的痛点,提供更加有效的 CICD 流程加速项目效率。 在这其中多亏了有很多的牛人一起帮助我解决问题。他们很优秀,做了很多事情,反而是我没做多少事情~~ 但我从中收获的最多的,就是遇到了各式各样的坑,见识到了各路牛人的解决方案,从更全局的视野开始思考。 我觉得这比我写一万行接口测试的代码都要重要。

一切不以业务为目标的技术都是在耍流氓

在 58 那会我从来不跟业务,到离职那天我都没打开过几次 58 的 APP。 每天的事情就是写框架,写工具。完全脱离了业务。 而现在,我会看每一个模块的需求文档看到深夜,参加我能参加的所有评审。 主动找 PM 和研发人员讨论需求和设计,甚至在针对 k8s 服务的状态管理这个 topic 上我召集了很多模块的同学一起来讨论。 有些时候我就在想,我学机器学习,学 tensorflow,学 docker,学 k8s,学 hadoop,学 spark,学了很多东西。 但是最能发挥他们价值的,不是写了哪些工具,而是在这一刻。在这一刻,我能用我所学到的东西,决定了产品再某一个点的走向。

情绪控制

最这段时间大家都挺暴躁的,我更暴躁,基本上各个 TL 都被我怼遍了,而且是不加任何掩饰明火执仗的怼,就差骂出脏字了。 我老大有很些时候都会直接把我按住,说差不多了,再这么下去就过了。可以说情绪控制是我做的最不好的地方。 我在工作上比较容易发脾气,实际上是在我着急的时候比较容易漏出本性。江山易改,本性难移。 虽然有挺多人觉得我好像挺温和的,但其实是大多数时候我比较 hold 的住,能把火压下去。 但是有时候一着急,本性就漏出来了。因为这个我坏过好几次事,本来可以迂回解决的事情被我弄的不好解决了。 我也容易跟我一起工作的小伙伴发脾气,给他们造成不好的影响。 恩,这次项目没改掉这个毛病。但是让我更加的知道自己这个毛病的严重性了, 这也算是收获吧。

结尾

项目暂时告一段落,我们都需要休息了,甚至我们已经忘了多久没休息过了。 半夜我在小群里发红包,发现还有小伙伴没有睡觉。我问好不容易放松下来了,怎么还没睡。她说可能有生物钟了,睡不着。 连续高负荷的工作,大家不论从身体上还是心理上都承受着强压。 我希望大家都能从这次战斗中收获些什么吧。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 21 条回复 时间 点赞

稳得一逼啊老铁😏

支持楼主,讲的很棒

总感觉有这种拼尽全力,记忆深刻的事情挺好的

从文章中 能感受到 良师益友 对个人学习及发展的帮助

期待高飞的测试开发之路继续更新,AI 那块的文章,实在是看不懂😂

正好有个问题,请教一下。~
机器学习大部分的时候都是在使用开源的封装和训练结果,你怎么看这个问题?
在实际的项目中,针对开源封装,有哪些可以改进的地方?

弱弱的问一句,楼主多大? 为啥爱发火? 以前也这样吗?

目标一致性是现在大部分人都欠缺的。

向飞哥学习

白纸 回复

我尽量多更更

山姆大叔 回复

30 而立。爱发火算性格缺陷吧。平时其实也容易暴躁。只不过一般我都能压下去。 但是面临高压的时候就控制不住自己

magicyang 回复

现在大部分都是用开源的。哪有几家公司像我们一样还自研算法的。就算我司现在不也是开始集成像 tensorflow 这种来源框架来满足客户对开源算法的需求么。 针对于开源的机器学习库,他们只是给你提供一个可以训练模型的框架。远远达不到商用的程度,机器学习要商用首先要有数据闭环,为算法提供数据流,时序特征,流式计算等。有了这些能力然后才是模型训练,同时为了达到在大数据下的训练性能。才会扩展出了了类似 mllib on Hadoop, tensorflow on k8s 的各种技术站。要依托于各种分布式集群来扩展机器学习能力,然后上线之后还要保证高可用,负载均衡等等,所以各种云技术或者 open stack 也是要用到的。 这些都不是原声开源框架能做的,但都是商用机器学习场景必须要用到的。 当然如果我只是个学生在实验室搞搞实验。 随便单机跑跑怎么地都行

magicyang 回复

觉得这个问题就和国内开发人员大多都是二次开发一样,调用封装好的框架,这业务逻辑,外包更甚,那么核心竞争力在哪里。大数据开发仅仅只是用工具那么为啥要求那么高。测试只是点点点核心竞争力在哪里

前两天还和 58 的人说,58 出了好多测试人才。我认识的就有 3 个了。

惭愧。。感觉在目前的体制范围下 很难有一批齐心干事的人 羡慕 LZ 更重要的是也得向 LZ 好好学习

写的真好,学习了。

红客联盟 回复

都是一层层封装的,哪个牛 B 的框架不是站在巨人的肩膀上的?

总结的很 6

学习了,总结真的很不错。

求教高飞大佬?
在机器学习的过程中遇到微积分和线性代数的坑, 是否需要补全了数学知识再重新回来啊?

zhang 回复

我到现在都不会这些东西。 去看吴恩达的课把, 他是最说人话的了。 反正以后不需要你写算法。 所以不用懂那么多数据知识

ABEE ycwdaaaa (孙高飞) 在 TesterHome 的发帖整理 中提及了此贴 01月12日 13:47
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册