陈晔:谈谈对症下药的软件测试人员面试

2017年2月8日晚8点半,《大话移动 App 测试》系列丛书作者陈晔带来了主题为“大话软件测试行业面试”的Chat交流。以下是主持人小冰整理的实录,记录了陈晔与读者之间交流的精彩问答。


问:招聘面试中确实会有一些情况,不知道需要什么样的人,对于小公司,可能不需要专门的自动化团队,也没那个时间,造成对面试人员的要求高不成低不就;自己也对测试的发展比较迷茫,不知道到底什么样的发展才是测试的未来,测试到底在项目中的位置是什么?

:首先这是一个非常普遍的现象,其实主要的问题还是在于企业也好,个人也好是不是能够清楚的需求。我文章也提到就是实企业没有找到痛点,个人也没有找到自己的优势,也没有看清行业发展的趋势。最终大家都在模仿别人,别人学什么自己学什么,别的企业招什么样的人自己就招什么样子的人。久而久之就会出现你说的困惑,也就是高不成低不就。

其实测试未来怎么发展没有人知道,就好像2009年的时候我记得这个行业和我很多人都还在讨论测试要不要写代码,技术和测试用例设计到底哪个对测试更重要。现在看来这些根本都不是问题了,而且都有明确的答案了。行业是变化的,我们的优势,定位也是变化的,没有一个定数。文章的评论区有朋友说的对,唯一确定的就是我们需要保持学习,保持敏感的嗅觉知道这个行业到底什么变化趋势。

最后我还是想强调的是,我们喝别人的鸡汤没有意义,别人说好也是别人好,别人技术好也是别人好,别人赚钱多也是别人的。测试在项目中什么位置也没有固定答案,但我们自己在项目中什么位置是可以自己决定的。测试与测试之间的差别还是很大的,一个主动、技术好、让别人觉得专业的测试就能够在项目中产生非常大的作用,也能够掌握项目的主动权,反之就会让别人觉得测试不重要,而测试人员本身也会觉得不受重视。

大家觉得困惑的原因就是因为眼前的选择太多,声音太多。其实还是不够“灵敏”,否则就能够找到到所有声音中真正那个对自己有用的声音。其实模仿并不是不好,只不过现在的模仿都是没有思考的模仿。个人和企业都是,ps:尤其是测试。


问:想了解一下,老师使用过的持续集成工具和架构以及使用后的评价~推荐哪些工具?

:这个问题不是很清楚怎么回答。从工具来讲Jenkins肯定是持续集成用的最多的平台。但jenkins本身仅仅也就是一个工具,真正想要在企业中落地的话,还需要很多的沟通,了解需求,自研对接jenkins的平台,增加master slave,调用jenkins restful api等等还有很多工作等着我们来做。


问:如果在小公司,开发人员比较少,想推进持续集成,但开发人员没有精力或根本不是很配合的话,怎么去继续推进?

:不是很配合没有关系,只要关键的一些地方配合就可以了。但一切的前提是测试本身对持续集成的平台足够了解,自己要做什么很清楚,要达到什么目的很清楚。我这里举个例子,比如说无线上面我们做持续集成想知道代码扫描情况,定时打包,冒烟自动化等等。那么测试人员先问自己几个问题:

  1. 是否了解gitlab,svn;

  2. 是否了解产品的架构和代码;

  3. 是否知道jenkins怎么用,rest api怎么调用;

  4. 是否知道gradle,xcodebuild怎么打包;

  5. 是否知道Android,iOS产品各种证书,签名之间的区别;

  6. 是否知道不同自动化框架的优缺点;

  7. 是否知道哪些扫描工具好用,哪些是原生sdk里有的,哪些是3rd的。

等等这些问题,如果这些问题不清楚的话,那么我觉得就不要想继续推进了。本来开发就没有时间,只会让开发更觉得测试不专业和烦。


问:在面试过程中怎样更好了解将加入的团队是否值得?比如团队文化,氛围。怎样才能了解是否能对自己的提升有帮助等?

:很好的问题。我觉得首先主动的问面试官这样几个问题:

  1. 团队多少人;

  2. 团队测试,开发比例多少;

  3. 目前团队中的自动化程度如何,或者说团队的技术落地情况怎么样;

  4. 对团队中技术人员以后的定位是什么,期望是什么;

  5. 团队平时会不会主动有分享的氛围或者其他的活动等等。

其实还有很多可以问,但这些其实已经差不多了。从对方的表达中就完全能够看出来是否值得加入了,如果这个团队的人或者面试官能够非常流畅的回答你的问题,说明他早就有规划或者这一切都是事实,反之就是在敷衍忽悠了。其实这个时候你就是面试官,你需要对自己负责的审视这个团队怎么样。

补充下,其实这个时候你就当自己是面试官,你就是来考核对方的。直白的问出问题,然后观察对方的反应,我保证你能够判断出来对方是否在忽悠你。这个团队,这家公司是否值得你加入。一般面试官和你都有一定的工作交集,哪怕这个公司很好,但面试官如果含糊其辞,那么我觉得这个团队还是不合适你的。


问:现在招聘都要求懂开发,测试对代码要掌握到什么程度?另外,面试的时候是怎样考察测试人员开发能力的?

:掌握到什么程度看我文章吧。我文章中特别的说明了这个问题。我简单的总结下,代码掌握到什么程度并不重要,重要的是你是否能够解决放在你面前的问题,是否能够解决企业目前面临的问题。只要你能够解决那么你就他们需要的人。

第二个问题,考察测试人员的开发能力。这个并不是很难,首先看企业是否需要代码能力很强的测试,还是说因为BAT需要,我们也需要。如果后者,那么就算了。考核最好的方式还是就事论事,比如你需要java的,那么就考核java,需要python的就考核python,需要算法就考核算法,需要写自动化用例那么就自动化用例。就面试当场写,不要给白纸,就pc+ide让对方写,不要去抠一些无意义的细节,更多的考察这个测试人员是否真的做过,思路上是否正确,有全局观就可以了。

补充下:面试还是对症下药,对症找人。千万不要去模仿,也不要非要显示自己逼格多么高。就真的大家踏踏实实的面,别人也可能被你的真诚打动呢。否则久而久之,口碑也就不好了。


问:现在的公司的工作是从基础功能到UI自动化脚本编写维护,不会让我们接触到持续集成或更高级的。在已经有轮子的时代,用什么方法去做全面的自己,以保证跳转到招聘的漩涡中,能混口饭吃?我们应该热衷于哪种语言补充自己在测试完善时代下的硬性条件? 之前毕业的时候有黑白盒之分,现在我会去通过黑盒验证功能,发现bug分析一个代码这里bug引起的原因,是不是顺序反了,好像也反应了我对代码的含糊。

:首先先说第二个问题吧。黑盒功能验证,发现bug去代码里看bug引起的原因,这个顺序没有错。但是前提你没有说,如果前提是你对于产品的代码,架构很了解那么顺序ok。如果你不了解,那么只能说你比一般的测试人员做的好,但方法还是有待改进。需要先对全局有一个了解,再一个一个点去深入。所以说结论就是你做黑盒还是白盒,这都是表面上的,并不重要,重要的就是是否自己真正的对产品架构,代码,设计,真正的需求,实现有一个全面了解。而不是和别人说自己做白盒就觉得很高大上,做黑盒就觉得low level了。

混口饭吃其实现在的确是不容易了。说语言吧,测试的话java还是占多数的,但语言其实并不重要,重要的还是方向。我说个故事吧,2007年的时候我一些朋友说要做android,而那个时候所有人都在做诺基亚,塞班。结果呢,这些朋友现在都是大牛,都至少事业,金钱双丰收,为什么?技术很top吗?学了什么特定的语言?都不是,主要还是方向对了。

然后来说轮子,首先我们不要说都会用吧,至少都了解这些轮子,不要别人说到轮子,我们连轮子是干什么的都不知道。就好像我们现在说打包有gradle,xcodebuild,库管理了jcenter,maven,cocoapods,持续集成jenkins2.0,扫描平台sonar,工具PMD,oclint,scan-build,infer等等,自动化框架就更不要说,轮子多的一塌糊涂。但问题是有多少人都知道呢?每个轮子的优缺点是什么?我一直强调的就是先踏踏实实的去了解轮子,等你了解之后其实基本上也就成就一个最最基础的全面的自己。至于接下来的工作,就真的需要提升你所在的圈子,尽可能的过滤那些low level的声音,这样你就会明白自己到底要做什么。

PS:我们能做的就是控制自己去了解自己看到过的轮子,剩下我们不知道的,或者超出我们认知范畴的,那么就需要别人来告诉我们。而别人就是所谓的圈子,就比如今天大家来gitchat也是让自己进入一个新的圈子,也能够看到更多,学习到更多。这都是方法

我最后举个例子,比如我自己2017年,我很清楚今年数据很重要,怎么收集我不关心,我关心的是怎么整合数据,通过不同的维度体现质量,甚至做成通用的产品为公司变现。而我也认为2017年是数据的元年,爬虫也会上升一个新的高度。不要问我为什么会知道,哈哈。


问:都面试了哪些开发技术,或者说哪些类,可以详细点说明一下么?甩个具体的题也行。另外会考察测试人员对行业,场景等的思考么?还有个问题,测试管理者的面试一般怎么考虑的呢?

:面试的话,这个先说现状吧,企业现在最多的一类就是甩算法。比如实现一段回文,一个排序算法,或者一个杨辉三角。这种很多。拓展的说下,还会考核一些问题的解决或者优化的方法。比如说Android中绘制慢了一般有哪些原因造成的,又分别用什么方式解决。再比如说空指针有哪些情况,分别也都是怎么解决的。这类问题其实也是变相的在考核开发技术,同时也是看候选人是否真正的在项目中做过。(当然我觉得这样面试已经算很良心的了,现实中很多企业直接就是问比如jvm原理,我觉得这种就没有太大的意义,如果真的有需求是可以的,但往往大部分应用层的企业都是没有这种需求的。)

接着说对行业,场景的思考。这点真的是非常重要的。但是可惜的是,就我去过那么多企业,往往企业对于测试的面试现在是越来越偏向于技术,对场景,行业的思考还是比较少的。答案就是有,但还是少。

管理者的考核现在大多数企业还是会先考察一些基础的技术能力,接着一般都是从这样几个方面:

  1. 觉得一个团队中不同层级的测试,不同技术的测试人员应该怎么分配;

  2. 测试人员应该怎么去培养和提高,分别从什么方向;

  3. 然后就是对于项目,需求或者说一个产品的理解的考核,一个管理者应该有更快的理解力和分析能力;

  4. 团队考核从哪些方面进行,为什么;

  5. 觉得一名管理者在日常工作中应该做哪些(暗指就是需不需要做技术等等);

  6. 如何看待测试和质量的关系,质量应该怎么来度量,怎么提升质量?

其实更多的就是面试官先不要说自己公司是怎么做的,先看对方按照自己的经验到底是怎么看待这些问题的。管理者相比具体的工程师在考核上应该在全局上更有一定的高度,否则凭什么做管理呢?


问:测试行业面试对年龄的看法,类似工作能力和水平,是否会优先选择年轻的?是年轻饭吗?

:这个其实在近几年也成为了一个大家热议的话题了。哈哈,这个我可以说,对于年龄,年轻不是绝对的要求,但年纪轻是这个行业要求里面的一个发展趋势。

让我来说这个缘由吧,大家有没有想过为什么会选择年轻?企业认为年轻的好处是什么?

  1. 精力足,可以一起拼;

  2. 冲劲儿足,脸皮还不厚;

  3. 大多年轻人现在技术扎实;

  4. 学习能力强;

  5. 有新的圈子和新的想法,也就是所谓新的血液。

那么我来说下企业为什么喜欢招年龄小的吧,还不是因为年龄大的那些测试太水,让别人觉得根本不值那个价钱么。那么问题来了,是不是年轻饭呢?在这个问题之前,其实我们应该问的是——如果我不年轻了,那么我的价值在哪儿?难道说我的价值就是因为我年轻?我年纪上去之后,这个唯一的价值就没有了?如果是这样,那就说明你缺少了技术的积累,项目经验的积累和总结,缺少了高度和深度,缺少了大局观。所以说,对没有积累和高度的测试来讲,就是年轻饭。反之,越陈越香。


问:在杭州除了阿里巴巴网易丁香园这种公司外感觉还可分为四类,像文思海辉通力互联这样2000人以上大公司,外包公司听说待人苛刻,其次就是500到2000人左右的快速成长公司美柚挖财这种,还有类似于传统互联网公司做硬件,就是整个公司做事方式和氛围都是传统行业,最后是15到50人的初创公司,我想问老师的是能不能分析下这几种公司,和面试时怎么判断对方公司或者测试团队是重视测试的并且值得自己加入的呢?

:这个问题感觉回答了要得罪人。题目上如果不说公司还好。怎么值得自己加入,见之前的问题,每个公司都适用。如果要从测试的切入点的话,我还是冒着风险回答下吧。

  1. 外包。外包往往被很多人说不值得去,但其实外包中如果你能够接触到不错的项目那还是非常值得的。我也认识很多在外包做了好多年,资历丰富的测试。其实开始别人拿你当人力外包,如果你做的好,其实公司就离不开你了。你也可以得到更多你想要的

  2. 快速成长的话。其实看个人发展,我个人觉得适合积累经验,积累项目经验,以及想一步一步带出自己团队的管理者

  3. 传统互联网其实现在也在改变,但改变就还是很慢。这个我不好说,看每个人的喜好,传统互联网企业现在其实也面临着很大的挑战,你选择也就是选择挑战

  4. 初创公司,这个你首先就是需要看老板,老板的风格决定这个企业的风格,你和老板合不合得来。然后再看产品是不是你喜欢的。反正如果你选择初创公司,那么你就不要当自己是测试,千万不要当自己是测试,否则你是做不下去的。你就碰见问题想办法解决就好了,不要觉得自己做的杂,也不要抱怨没有人带你,更不要抱怨996。因为这个本来就是你的选择。


问:我也是09年参加工作的,看这些流水账深有感触。又到春季招聘季,我个人觉得更应该关注的来面试的人是不是个机灵的人,上进的人,重在sense,全栈需要啥都可以来了再学,想问下您对待鱼龙混杂的面试人员最看重什么?具体点说对15k以下的重视什么,对20k左右的重视什么,我们公司能招的就这两个档次。

:哈哈,好问题。我并没有唯一看重的东西。正确的说我会根据我这次面试的人定位是什么来决定我看重什么。比如说我知道我团队缺一个写代码的人,那么我就看重写代码的能力。机灵也好,上进也好,sense也好,可以其次。因为我不可能要求每个人都很有激情,而且事实上一个团队也不可能都很有激情。

你作为一个面试官或者管理者,你心里需要明白你到底要什么样子的人。或者说你当下需要什么样子的人,也许很多人会觉得这很残酷,难道你不为来面试的人成长和未来考虑么?那我只能说每个人位置不同,思考方式不同,这是没有办法的。我们是招人解决问题。

另外,钱的话我觉得不是衡量的标准,而是这个人的定位。比如如果就写代码,那么我觉得定位就是15-20,但如果有架构能力,那么就是25-30。如果有经验积累,又年轻,又有技术,又懂得怎么沟通,那么就更高。


问:最近加的部分群里,言论中为搭建appium会自动化之类感到莫名的骄傲不乏少数,而确实自动化相对功能测试的薪资颇高,浏览了拉勾的一些测试招聘,基本都能看到"熟用appium或其它测试工具"这类字眼。而我身边有一部分同事,竟然也在因为自己能跑起来Xcode-Instrument 的某个软件而津津乐道,难道工具的使用就是软件测试的核心?您又是怎么看待这种浮躁的心理? 稳健的基础构建大楼,我们还需要强化哪些?

:哈哈哈,看我文章。我文章中说到一句,我刚入行的时候就感觉软件测试行业原来是一个只要会用工具就可以年薪百万的岗位,后来发现我被骗了。(哭)浮躁心理没有办法,国内自从有这个行业开始就浮躁到现在。而随着现在选择越来越多,声音越来越多,浮躁只会与日俱增。不浪费时间就讨论这个问题了。我们控制不了别人,我们唯一能够控制的只有自己。

稳固的构建大楼其实:

  1. 底层还是测试的sense,case的设计,场景的理解,业务的深入理解,用户行为的理解;

  2. 上一层是代码基础,或者说是技术的一种理解。而不是某一种语言的理解;

  3. 上一层是工具使用,工具的原理理解,二次开发;

  4. 上一层是技术和业务架构思维;

  5. 上一层是看清行业趋势。

可惜的是现实中的测试大多大多这5点都不着边。现在让我思考的时间有限,所以可能有遗漏,但差不多方向是这样的。


(以上内容转自GitChat,版权归GitChat所有,转载请联系GitChat,微信号:GitChat,原文:《陈晔:谈谈对症下药的软件测试人员面试》