互联网新趋势和新要求的推动下,测试行业也在不知不觉中发生着非常大的改变,从早些年的懵懂发展,到大多数高校设立软件测试专业,再到近几年各种测试培训盛行。
如果说早期软件测试行业还是一个风口,随着转行人员及毕业的大学生疯狂地涌入,目前软件测试行业的“缺口”已经基本饱和,最基础的功能测试的岗位需求已经越来越少。软件测试行业的门槛,也从真正的零基础,到现在的要求具备计算机专业能力(包括但不限于编程能力),软件测试在企业中,特别是在互联网行业的企业中,也从可有可无发展到不可或缺。
如果把测试行业按照发展时期来分,可分为以下2个阶段:
1)2010年以前,在绝大多数企业中,测试实践的重心都放在系统功能的验收阶段,测试人员的主要工作基本都围绕着基于业务的黑盒测试,对编码能力、系统理解能力要求不多;
2)2010年后,随着互联网产品的快速发展,各行各业对软件质量的强需求,以及大数据、云计算、AI人工智能等前沿技术的涌入,传统的测试工作模式和工作范围越来越无法满足行业的需要和产品的质量要求。
这一点在企业的用人招聘上表现得尤为突出,如今对于一二线互联网企业的测试招聘者而言,想找到一个合适的人选非常艰难。同样,对于测试求职者而言,会发现应聘要求也越来越严苛,除了学历(现在基本都要求211或985)、年龄、项目经验,还需要具备代码设计能力、软件架构能力、学习创新能力、较强的沟通能力、解决问题能力等。
但即便如此,仍有大量的测试人员依旧处在石器时代,过着茹毛饮血、敲敲打打(停留在功能测试的“点点点”)的日子,最终导致人才供求难以实现平衡,这从侧面也反映出国内大部分测试人员存在的问题。
1.功能测试关注面比较窄
从产品质量来讲,不管测试的是PC端、Web端、还是App端的产品,功能测试都是基础。
虽然也会有相关的测试流程,如需求分析、测试用例编写、用例评审、提测验收、功能测试、Bug回归等,但是很多测试人员只关注自己的需求,而不关注这个需求在产品的整个生命周期中的作用,缺乏产品的整体考量,导致在参与大型产品项目开发或与多部门进行合作时,不知如何应对。
例如,在对一款App产品进行测试时,测试人员可能只会考虑App的功能本身,而对接口调用传递、服务组件的测试及后端数据的校验缺乏有效的关注。
2.过于追求测试工具的使用
最近几年,随着开源社区的流行,绝大部分行业中共存的问题,在开源社区中都能找到相应的解决方案或处理问题的工具。所以很多测试人员抱着只要学会了这些测试工具,就能解决测试工作中所有问题的想法。
在测试工具的应用上缺乏尝试和创新,要么只了解公司现有的框架,要么只在公司现在的框架上编写用例,而不去了解整体框架的工作原理。或者盲目选择市面上现有的开源测试工具,仅仅满足于使用,而不去了解为什么要这么用、还有没有其他相关的工具、这个工具是如何解决我们的问题的、这个工具背后的实现原理又是什么。
在提及这个问题时笔者不禁联想到,很早之前华为在推行IPD组织变革时的一些思想,原文是这样说的:“华为靠IBM的咨询,成功推进了IPD的组织变革。
不仅仅靠任正非要求的对IPD的‘先僵化、后优化、再固化’,更重要的是华为掌握了咨询公司提供管理解决方案背后的管理本质,管理本质不是咨询公司提供的管理解决方案,而是管理解决方案背后的优秀经营思维,通过掌握优秀管理模式背后的优秀经营思维,然后根据自己企业的实际情况再次设计出相应的管理解决方案。”
在我们借用测试工具、测试框架来解决实际的工作问题时,虽然具备工具化、工程化思维固然重要,但是更重要的是要掌握工具解决问题背后的本质和思想。
3.企业人员空缺仍较多,但求职者能力达标少
这个点可能会刺痛一些读者,但正因如此我们才更应该直面当前的不足。从近几年各行各业企业的招聘情况来看,企业对测试人员的要求越来越高,仅仅响应需求的功能测试人员基本饱和。对于通过社招渠道找工作的人,基本都要求其具有一定的自动化测试或编写代码经验,能解决在工作过程中遇到的问题。换句话说,企业更需要编码能力较强、能参与公司相关测试开发的人员。
不少测试人员在面试过程中会被要求做编程题,例如单链表逆序、二叉树遍历、日志过滤等。这一方面是看面试者的编码能力如何,另一方面也能从编码习惯来看面试者有没有参加过大型的项目开发。再者还会给一个具体的问题,让面试者来给出解决方案。
例如,现在有一个全新的App,如果让你负责测试,你会实施哪些测试方案?不像以前那样做个逻辑题或写个测试用例就行了。这个变化也预示着企业现在越来越偏爱那些能帮助团队解决实际问题、多方位发展的复合型测试人才。
4.资深测试开发人员、测试架构师稀缺
测试行业不断发展,已经呈现出严重的两极分化势态:
1)一边是资深的测试大牛,属于全栈复合型人才,这一类人员在行业中较为稀少。一是由于行业原因,代码能力强、有架构经验的人员一般都在开发部门;二是要求高,资深测试开发工程师、测试架构师不仅要精通测试相关的技能,还要会前端设计、服务端开发等,几乎是全栈工程师。
2)另一边是测试小白,即便有些在测试行业中已经摸爬滚打了几年,但仍然还是停留在只会业务功能测试的这个阶段。而针对这类测试人员,除了一些安于现状的人,大多数人其实都还是想学习、想进步的,只是不知道学习方向、学习方法。
但不管是哪种情况,对于企业而言,想快速发展自己的业务,必须有一个强大的测试团队,通过一系列的质量保障手段,如引入CI、CD及其他的手段来促进项目的快速迭代与交付。这就要求相关的测试工程师要能从多方面来考虑并解决问题,不仅要考虑项目的实施成本,还要考虑测试、开发、产品甚至用户等,同时要与公司的发展前景及方向相切合,并能很好地为之服务。
拥有这些能力的测试人才在公司都是较为吃香的,每年招聘季也就那么几个人会进入人才市场流通,而且很快就能找到工作,这是每个测试人员的努力方向,只有具备了相应的实力,才有资格向企业要求你期望的回报。
上面四点只是测试行业大部分现状的一个缩影,并不全面,从另一个角度看,测试行业正在进入一个全新的阶段,表现出全新的特点。
1.纯功能测试人员正在退出舞台
从测试行业被广泛认可时起,不论是通过自学,还是通过培训机构培训,大量测试人员最后都进入互联网的各个行业中,刚开始的情况一片大好,经过几年快速发展后,企业对测试人员的要求越来越高。不管工作了几年,如果你仅仅只会功能测试、测试工具的使用,或者只会在公司现有的平台、框架下写写自动化测试用例,则几乎是无法适应大部分企业的需求的。
2.对测试能力要求越来越综合
随着功能测试人员逐渐退出测试行业,企业对测试人员的能力要求也越来越偏向全方位化,在测试技术方面,随着互联网新技术越来越多,对测试人员的技术要求也越来越精、越来越广。
先前的测试工程师、测试开发工程师,能搭建自动化测试框架、持续集成框架、使用开源的框架解决工作中遇到的问题就合格了。而现在很多企业在招聘面试的时候,特别是针对测试开发岗位,要求应聘者不仅要掌握常用的测试框架的使用,而且还要具有一点开发技术、数据库技术和架构能力。越来越接近开发岗位的要求,有的甚至要求更高。