首先要说的是,行业这两年正在发生变化。业内主要出现这么几个趋势:
1.表面看似"衰落",内部在快速迭代;
2.人员两极分化,只会手工的吸收进入外包,业内基本要求是会性能和自动化,进而往测开发展;
3.进入软件测试的门槛在不断增加,技术门槛和学历门槛;
4.更多的研发进入测试领域;
5.测试工程师的薪资在不断增加。
说一下作为一个测试工程师,自己的“技能树”应该如何点亮:
身为一名合格的测试工程师,是需要具备以下技能的:
· 测试基础理论/测试设计能力
· 业务知识
· 行业技术知识
· 数据库
· 掌握编程语言
· 搞定自动化测试
· 质量流程管理
测试基础理论/测试设计能力
比如说,边界值分析、等价类划分、因果图、判定表、正交实验设计等,这些基本的测试基础,科学的设计方法能够很好的规范我们的行为,从而帮我们理清思路和提升效率。很多人会觉得简答,从而忽视基础的牢固程度,往往最基础的地方,最难做到精通。
业务知识
这个看起来很虚,貌似没有具体的知识点,但是做过测试的都知道,往往这部分是非常重要的。如果不懂得业务知识,那就是蛮干和瞎干。作为一个测试人员,最应该的是从用户的角度去思考问题,而不是开发这边,找到核心业务和功能,然后划分测试优先级,定级缺陷,另外尤其对于自动化也是非常重要。举个例子,你只有掌握了业务的特性,才能够用自动化的手段去首先覆盖哪些场景,把宝贵的自动化资源投入到最重要的地方。
行业技术知识
说到行业知识就海了去了。并不是我我们会一点测试方法,会运行个脚本,使用个框架就完事了,要么说测试要求涉猎的地方比较广呢,而且还得要求你精通。比如前端的技术栈、API设计、后端服务器、数据库、服务架构等,如果这些知识都能够打通,在面试的时候,面试官问你一个问题,你是能够以点带面的去阐述的,体现出来你绝对是一个优秀的测试工程师。
数据库
无论你是做自动化和手工测试,都要进行数据效验,SQL语言是测试工程师必会的技能之一,掌握SQL语言,然后在数据库找到需要的数据,这个能力是必须具备的。
掌握编程语言
测试不写代码?那不叫测试工程师。特别是做测试开发来说,要从代码层就开始进行质量把控,所以掌握语言的话,能够让你读懂代码,也能让你直接定位缺陷,同时更早的去预估风险和难点。另一个方面就是自动化测试,去驾驭各种自动化测试框架以及用例的开发。
搞定自动化测试
对于UI自动化来说,掌握selenium和appium,非常的重要,尤其是移动端的appium,企业的重视程度更高,基本思路都是定位元素,然后操作元素,接着获得反馈,最后用测试框架去管理测试用例。
另外对于接口自动化来说,从投入产出比来说,比UI自动化有很多独特的优势,比如运行速率高,开发和维护成本低,而且可以和开发代码同步开发。简单来说,就是通过模拟浏览器,发送请求实现接口的调用,比较返回值与期望值,验证结果。
质量流程管理
最后要说的就是质量管理了,对于测试人员来说,并不是单纯的去做测试,而是负责业务的质量保证。
· 作为 DevOps 关键角色,未来的软件测试工程师和质量人员必须同时具备一定的开发和运维能力;
· 测试人员会更深入介入开发工作,通过“测试左移”,提前与开发人员一起制定测试计划,推动代码评审、代码审计、单元测试、自动化冒烟测试、测试精准化分析以及研发自测等来保证研发阶段的质量;
· 另外,测试人员会也会参与配置部署,将自动化测试用例配置到持续交付链中,并通过“测试右移”,全流程监控发布后的应用质量。