淡定淡定, 文字比较冰冷。 感受不到语气,比较容易误解
面试,要学会装逼
你从另一个角度看,就是专精某一个领域。 这年头不都说要成为领域专家不要做杂而不精么。
而且我好像写过挺多其他的类似自动化测试啊, 持续集成啊,大数据啊之类的东西。 我也不是除了 k8s 什么都不会。 只不过我最擅长 k8s 那我就总拿 k8s 来说事呗
我是最擅长 k8s, 不过这有错么
我没太弄清楚面试官想得到什么答案,他的意思是你没起到多少作用,但是你不是说把问题原因定位到了么。 难道他想你直接改 bug 么哈哈哈。 可能你这个问题比较简单吧,所以面试官不以为然。 一般回答这种问题都是往高逼格上回答。 就找你印象里最有技术含量的 bug 说就行了。 回答方向上主要经清楚测试过程,排查过程和验证过程,中间多讲讲怎么帮助研发排查问题的。 如果能知名的开源软件的 bug 就更好,比如我一般会说 k8s 的 bug。 因为这个显逼格哈哈哈。 比如:
我们在测试环境中发现服务不稳定,总是很卡。甚至请求失败。通过监控 k8s 集群上发现有 2 个节点的 cpu load 高达 200,但是在这两个点上启动的服务其实很少,而且 CPU 使用率也很低。通过 ps 命令发现当前节点的进程数量有好几千个,所以初步判断是由于进程过多导致的进程上下文切换造成的 cpu load 变高。 找到若干个进程查看其 stack 发现都是 fork from xxx 的进程,怀疑都是由某个进程 fork 出来执行 shell 命令的。 查看 kubelet 的日志发现有很多的报错信息显示 du 命令运行出错。 不知道跟这个有没有关系,所以到 github 上查找是否有相关问题。 最终找个有人提过相关的 issue。原因是 k8s 1.8 版本中 kubelet 对外暴露的 metric 接口是给普罗米修斯对接监控用的。他会周期的执行收集监控数据的命令。 其中会执行 du 命令来收集磁盘信息数据, kublet 1.8 使用的是老版本的收集功能,有一个偶发的缺陷是调用 du 命令会出错。所以 kubelet 中会一直抛出这个异常,而因为一直出错所以一直重试,所以才会有那么多 fork 出来的进程执行 du 命令导致 CPU load 变高。 所以按照 github 上提供的 workaournd 我们把 du 命令直接删除。 这样找不到 du 命令只会抛一次错但是不会导致不停的重试。 后面我们找到了不少这样的低版本 k8s 的 bug 导致的产品不稳定问题,甚至直接影响到了生产环境。所以在 19 年的时候升级到 k8s 1.16 版本后就彻底解决了这个问题。
这个 bug 是不是听起来就很有逼格了。 引申下去可以跟面试官探讨一下这种开源产品的 bug 你们怎么处理的问题。
ps:面试这玩意都是吹着唠的, 有些 bug 可能不是你处理的,但是只要你知道细节,不怕面试官深问,你就拿来说是自己处理的就成
其实我已经连续喝了 5 个月的中药了, 今年身体出了问题,先是连续拉肚子一个月,后面又是失眠,又是心慌。去看中医说湿热,脾胃虚,而且长期熬夜导致肾阴阳两虚。现在没特殊原因每天固定 10 点半睡觉,不敢再熬夜了。 好在技术,职位,人脉上都已经积累到了一定阶段了,所以不需要像以前那么拼命。
我是这么想的,拼多多其实说的是实话, 大多数人其实现在还是拿命去换钱。 因为我们这种普通人不拼命的话,以后就看不起病,买不起房,生不起孩子,养不起老。
所以在这个大环境没改变之前, 我们也没什么办法。 年轻的时候尽量多积累一些东西, 包括技术,人脉,金钱, 以及在一个公司中的地位。 这样起码 30 多岁以后就可以不用像以前那么拼了, 就好像我现在的职位就不用像以前那么拼了。
有一说一,我也觉得直接写代码是最好的
收到~~ 以后我会继续分享的
现在做大数据的测试的人群还是比较少一些,属于较小众的职位。 主要是因为之前测试人员都不具备相应的技术能力,并且大数据的测试场景确实不好测。 所以一般公司都是主要由研发自己来保证这部分的质量, 测试人员就在 UI 上测个皮儿的现状。 但是现在行业里对测试人员看法的转变,以及大家的技术能力越来越高的趋势 已经开始改变这个现状了。 我看不少公司的 JD 里已经要求 QA 有大数据技术栈的能力了, 同行们也都开始在讨论怎么测试大数据的场景了。 尤其是近些年软件架构的变化和互联网数据量的暴增,AI 火了也是变相的带动了大数据的发展(AI 离不开大数据), 所以我相信会有越来越多的大数据测试岗位的, 而且待遇都不错, 从现在看我沟通的一些要求大数据技术栈的职位,薪资都不低。
你要是想学习的话, 自己搭个 hadoop, 用 spark 或者 flink 去写一些大数据的任务, 先学会大数据的一些基本开发的技能, 了解大数据生态是怎么运作的。 后面要针对这个生态里各个环节的点进行开发上的学习。 包括批处理场景,流计算场景, 流计算场景中还设计到了各个中间件, 比如 kafka。 再然后就是要学习这些东西的一些底层原理。 比如什么是数据倾斜, checkpoint 是怎么回事, 窗口是用来处理什么场景的, 数据一致性要怎么保证,精准一次性语义又是什么等等。 大数据测试的特点就是没有大数据开发能力的话就基本上没办法测, 因为它大部分的业务逻辑都在底层, 这也是为什么以前都是研发自己来保证的原因, 毕竟测试人员很少有具备这种能力的人出现。
真是巧了, 我们的 cdh 集群的命名跟你截图的一样。。。。 还有 kafka 不是有 java,python,golang 的客户端么,你需要的不是这个么?
你这个语气,观点还有行文习惯, 我差不多能猜到你是谁了。你还是这么狂妄的认为天下你最强其他人都是小白。 而既然你已经开始人身攻击直接说大家都是小白了, 那我也就不打算回应你了。 只盼你这个唯一不是 “小白” 的大高手有空能开始写点干货文章, 别在我帖子下刷存在感了 , 88.
就 postman 最友好了吧
虽然吧我没觉得我做的东西有多高大上,我说受众小不代表高大上, 只是做这个领域的人少。 但你要说这些东西只是对小白来说是故弄玄虚,随便做过几年测试就很 接地气。 你这不是骂人呢么, 合着你觉得社区里这么多人都是没几年经验的小白, 只有你是 做过几年测试的。 你想贬低我 + 抬高自己,我能理解,但能别捎带着别人么。
我是不是该考虑考虑写点接地气的了, 老写大数据,k8s,混沌工程的是不是受众太小了,毕竟搞的人不多。
加油
建议楼主学学 markdown。。。。。。 这个排版是在让人没有仔细看的欲望
我现在快 1 年没碰 UI 自动化了, 好多我自己都忘了~~
第一点那个如果是返回的当前 page 类的话, 返回 this 就行, 我 new 了一个 page 可能是返回的别的 page 吧。 或者是我当时忘了返回 this 了。
第二点是我其实真的是一开始写 UI 自动化的时候就设计了这些设计模式了, 是因为我在以前做项目的时候有了经验了, 所以做新的项目就上来就按以前的经验搞了。
第三点我是真的忘了咋回事了。。。我都不知道我开源过一个 UI 自动化框架。。。我甚至不知道我自己有微信公众号。。。。 你确定是我开源的?
我的点其实不是说哪个岗位有重复劳动。。。。 我其实是想说任何东西都是一开始学的时候新鲜, 等学会了就都变成重复劳动了。 大家要习惯这一点, 不是永远都有新的挑战迎接你。 平平淡淡才是日常。 当然了还是要积极的去发掘新的挑战来避免这种情况, 只是我们在心里预期上别觉得永远有新东西做是常态就好了。
楼主想多了, 测开也会有重复工作, 比如开发一个测试平台, 可能就是刚学 django 和 vue 的时候新鲜点, 到后面都是 curd, 这就是另一个形式的重复劳动而已。 测开的蛋糕也就那么多, 各种场景的测试工具你都开发完一遍以后, 你就会发现干啥都是重复劳动。 除非是找个新的场景,新的挑战。
测试开发干的主要不就是提升效率么? 难道在其他地方不是这个定义?
这个问题怎么说呢, 不管在哪个领域都是必然的发展路线。 任何领域内都是先不计成本的把事给做出来, 然后是再绞尽脑汁的把成本降低到普通人也能做的程度。 这是科技进步的直接结果, 就好像我小时候谁家要是有个大哥大那就牛逼坏了, 那玩意当年贵的要死,是有钱人才能用的东西。 然后你看现在基本上人手一台智能机了吧。 这是在任何领域都无法避免的, 不说测试领域, 就说研发领域也一样的, 10 年前想写个 web 项目是很难的, 光前端你要精通各种原生 js,css,html。 现在 3 大框架出现 + 开源组件库, 基本是个能写代码的就能开发出来一个比较精美的网站了。 技术在一步步进步, 就像已经有了 mysql 为什么还需要 MongoDB? 已经有了 msapreduce 为什么还要 spark, 有了 spark 为什么还出现一个 flink? 再比如已经有物理机了为什么要搞出一个虚拟机出来, 有了虚拟机了为什么还要搞出个 openstack, 有了 openstack 为什么还有开发 docker,有了 docker 为什么还要开发 k8s? 技术的进步是阻止不了的, 而技术进步带来的必然结果,就势必是在各方面降低门槛。
所以这是必然的, 阻止也阻止不了的趋势。 我们能做的就是站在巨人的肩膀上,继续让技术进步,去开发更好的东西出来。
不论在任何地方,只要它已经没有可以让你进步的空间了, 你都该考虑考虑是不是要离开。
测试一下
已更新
如果你不排斥在研发的 repo 里以写 UT 的形式去做集成测试的话, 可以去测一测 UDF, 我们这边开发了有百余个 UDF, 大多都是 QA 来负责编写测试用例的。 UDF 测试完可以测 stream, 都是属于深入研发的代码中进行测试的手段了, 目前这是我们这边主要的功能测试方法了, 我下一篇文章里会写。