前言

3 个月前在测试活动的时候写过一篇总结, 里面总结我过去 4 年的在公司在社区的事情。 所以本来是不打算写总结了。 不过那篇文章写了不少与工作无关的事情, 也没有聚焦在 2019 年。 所以想想正好后天部门就要做年终总结了, 我也就趁着这个机会写一写,权当是演讲稿了。

k8s 技术栈

就先说说我最爱的 k8s 吧, 我在很多场合都表达了我对 k8s 对容器生态的热爱,我也把 16 年第一次接触 docker 当做我技术生涯中最重要的里程碑之一。 我在公司内推行的技术方案几乎都与 k8s 有关。 我画了一个容器技术的成长路线图

从图上可以看到,我们每一年都会有新的成长并成就新的项目。 我简单列一下我这边主要利用到了 k8s 的解决方案。

恩,主要的就这些了。 我再自己思考的时候其实也发现了一个规律,就是在上面图里写的。 很多时候这些解决方案并不是我们事先规划好后才去学习实践的, 而是在更深入的了解容器和 k8s 后才发现,原来我们可以利用 k8s 的能力来做这些事情。 所以我有一个很深的感受就是 -- 技术创新取决于对技术理解的深度。 早期觉得 k8s 只能解决解决部署问题,后面才知道原来 k8s 可以做的远远不止这些,以前想不到要做这些,完全是因为我对 k8s 的理解不够深。 好了这里就聚焦的说一说稳定性测试 (也叫浸泡测试) 和混沌工程吧。 因为他们两个是我今年主要的成绩了。也是我在更深入的理解 k8s 的机制后在去年年末开始开发的方案。

上面着重说了我认为我今年对质量部做的最主要的贡献了, 也是我认为自己这一年在技术上最大的亮点了。 为了深入了解 k8s 今年我个人全面拥抱了 golang 语言, 学习容器的各种知识,k8s 的内部源码。 这也是我在 19 年技术上最大的成长了吧。 以前的我是熟悉 k8s,能在很多场景利用 k8s 的知识解决问题, 但我并无法扩展 k8s 的能力。 而 19 年我学会了编写 k8s operator 和 admission webhook。 前者可以自定义 k8s 资源对象并通过自定义控制器来操作 k8s, 比如玩过 k8s 的都知道 k8s 的那些预制的资源对象,比如 Pod。 而我则可以自己定义一个叫 PodChaos 的对象提交给 k8s,并且我的自定义控制器可以接收到用户发送给 k8s 的这些请求做处理。 而 admission 更像是一个拦截器, 它本身是一个 https 服务,但我们把它注册到了 k8s 的 api server 中。 它可以拦截用户发送到 k8s 的请求并加以篡改,注入我们想要的任何逻辑。 上面说的稳定性测试和混沌工程其实就是用到了这两个方案。

自动化测试体系

恩, 到了今天,我们形成了自己一套体系出来,大概的样子就是下面这样。

这个图几个月前画的了,有些数据已经不准确了 (我也懒得更新了哈哈哈) 测试用例当时错误的只统计了 UI 自动化,现在加上其他的测试类型,估计大几千了吧。除了业务层和中间件层,下半年接手了最底层的算法的测试小组。 所以其实还应该把这些算上。 这些算是质量部成立 4 年以来积攒下来的家当了, 当然这些是大家共同努力的成果, 我没有打算一个人冒领这些功劳。今年我们努力让 UI 自动化突破了 2000 大关, 通过率还不错, 更新完脚本后一般在 90%~95% (有些场景由于 k8s 原因实在是稳定不了)。 这 2000+ case 用 100 个浏览器运行也需要 3 个小时时间 (我们业务里各种机器学习模型算法,大数据任务,一个 case 动辄跑半个小时,1 个小时的都是不奇怪的)。直接让用人工测试需要至少 1 周的全功能回归测试缩短到了 1 天。而我们又有各种兼容性测试和升级测试, 比如兼容各种浏览器版本,兼容各种 hadoop 集群,兼容各种数据库版本,操作系统版本,这些都是需要运行大量的测试的。 引入 UI 自动化为我们提升的效率是无法估量的。 这算是我们对行业中大范围的关于 UI 自动化的质疑做的最有力的回击吧, 我一直是想为 UI 自动化正名的。 同样今年质量部在中间件层和底层的测试也都遍地开花, 测试用例数以千计。 只是我和我的领导都觉得仍然不够, 明年会开启产品组件化拆分项目, 我们会加大投入底层的测试粒度。

从上面那个图其实可以看出来,整个自动化体系大部分都是在 k8s 的支持下的, 这是我针对 k8s 异常的热爱导致的~~~

产品研发

10 月份的时候有机会轮岗到了数据智能部,这算是我第一次正式参与到了产品的研发中。 是一个用来为用户生成特征抽取规则的小组件,并不难。 直到前几天还在解自己的 bug~~ 跟我一块开发的同事 (也是 QA) 还说呢, 自己开发自己测试给自己提 bug,感觉好奇怪哈哈哈。 这算是一个小插曲吧, 因为功能并不难,也没花多久就结束了,记忆中好像就 1 周多? 真是有点忘了。 但是第一次做开发职能还是值得提上一笔的。

产品设计

年中的时候有幸被大家选中,负责设计数据治理专项的产品解决方案,算是第一次跨界做产品经理了, 当时很用心,做了很多调研和沟通。 写了 3 万字的文档。 可以说这是我今年第二用心做的项目了。 当时动力很足, 只可惜虽然方案被采纳了, 但是由于人力问题,我们总是有更高优先级的事情。 所以这个项目一直拖到了 20 年也没能落地。 感觉遥遥无期,算是今年最大的遗憾了, 不过人生不如意十之八九, 哪有一帆风顺的。

工作上其他的事

其他的事都不算大,边边角角的也就不想说了。无非就是一些日常项目的跟进。 唯一可以说的就是接受了算法团队的测试,带着两个人一起吭哧瘪肚的测试自研算法。不过也主要是他们两个在做了, 我算是打酱油,就前期调研了一下方案而已。

Testerhome 社区

这篇一开始完全是想写工作上的事,不想掺杂其他的东西。所以社区和生活上的事就没仔细说, 这里还是提一下吧,毕竟社区对我的影响也是很大的。 19 年参与了社区的北京大会和深圳大会,分别是高新专场和 AI 专场的主持人,也参与了幕后的准备工作。 索性没掉链子,没给大家丢人。 20 年的北京大会我们也在准备中了。 我也推荐了我的同事报名了混沌工程和 k8s 相关的议题。希望能入选吧。

尾声

总的来说 19 年的收获也不算小, K8S 能力有了大的突破, 各个自动化项目也都有声有色的。 还进军了研发和产品领域。 所以我的标题写的是进击的 2019,意思是今年突破不小 (而且我是进击的巨人的漫画粉~~哈哈哈)。 过去每年我都要求自己有新的突破,学习到新的技术或者能力。 但到现在我还没有找到 20 年主攻的方向 (除了组件化拆分)。 希望 20 年末做总结的时候我依然能跟我自己说这一年没有白过哈~ 另外祝大家过年快乐。


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