1、软件测试的简单
众所周知,软件技术日益发展,从TIOBE的语言趋势发展可窥一二。
曾经的编程语言王者C/C++已被Java拉下神坛,而随着人工智能的兴起,Python则对王座发起了新一轮挑战。编程语言的生命周期潮起潮落,周期更迭,也伴随着软件开发应用的不断更新与迭代,软件开发人员不得不定期审视潮流趋势,适应时代的发展。
但是,在软件测试领域,时间似乎从70/80年代后就已经停滞了。即将进入21世纪的第3个10年,测试很多的做事方法与上个世纪几乎完全相同。Bill Hetzel在1972年出版的测试知识丛书至今仍然有非常重要的价值。James Whittaker在2002年首次出版的《How To Break Software》系列,至今仍被作为实用软件测试技术主要资源的代名词。
Bill Hetzel 著有 《Program Test Methods》
James Whittaker 著有《Exploratory Testing》 及 《How Google Test Software》。
确实,如果把70年代的测试人员穿越时空来到今日,他们的测试技巧依然能够应付现代软件测试。现在越来越多没有计算机基础的人,经过短期软件测试培训课程后,依然能进入软件测试的领域。甚至,我们直接从马路边雇一批人,他们第一天起就能够测试,并带来意想不到的收获。
测试真的那么简单吗?也许很多人真的认为测试很简单,导致很多学生在无法满足开发岗位需求时,退而求其次,选择测试岗位。
笔者有幸参加所在公司2020届应届毕业生测试岗位的招聘,笔者分享应届生在求职软件测试的简单与不简单。
2、软件测试笔试
笔者所在公司今年收到投递软件测试岗位的简历接近1000份,但在经历笔试的洗礼后,只有35%的通过率(满分100分,成绩不低于60分)。很显然,软件测试不简单。细究其原因,我们发现主要三个原因。
2.1 计算机基础知识薄弱
测试也是研发体系的一部分,是隶属于技术部门,所以计算机基础是必不可少的知识。很多学生在经历了3年的学习后,其知识体系依然是零散而不系统,知其然而不知其所以然。即便如此,在临近笔试,也毫无补救行动。针对此类同学,只能说“有缘再见”。
但是,笔者相信,对于大多数应届生而言,为了工作是可以付出平时120%甚至200%的干劲去奋斗的。所以,如果存在基础薄弱的同学,建议通过不断做题来巩固自己计算机相关的知识体系。
建议应届生到 牛客网 (https://www.nowcoder.com/intelligentTest) 强化计算机知识体系。
2.2 盲目海投简历
也许大家都信奉“不要把鸡蛋都放到一个篮子里”的理念。毫无疑问,这在一定程度上是对的,但是当这个“度”超出一定范围后,也许等待给我们的是一场灾难。
当你海投简历后,陆续收到了不同公司的笔试、面试,你始终疲于奔波于A公司宣讲会、B招聘会、C公司内推。一路的奔波让你缺少了总结与思考,甚至你会在这一路上遇到一幕又一幕的冷眼相待,作为尚未涉足社会的你,会作何感想,内心是否依旧充满激情?
人生重要的不是所站的位置,而是所朝的方向。找准自己职业方向,是选择软件开发岗,还是测试岗(含测试开发),抑或运维岗,或者是产品岗。
在任一个时间范围内,把应聘公司按意愿程度分成3个等级:理想型、可接受型、备胎型。3个等级内的队列动态变化,当完成后更新该等级内的公司名单。
理想型公司是我们所期望的,为了提高命中率,可以把与该公司相似(定位或规模)的作为备胎,譬如对腾讯比较感兴趣,那么可以把阿里做为备胎(规模)。如对华为感兴趣,那么可以把中兴作为备胎(定位)。
备胎型公司除了为理想型做准备外,还可以选择要求相对较低的公司。求职之路漫漫远兮,我们需要不断给自己激励,才能让自己长久坚持下去,直到拿到自己心仪的offer。
备胎型公司的容量可以调整为2,以供理想型服务以及自我激励服务。
2.3 对软件测试缺乏认知
软件测试的体系是非常广泛的,如果你单方面从网上获取软件测试的知识,也许你会陷入知识碎片的陷阱当中,甚至会产生前后知识存在自相矛盾的困惑。所以,对软件测试最好的学习方法是 读书 , 读软件测试相关的书籍。
推荐书籍:
《软件测试》
《软件测试经验与教训》
《Google软件测试之道》
《探索性软件测试》
《软件测试的艺术》
3、软件测试面试
经历成功的笔试洗礼后,应聘者将面临真正的考验:(多轮)面试。简历是呈现给面试官的第一印象,是面试官调查应聘者的重要途径。应聘者在面试过程中的谈吐是让面试能否愉快开展的重要指标。最终,酒香不怕巷子深,应聘者的硬实力是决定面试成败的关键。
3.1 简历
3.1.1 简历样式
对于部分公司提供在线招聘网站,统一了简历模板,我们只需填充内容。对于不提供在线招聘网站的公司,我们可以参考下面的模板来完成自己的简历。
3.1.2 简历内容
在面试过程中,简历内容几乎占据所有的面试内容。作为面试官,笔者会认为应聘者的最闪光点都体现在简历当中,所以会从简历中挖掘打动笔者的内容。面试官最重要的职责是发现应聘者哪里符合岗位要求,而不是去发现哪里不符合。
简历内容是对应聘者过往的一种浓缩,是展示个人的绝佳位置。
1、 简历是引导面试官的工具
当你在简历上描述了与自己关系不大的内容,或者与自身不符的经历,这相当于自掘坟墓。首先,面试官会认为你对此次面试的不尊重,然后是对你个人能力的质疑。
在项目经历中,尽多地描述与应聘岗位相当的能力。
譬如,有一位学生写到:在某公司的担任后台开发,同时开发xxx工具大大提升了测试效率。这一点内容就非常吸引我,吸引的并不是后台开发经历,而是xxx工具 对测试效率的提升。当他说到,人工测试难以构造复杂场景(如并发、服务器负载)时,需要用技术的手段来仿真模拟,达到一样的测试效果。
这时候我就会对他产生好感,他不仅在技术上有所猎及,对测试也颇有见解。也许,这是他在简历上给的我诱饵。但,何乐而不为呢?
2、 没有项目怎么办?
我们要始终坚信,办法总比困难多。有些同学可能缺少在公司或导师项目中实习,认为自己会处于劣势当中。
毫无疑问,这是当然的!因为你没有切身的经历,是难以得到相关的经验。
那如何补救呢?没有项目,那就创造项目!
有一位学生描述:独立完成 xxx自动化测试框架 的搭建(Github地址:xxxxx)。这何尝不是加分项呢?首先,这里体现了应聘者的自主学习的能力,其次他在搭建自动化测试框架的过程中,会遇到开发与测试的问题,甚至会有人使用他的框架,并提出Issue,他会尝试解决并再次发布。
3、 锦上添花
应聘者不仅要把技术相关的能力写到简历上去,甚至可以把个人的业余爱好写上去。但前提是,业务爱好所产生的的价值能为此次面试带来价值。
有一位学生描述:爱好摄影,并搭建网站 www.xxxx.com 维护与发布。由于笔者所在公司有涉及到影像领域,打开网站发现,应聘者的摄影作品质量都非常高。这让笔者对他的摄影爱好产生浓厚兴趣,进而询问他对拍照、成像等基础问题的理解。
3.2 自我介绍
自我介绍的内容并不重要,重要的是在自我介绍过程中,是否能够提供一个安静的环境,让面试官能够愉悦地倾听应聘者的内容。
自我介绍内容提前拟定一份通用的文字描述即可,内容包括并不限于个人教育背景、项目经验、性格特长、个人对应聘公司的期望等。
让面试官愉悦地倾听体现在:声音洪亮,吐字清晰,说话流畅,精神面貌。
3.3 项目经验
面试官一般会让应聘者介绍项目经历,我们可以按照采用三段论:
- 言简意赅表述项目的背景及意义
- 说明项目所使用的技术栈
- 阐述自己在项目中的贡献
面试官的提问重点往往集中在(2)和(3)。针对(2),不能简单停留在只知道技术栈的名词,而不去深入了解技术细节。针对(3),用事实说话(这部分内容往往不体现在简历中),用自己在项目中遇到的案例来去阐述自己的贡献。
譬如某同学曾说到:在实验室项目初期,5人团队在导师的指导下,各司其职,一切看起来运转顺畅。突然导师因为其他原因无暇顾及我们项目,大家都像断线的风筝一样,随处飘荡。我主动承担起和导师的沟通,同步项目计划,拆解开发任务,最后让团队能够继续有条不紊地运作起来。
该同学并没有过多描述自己在项目中的开发能力(恰恰这是他的短板),而是通过项目管理能力来吸引面试官,突出自己在项目杂乱的情况下如何让团队重获生机。
3.4 职业规划
很多同学在投递软件测试岗位的时候,都是因为自己无法匹配开发岗位,退而求其次选择了测试岗位。当然,这无可厚非。
但是,当面试官询问对个人职业规划时,强调个人对开发岗位的无奈是一种悲观的情绪,是一种消极的态度。这会对面试官留下不好的印象。甚至遇到一些面试者,直言不讳自己想借测试岗位跳到开发岗位。对此,我只能表以“祝你好运”。
首先,笔者在工作一年后,主管主动让我转到开发岗,我选择了坚持测试岗位。其次,在笔者近10年的工作经历上来看,鲜有成功转型的经验。
没有卑微的岗位,只有低贱的眼光。
如果你的兴趣真的是开发岗位,那么请你坚持。如果你仅凭能力不足而选择测试,那么请你好好了解它,善待它,深入它。这样,职业规划才会拨云见日。
3.5 奇葩问题
1、 逻辑思维
该类问题通常没有标准答案,需要结合应聘公司的差异作出调整,并且多开脑洞,多异想天开,让自己更像是一个创新者。
常见问题:
(1)如果你是xxx公司产品经理,你会设计什么产品?
(2)深圳有多少居住人口?
(3)如何测试一个电梯?
(4)请说说你生活中最牛逼的事情。
(5)请提供5中方法测算汽车剩余汽油/电量。
(6)拿到一部新手机,你会怎么测试它?
2、 时下热点
该类问题主要考察应聘者的三观是否端正,价值取向是否积极。
常见问题:
(1)你如何看待香港大规模罢工游行?
(2)奢侈品牌持续暴露辱华事件说明了什么?
(3)华为鸿蒙操作系统有什么意义?
(4)5G能给我们带来什么变革?
(5)如何看待中美贸易战?
3.6 对应聘公司的认识
当你投递简历到应聘公司后,说明你对该公司产生了一定的兴趣,那么请继续进一步了解。了解该公司的愿景与使命,了解该公司的核心价值观,了解该公司的业务范围,了解该公司的行业趋势,了解应聘岗位能如何帮助公司提速。
遇到一位同学说:我知道贵公司是xxx领域的领先者,其他的了解不是太多。这位的同学显然对应聘公司了解不足,可能该问题无足轻重,但是在能力相当时,爱慕者会更受欢迎。
模拟面试是非常有价值的实践,让同学、室友模拟成面试官,也让自己体验面试官,知己知彼去了解双方的意图,进而满足、迎合对方的口味。
4、软件测试的知识图谱
为了更好的应聘软件测试岗位,根据冰山模型,把人的素质划分为三个层次:天赋、能力和知识技能。
4.1 天赋
天赋是由基因,家庭环境,童年经历等决定,长期的积累所产生的价值观、性格特质和动机,它在潜移默化中影响着我们。对天赋的考核,更多会体现在奇葩问题当中。
- 价值观/动机
- 对产品的敏感度
- 对缺陷的敏感度
4.2 能力
一千个读者,一千个哈姆雷特。由于天赋(价值观、性格特质、动机)的差异,导致每个人对任一事物的认知是千差万别的。同样,对于知识与技能的接受程度,也是因人而异。为此,我们需要不断地提高沟通表达能力、逻辑思维能力、学习能力,从而提高自身在职场上更深远的价值。
- 沟通表达能力
- 逻辑思维能力
- 学习能力
4.3 知识与技能
技能是完成某项工作或任务所具备的技术,知识是在某一领域方面的积累。软件测试处于计算机行业当中,入门基础的计算机知识与技能是我们的根本,合理运用办公工具是我们的生存必备,而掌握软件工程及软件测试相关的知识与技能,则是我们在软件测试岗位上的制胜法宝。
4.3.1 计算机基础
- 计算机原理
- 操作系统
- 计算机网络
- 数据库
- 算法与数据结构
4.3.2 软件工程
- 软件开发流程
- UML建模
- 软件编程(Java或Python)
4.3.3 软件测试
- 软件测试基础
- 软件测试分类
- 黑盒测试设计方法
5、小结
软件测试是简单的,因为马路上随便雇佣一个人真的就能带来成效。软件测试又是不简单的,因为软件测试不仅仅是对着被测对象点点点操作,还有其他更专业的测试活动。
软件测试是简单的,因为测试体系内的知识结构并未发生根本性改变。软件测试又是不简单的,因为大学授予软件测试课程少之又少,学生对测试的实战经验匮乏。
软件测试是简单的,随着互联网的发展,我们获取知识的途径是越来越简单,我们掌握一门知识的成本越来越低。软件测试又是不简单的,我们会被互联网的娱乐世界给吸引。
软件测试是简单的,不管技术如何发展,都可以当做黑盒来进行测试。软件测试又是不简单的,测试需要适应社会与技术的变化,适应业务的挑战,甚至出现精细化岗位,测试开发、性能测试、安全性测试等应运而生。
软件测试是简单的,面试官并不是找茬,而是在发现我们的亮点。软件测试又是不简单的,我们要去制造我们的亮点,让我们的技能得以支撑应聘公司的要求。