前言
入
软件测试行至今已经8年多,承领导们的信任与重用,同事的支持与信任,我的
职业发展算是相对较好,从入行到各类
测试技术岗位,再到测试总监,每一步都刚刚好。最近在自身职业发展瓶颈,人生十字路口,静坐反思,重新审视个人规划与测试人员发展的这个问题,问回自己:你为什么做软件测试工程师?胡思乱想之下有了此文。
一、软件测试起源
网上有一些经典的软件事故,大家感兴趣可以自己搜索一下,我搜了几个列举如下:
简单总结:软件出现缺陷(BUG)导致经济或其他损失,因此有了软件测试。
由此可知软件测试目的:发现缺陷(问题),发现至今未发现的缺陷(问题)。
注:有兴趣的可以去找找国内的两个事件:温州动车事件,2013年8·16光大证券乌龙指事件。
二、测试行业现状
每年测试人员大量涌入,但需求仍大于供给。
国内各种测试培训机构、软件测试网站的增多,质量意识的提升,软件测试人员已成为IT一个重要的职位,涌入的人也越来越多。但互联网+的概念,传统行业转型
互联网,公司业务量激增,创业风潮,人员流动等缺口依然会有。
测试在各公司地位不一。
通常分两种情况,一大多公司重生产岗位(研发等),测试属支撑部门,话语权低,而测试为软件最后出口,所以通常背锅(承担责任)会比较多,需要平常心,并积极主动推进流程优化。另一类,有成熟的质量体系的公司,会以产品质量为先,用户至上,会实际关注测试质量,相对是比较理想的公司。(其他变种类型暂不予参考)
测试人员能力参差不齐:
测试门槛低,入行容易,导致很多专业知识不够扎实,只懂得一些表面上测试技术。学习的技术浅且杂,多注重工具的使用,思想的培养建立较少,不关注工具为什么要用,何时用,仅仅是为了高薪资而学,为了KPI而推广。
SFRJ的技术总监就曾与我谈论过这个问题,我大约的观点是你招人的目的是什么,像之前我的团队有技术专家,也有偏重活跃气氛,组织活动,沟通管理等,咳咳,扯远了。
薪资差距较大:
拿1-3年软件测试的来说,低的2K-8K,高的8K-20K,各种因素影响:比如个人背景:名校毕业,硕士博士;比如地域企业:北上深广,华为BAT;比如测试专业领域:
自动化测试、
性能测试、
安全测试;比如创业风潮:互联网、无人机、金融、AI等。
所以努力提升自己,争取脱颖而出抢滩那20%专家精英的位置。
三、测试行业前景
回到
文章开头的问题:你为什么做软件测试工程师?这也是我面试招聘时常问的一个问题,梳理回答大约可以归为两类:
其一,大概意思是喜欢测试这个工作;
其二,IT工资高,想搞IT,但不会编程,测试门槛较低。
非常倾佩喜欢测试工作的同行们,我也是因为喜欢计算机,测试门槛低才加入测试大家庭。后面喜欢上享受测试带来的成就感,享受独自定位问题那种喜悦的心情。我简单梳理了几个软件测试职业的特点,以供大家参考。
软件测试职业特点:
· 入门快,薪酬高
· 学历门槛相对较低
· 市场需求大,就业竞争小
· 职业生涯寿命长,发展空间广阔
· 无性别歧视,女生有时胜过男生
· 软件测试基本内容
· 尽可能发现缺陷
· 尽早发现缺陷
· 提升发现缺陷的效率
· 软件测试岗位
软件测试工程师,部分公司提升为质量保障工程师,赋予了更多的工作职责,但我们今天主要讨论基本的工作。按我自己的理解,对上文工作内容与现有的技术职位做了下对应(仅举例但不限于以下职位)。
功能测试工程师,性能测试工程师,安全测试工程师等,根据业务的不同,比如WEB测试、H5测试、
APP测试、SDK测试、
接口测试等。
集成测试工程师,
白盒测试工程师,QA配置,资料审核等。
自动化测试工程师,测试开发工程师,测试工具开发等。
Findyou:
一般来说,3-5年是非常抢手的一波同学,相对新手多了一些经验,相对5年以上的能沉下心踏实做事。
当然技术不是以入行时间为标准的,但是你想每天从海量的简历筛选人员,HR或者司或多或少会有这样一个简单的门槛参考。也常有比如2年工作经验,会的内容甩5年的几条街。关键精力在哪,成就在哪。
今天逛了下几大招聘网站,深圳性能测试、安全测试现在基本18K+,自动化基本15K+,北京上海的更高,可以定时去各大招聘网站查看一下行情。
改天抽时间弄个数据爬虫,去招聘网站抓取分析一下出个报告。
四、测试职业规划
凡事预则立,不预则废。“先定个小目标,比如挣它一个亿”,比如"当上CEO迎娶白富美走上人生巅峰",然,人各有志,所追求的理想不同。无从下手时,我们先通过搜索引擎看看,看看其他人的建议。
职业规划(来源网络)
[1~2年],测试技能:熟悉整个测试过程及产品业务领域,学习和掌握自动测试工具,学习测试自动化编程技术;开发和执行测试脚本,承担
系统测试实施任务;学习编程语言、
操作系统、网络与
数据库方面的技能。
[3~4年],测试过程:深入了解测试过程,掌握测试过程设计及改进,参与软件工作产品的同行评审;进一步了解产品业务领域,改进测试自动化编程技术,能指导初级测试工程师;加强编程语言、操作系统、网络与数据库方面的技能。
[4~5年],测试组织工作:管理1~3名测试工程师,担任任务估算、管理及进度控制;进一步培养在软件
项目管理及支持工具方面的技能。
[5~6年],技术管理:管理4~8名测试工程师,提高任务估算、管理及进度控制能力,完成测试规划冰制定测试计划;研究测试的技术手段,保持使用项目指导及支持工具的技能;用大量的时间为其他测试工程师提供技术及过程方面的指导;开始与客户打交道并做演示推介。
[6~12年],测试管理:管理8名以上测试工程师,负责一个或多个项目的测试工作,与客户打交道并做演示推介;保持使用项目管理及支持工具的技能。
—出自《软件测试质量保证》
其实已经都非常详细的步骤了。需要有所发展取决于三点:业务技能、专业技能(测试技能)、管理技能。通过对自己这三方面的评估,综合选择自己要走的道路。以下是我简单做的一个发展路线:
测试岗位路线
管理:IT做管理,技术深度与广度都会有一定要求,基本管理技能为主,专业技能、业务技能为辅。管理者不懂技术,很难服众。因此,技术沉淀是必须的。在一步一步往上爬,人生目标指日可待。
技术:Findyou说技术在手,随辞随走!开玩笑的,但有技术不愁没工作,当然人品还是要的。
建议技术高薪方向:白盒测试、自动化测试、性能测试、安全测试,当然有机会走管理也别放过机会,毕竟管理薪资不低哈。
转岗其他路线
方向选择:很多入行测试只是过渡。由测试岗位的锻炼,涉及到软件各个岗位的接触。此时转岗容易不少。比如业务技能强、市场敏感度、洞察力厉害的建议产品经理、运营方向;比如喜欢编码加班,咳咳,是喜欢与机器打交道建议研发、运维方向等;喜欢与机器打交道的可以走运维、研发路线。喜欢与人沟通的可走销售、HR路线。
五、我的核心竞争力是什么?
原本是自己的思考,不知不觉写了这么多,这是我问自己的第二个问题?不想拘泥于各种模型,按思考与想到的方向随意列了几个点。
学历:肯定不是,大公司本科学历是硬性要求(最低标准),我如是211?985?硕士?博士?海归?,那肯定找个idea,大胆去路演融个资,自己搞公司。
过往经验:Maybe,8年、10年测试经验,相对有一些竞争力。
影响力:人脉比不过BAT,往上拓展相对不易,思想层次、长远眼光等必须得跟得上,这些年耳濡目染连爬带滚勉强能跟得上。横向拓展无,而之前精力投入到了工作,没时间,婉拒了第三方APP测试培训讲师的兼职,因此同行影响力无(同事另说)。
学习能力:Maybe,一直有学习的习惯,但碎片化的阅读掌握不深,造成知识面广而不精。与SFRJ的技术总监他给了我一个观点,“人精力有限,有精通两项技能是比较合理的规划,建议我走专家管理型”,我比较认同。
专业技能:Maybe,测试领域知识的在不断深入,测试思想的也在不断提升修正。当然为了专业性不再只是限于测试领域知识,需要了解开发语言缺陷、了解算法优劣、了解驱动硬件特性、了解各操作系统机制、优化流程制度、定制测试工具、及时预警风险等,因此,我还有很长的路要走。
管理技能:Maybe,虽一直在管理岗位混着,是否勉强入门不得而知,但起码带的团队能高效运作完成任务,离职率也很低。不过,对于彼得德鲁克的管理哲学,吴伯凡老师的中西文化,马云老师的大众励志等,形成自己的系统理论还有非常长的路。知识拓展固然重要,但学以致用才是王道。而能保证团队的正常运作生产是根本目的。
沟通能力:谁知?技术交流居多,闲扯也有,因处管理岗,现变得倾听居多。沟通技巧满大街都是,比如建立同理心什么的,虽然套路得人心,但IT厚实单纯的人占大多数,尽可能保持真心实意的沟通,才能问心无愧。
非常出色GWC的HR D(Franny)对我用能力素质模型进行了评估,评估给了适合管理方向。
我自己的梳理其实基本完成,也有了大致的方向与想法,期待今年的发展。
六、浅薄的建议
又是跳槽招聘季,咱们这行公认涨薪不如跳槽加的快。不建议频繁跳槽,履历不太好看,当然不排除有喜欢这类的公司。前面那句是废话,所以随心而为吧,下面给出的小小的建议,适用就采纳,不适用看完就丢!
跳槽原则:
要么符合你预定的规划发展路线,要么就高薪,否则没事不要乱跳,当然实在呆不下去另说。
面试建议:
理解透JD(职位描述),了解具体的工作内容,针对性准备知识点。
了解自己简历内容,基本技能知识点,过往项目,项目熟悉程度(要求画个架构图、流程图很常见)。
简单复习一下基本理论,功能、自动化、安全、性能。
背熟一俩个实例备用,比如你写有精通性能测试,写的哪个项目,具体执行:基本指标含义,性能标准,项目背景,如何制定计划,何时执行,报告输出等(调优这个太难,慢慢来)。如果你做假了,请做得专业一点,网上实例背熟吧,虽然我不建议如此做。
找找网上泄露出的面试题,看看招聘职位下其他应聘者的评论,去各QQ群里找找在这个公司的同行等。
为面试短时间了解一门开发语言: