本
文
摘
要
有一说一,不夸大,不谦卑 1 软件测试工程师只不过是一个常规IT岗位 与开发工程师,运维,实施等一样都属于以技术型岗位。既然开发工程师有人做,测试,运维,实施也有人做。在国内,对于正式的测试工程师员工来说,工资大约会比开发略低,我的感觉是低20%左右。 由于国内企业内,普遍开发的地位是最高的,而其他工程师多少会感觉到受到排挤(当然,这也要分公司)。 这一方面是因为国内IT行业发展时间不够,体制不够完备,风险意识普遍不足。另一方面,是因为国内创业公司死的太快,一个公司先需要产品经理,再需要开发和销售,之后才是测试和运维。 所以在外企,或者大厂中的测试工程师地位普遍更高,工作氛围也更舒服一些。 而总体看,测试也是必不可少的岗位。 2 测试需要哪些能力 目前比较火的岗位是测试开发,我们就说说这个岗位。 首先,测试基础概念是必须的。有很多人不知道bug是什么,风险来源于哪里,什么是scrum和敏捷,什么是软件工程生命周期,什么是回归,就说自己能去做测试,这是天大的笑话。 很遗憾的是,测试概念在多年的时间以内都很少有一个固定的体系,这也是测试工作灵活多变的体现。 其次,开发能力。开发能力包含两部分:一部分是对测试工具,框架,脚本的开发,要求灵活,易用,易懂。另一部分是对软件本身的开发技术理解,例如操作系统,数据库,网络,http协议等。 有很多人认为测试需要比开发更懂代码,这在某种层面上来说是正确的,但不全面。因为现在单独的模块(或者用比较流行的概念,叫做微服务),是由开发自己来进行单元测试的,而测试更是在负责做集成测试,每一个模块对测试来说都是黑盒的。理论上测试可以一行代码都不懂,但对系统风险如何评估要比开发要强,比如如何保障回归,如何评估接口协议,如何评估系统性能瓶颈等。 而后,其他能力就由测试所处的团队决定,测试通常是团队缺什么就担任什么角色。 例如一个缺产品经理的团队,测试就需要协助评审产品文档,甚至由测试来出; 如果一个团队缺流程管理,测试可能就去做项目管理; 如果缺运维,测试可能会去搞环境。 这是因为测试是真正贯穿软件工程生命周期,并且最终交付的角色。所以哪里跑的不顺,都会让测试的工作很难做。不行,就要自己上,自己补位。 3 未来测试的技能要求 我们都知道,devops是运维工程师在最近十年做的变革尝试。而测试方面也有一些革新方向,我列举一些自己看到的: 首先,代码库/流水线/自动化部署/自动化测试/流程管理软件的平台化打通。一个需求,等于一次迭代,等于一个新功能代码分支并入主线,然后通过一次标准部署动作,经过一次测试动作,最终被准许发布。概念对齐,自动触发,报警清晰。 这是测试角色多元化能力和职责的升华体现。 其次,线上监控能力以及灰度发布能力。对于大厂的产品线来说,线上量级巨大,除了在产品上线发布之前进行测试之外,在线上进行灰度发布与监控也是非常重要的质量保障手段。 与此相关的还有流量录制与回放。 然后,让我们来看看google是如何做测试的。 在google,真正做业务测试是开发该功能开发自身,而测试类似于顾问和专家,提供测试工具,评估开发风险和可测性。 这就要求测试对系统的整体熟悉能力,要强于开发;并且还具备成体系的测试解决方案和平台,来让开发快速开展测试工作。 要注意的是,测试从来都不一定需要专职人员,只需要有这个职能。开发或者产品经理都可以做为测试职能而出现。 最后,我们来聊一下测试的未来。对于国内企业,整体来说,我是谨慎乐观的。 我们可以把国外的IT企业做例子,视作十年后或者二十年后的国内企业形态。 首先,测试的比例会有一定的上涨,测试地位也会提高。但这一点的前提是国内IT行业发展放缓,或者出现领域整合而出现大型公司。如我前面所说,节奏变缓对测试有利,创业型的,几年就死的公司里面,测试的日子会很苦。 而发展变缓,领域整合是在进行中的一个趋势。 其次,测试自身体系化建设,测试行业概念和规范的统一。很显然这方面业内进展并不快,甚至测试培训机构都没有普遍的公信力。这我也很无奈,也对这方面的未来并不抱乐观态度。 再次,google测试的理念,实际上是意图消灭所有业务测试,这其实会导致测试岗位的缩水。但是要注意的是,google模式中的测试专家,在国内也只能由目前的测试工程师演化而来,不可能是其他角色。同时,google模式目前也没有广泛用于外企。 最后,说一句题外话。 如果认为技术能力不够,做不了开发,就尝试用测试或者产品经理作为进入IT的突破口,这是很愚蠢的。真正适合你的工作,取决于你的性格,而不是能力。 测试天生要求有质疑精神,有风险敏感度,有责任感,能把关,会沟通。 如果你性格不适合测试,适合开发,那你就去把开发技术磨炼好,然后去好好地做个开发; 做测试不是你们技术差,又想做计算机领域的突破口。 做测试只能是因为,你喜欢。