在软件工程中,当一个项目的需求明确之后,就会以需求文档的形式流转到技术团队。技术团队一般包括开发、测试两个角色,开发负责搭建工程,通过技术选型、系统分析、技术方案、编码、自测等步骤将需求实现,测试根据需求编写测试用例,或者通过编程做白盒测试,或者通过人工做黑盒测试,最终负责保障项目的上线质量。 就我从事的互联网行业来说,一般开发测试的比例在五比一到十比一之间,比如,我所在的大厂,一个20人的开发团队,根据业务复杂程度,配备的测试资源一般2~4个左右。 测试行业两极分化比较严重,目前中国软件工程领域90%以上的还是属于黑盒测试,优秀的白盒测试工程师很稀缺,一般也就在大厂那些复杂的应用场景中才能培养起来。大部分公司测试岗位的日常工作都是先理解需求,通过Xmind把用例分解清楚,然后人肉跑就可以了。极少数的测试具备编程能力和全局质量&风险视野,从整体业务稳定性的角度来看业务,并通过链路梳理、自动化测试、流程规范等抓手来让项目顺利上线、稳定运行。 像我所在的大厂,一般都是一个测试工程师带着几个测试外包负责一条业务的质量工作。测试外包负责黑盒测试,测试工程师负责梳理风险链路、制定项目流程规范、参与重要核心模块的黑盒测试、开发测试工具等。有那比较猛的,甚至每次需求讨论会都可以把PRD中的问题挑得一干二净,为项目的落地执行节省大量的沟通成本。当然,能力强待遇也会要求得高,白盒测试工程师的薪资水平不一定比同级别的开发工程师低。所以,对大多数中小公司来说,这样的测试工程师有一个就够了,让他带着一帮大帮黑盒测试支撑业务才是性价比最高的选择。 也正是因为这些原因,在中国互联网发展史上,当多次新的技术应用扑面而来的时候,都会出现开发工程师的大量短缺,却很少出现测试工程师的大量短缺。开发工程师的培养周期太长了,而黑盒测试占了绝大多数比例的测试工程师则相对容易得多,做上几周就熟了。 12年左右,移动互联网领域急速发展,很多非科班出身的人花上几千块钱参加个培训班,然后就能轻松找份手机App测试的工作。当时我在北京做手机App开发,好些人发现了这样的机会,都去参加培训然后应聘到移动互联网公司做黑盒测试。我周围就有好几对,男生做软件开发,女生以前可能是行政、会计等专业的,毕业后参加几个月的培训就被男生拉到自己公司做测试。沾了互联网普遍高薪的光,那时在北京,即使刚刚入职的测试新手,工资也有七、八千,远高于其它行业。 互联网公司中的测试岗位跟安全岗位很像,做的都是质量、风险类兜底性工作,可能做了大量工作来保障项目稳定运行,这时大家都无感,认为那是正常现象,也是他们应该做的。而一旦有质量问题时,大家的第一反应却是他们的工作没有做好。 由于工作的重要性往往被忽视,再加上大多数测试岗位的黑盒测试工作比较简单,至少在互联网行业中,运营、产品、开发才是核心角色,测试的重要性往往会被忽略。比如,我在做项目的时候,运营、产品想到一个idea之后会先问开发能否实现,以及成本如何,在讨论复杂问题时也往往会拉上技术做评估,免得讨论完成之后技术一句"没法实现",上学彻底白瞎了。至于测试,往往是项目需求真正细化完毕拉会议评审的时候才会叫上。 也正是由于上面这些原因,在待遇方面,开发岗位一般都是远大于测试岗位的。即使如此,测试工程师的工作强度却比开发工程师低不了多少。互联网行业讲究一个快速迭代、上线试错,研发部门基本上时时刻刻都是满负载运转,一个项目接一个项目的没完没了。如果对口的开发工程师技术水平比较强悍,设计技术方案时逻辑思考全面、自测充分、bug少,那测试可以跟着躺赢。如果开发工程师是个弱鸡,系统处处漏风,自测也不充分,交付到测试手里的项目随便跑跑用例就是一大堆bug,那就要跟着开发一起天天加班追进度了,等到项目上线时也是心惊胆战。 看到这里,我想我的观点表达得比较清楚了:如果你的目标是全能型的白盒测试工程师,那务必要去大厂,那里有复杂的质量保障需求场景,只要经过2、3年就可以将你锤炼出来。 但如果你的目标仅仅只是黑盒测试,那不管专业课程学得如何,只要软件产品用得多,再去参加个培训班学一学基本的套路就行了。等毕业之后,可以进中小型公司做测试工程师,也可以应聘到外包公司,然后被派驻到大厂,在大厂那些白盒测试工程师的带领之下每天人肉跑用例。