由于各种原因,今年进入三月份之后,我就开始着手换工作。出于个人习惯,我每次换工作的时候都会把业界知名的公司都给面一遍,一是为了找到更好的机会,另一个也是收集一下现在业务同仁正在做的东西和使用的技术,以更好地指导自己提升相应的能力。下面我就把最近了解的情况总结一下,做测试,测试开发的同学也可以借鉴一下。
一, 完全的功能测试人员正在退出舞台
从测试这个行业被大家认可时起,有不少有志之士投入于测试行业。不论是通过自己学习,积极转行,还是通过社会上各种培训机构来转行,最终的结果就是大量的测试人员进入到互联网相关的各个行业。当时的情况确实一片大好,进入这个行业后薪资待遇普通提高了不少。可是经过这几年的发展,社会对测试人员要求越来越高:不管你工作了几年,如果你仅仅只会功能测试,测试工具的使用或是再高级一点儿,在公司现在的平台或框架下写自动化测试用例的话,几乎不能通过一面面试。功能测试目前是校招生,刚刚工作的人的舞台,那些在社会上工作了几年的测试人员,从工资待遇,企业期望等方面来考虑都要求你退出舞台了。
二, 技术要求越来越精深
在测试技术方面,现在要求越来越精深了。先前的测试开发人员,能搭建自动化测试工程,持续化集成框架,使用开源的框架解决工作中遇到的问题等技能就相当不错了,而且能找到比较满意的工作。而目前很多企业面试的时候,如果招的是高级测试开发,资深测试开发的话,要求不仅仅是常用的测试框架的使用,开发相关的框架如 Spring,开发技术多线程,分步式,其他如 mysql, mongodb, redis 也要会使用。越来越接近于开发的要求,有的甚至要求更高,一个岗位多种技能,全栈式解决问题。
三, 注重解决问题的方案而不是细节
在要求测试开发人员技术更加精深的同时,对于高级别的测试开发人员更要求解决问题的方案,考虑问题的眼界。如一个测试流程就需要考虑以下问题:(1)需求测试阶段(2)开发技术评审(3)测试用例设计(4)测试方案选择与测试验收(5)项目流程控制(6)项目问题总结与分析。而不是以往的一轮测试,二轮测试,bug 验证,上线及回归测试等流程了。在测试一个需求的时候,如测试一个新的 App,就需要从这几方面考虑:(1)app 的功能与交互(2)app 的性能,兼容性相关(3)app UI 自动化(4)接口或是服务的自动化,安全性与监控等(5)底层数据 mysql,redis 等验证与监控。从这些问题出发,我们需要不断培养自己解决问题的方法,开阔眼界,而这又不是一朝一夕就能提高的。
四,工作经验注重切合实际的项目
在我们的求职简历中肯定会写不少项目,在以往的培训机构出来或是在工作中没有真实参与项目的时候,也会虚拟不少项目经验。而现在招聘过程中,大家更加注重真实有效的项目,像物流管理系统,学生管理系统,简单的自动化测试项目都已经过时了。因为他们会让你解释项目流程,代码架构,设计目的和使用效果,如果你的项目经验过时,或是虚构出来的项目,肯定过不了关的。建议还是学习与社会结合度高的技术,踏踏实实地做项目,积累真实有效的项目经验才是王道。
针对上面的这些现状,我们需要做的最重要的事情就是不断地提升自己的能力。但是也不能盲目,要有目的和针对情况,否则会事倍功半。
一, 了解测试行业的技术走向
测试行业如同时尚界,主题元素就那么多,可是每天有不同的流行风格。主题包括功能测试,自动化测试,性能测试,安全测试,持续化集成,测试平台的开发;技术则包括语言类 java,python,shell,ruby,go 等等,框架类 webdriver,appium,testNG 以及其他流行度不高,或是二次封装等等。以我个人了解,12-14 年比较流行自动化测试,接口自动化测试,Web UI 自动化测试以及后来手机 app 的自动化测试;15-17 年比较流程各种测试平台的开发,整合各个流程中的资源形成一个个测试体系;17 年下半年到现在,由于 docker 技术的成熟,持续化集成,持续交付,Devops 开始流程了起来,并逐渐出现测试由响应转变成支持的角色,通过提供测试服务,方案,工具等支持开发和产品进行自测的趋势。
二, 以市场需求为导向,针对性地学习
我们提升技术除了为单纯的追求新技术的个人兴趣,大部分还是为了涨工资,争取更多的机会。所以就不能盲目,一方面要了解业界技术走向,另一方面要有方法。目前通过参加培训班来提升自己的人比较多,那在选择培训班的时候就要多关注一下他们的课程,有没有与新技术相结合?有没有实用的项目供实训?如果内容过时,项目简单,还是不要花费那个时间和金钱了。还有就是自己主动学习,多关注一下开源社区,我们测试在使用技术的时候一定要注重时效性,投入产出比等,使用开源代码是首要选择。还要了解新技术,可能新技术目前用不到,但是社会发展总是向前的,不及时更新自己的知识体系,会在不知不觉中落伍。
三, 准确定位,步步为营
在了解了外面行业发展,技术走向的前提下,还要好好地审视一下自己。目前我都会哪些与业界需求相关的技术?哪些是我的弱项?以我现在的水平,在各大公司能定个什么级别?如果我要提升,需要补充什么能力?考虑好这些问题才是你行动的方面。就测试行业而言,大概发展路如下,仅供参考:
(1)功能测试(1 到 2 年):学习基本的测试流程,掌握相关的测试工具的使用,问题定位方法,项目跟进的策略。
(2)自动化测试与测试开发(1 到 2 年):借助于语言来解决遇到的问题,会使用开源的框架搭建接口,UI 自动化测试工程,能使用 Jenkins 做持续化集成。
(3)高级测试开发(时间不定):会开发测试平台,能系统地解决问题或是具有自己独特的解决问题的思路。此时有广度和深度两个方向,广度就要系统地考虑和解决问题,全面了解测试相关的技术与方案,能快速地把新的技术落实到实处;深度就是有自己专项的必杀技能,可以帮助开发优化代码,提高效率等等。高级测试开发水比较深,工作年限也不定。
(4)资深测试开发或是测试架构师(时间不定):全面解决测试遇到的问题,时刻关注新技术;从团队建设,技术方案设计,整个公司的发展,同行业的发展等方面或是角度来考虑问题。目前好像也没有太清晰的界定,不同的公司定义这个级别的标准也不一样的。
以上是我最近面试过程中遇到的一些问题及总结,现在归纳一下用以指导我的后续工作及技术的学习。不管什么情况下,都不能闭门造车,关注新技术,新方案,不停地给自己加油,提升自己相应的能力,与时代同步,才能在工作中偶尔任性一把!