做自动化测试后悔吗?

后悔,真的后悔!

后悔没有早点学.....


虽然到处都在散播35+的焦虑,姑且信之,那么反问你,如果你30岁了,那么给你5年,能够在某个领域成为专家呢?希望你能够在焦虑的时代静下心来思考一下职业的规划。文章可能有点长,预计阅读时间8分钟,希望在碎片化知识时代能够引起你的短暂思考。

先说一下作为一个测试工程师,自己的“技能树”应该如何点亮:

 

看到这些,你还会说测试学的简单吗?

身为一名合格的测试工程师,是需要具备以下技能的:

* 测试基础理论/测试设计能力
* 业务知识
* 行业技术知识
* 数据库
* 掌握编程语言
* 搞定自动化测试
* 质量流程管理
测试基础理论/测试设计能力


比如说,边界值分析、等价类划分、因果图、判定表、正交实验设计等,这些基本的测试基础,科学的设计方法能够很好的规范我们的行为,从而帮我们理清思路和提升效率。很多人会觉得简答,从而忽视基础的牢固程度,往往最基础的地方,最难做到精通。

业务知识


这个看起来很虚,貌似没有具体的知识点,但是做过测试的都知道,往往这部分是非常重要的。如果不懂得业务知识,那就是蛮干和瞎干。作为一个测试人员,最应该的是从用户的角度去思考问题,而不是开发这边,找到核心业务和功能,然后划分测试优先级,定级缺陷,另外尤其对于自动化也是非常重要。举个例子,你只有掌握了业务的特性,才能够用自动化的手段去首先覆盖哪些场景,把宝贵的自动化资源投入到最重要的地方。

行业技术知识


说到行业知识就海了去了。并不是我我们会一点测试方法,会运行个脚本,使用个框架就完事了,要么说测试要求涉猎的地方比较广呢,而且还得要求你精通。比如前端的技术栈、API设计、后端服务器、数据库、服务架构等,如果这些知识都能够打通,在面试的时候,面试官问你一个问题,你是能够以点带面的去阐述的,体现出来你绝对是一个优秀的测试工程师。

数据库

无论你是做自动化和手工测试,都要进行数据效验,SQL语言是测试工程师必会的技能之一,掌握SQL语言,然后在数据库找到需要的数据,这个能力是必须具备的。

掌握编程语言


测试不写代码?那不叫测试工程师。特别是做测试开发来说,要从代码层就开始进行质量把控,所以掌握语言的话,能够让你读懂代码,也能让你直接定位缺陷,同时更早的去预估风险和难点。另一个方面就是自动化测试,去驾驭各种自动化测试框架以及用例的开发。

搞定自动化测试


对于UI自动化来说,掌握selenium和appium,非常的重要,尤其是移动端的appium,企业的重视程度更高,基本思路都是定位元素,然后操作元素,接着获得反馈,最后用测试框架去管理测试用例。


另外对于接口自动化来说,从投入产出比来说,比UI自动化有很多独特的优势,比如运行速率高,开发和维护成本低,而且可以和开发代码同步开发。简单来说,就是通过模拟浏览器,发送请求实现接口的调用,比较返回值与期望值,验证结果。

质量流程管理

最后要说的就是质量管理了,对于测试人员来说,并不是单纯的去做测试,而是负责业务的质量保证。

* 作为 DevOps 关键角色,未来的软件测试工程师和质量人员必须同时具备一定的开发和运维能力。
*
测试人员会更深入介入开发工作,通过“测试左移”,提前与开发人员一起制定测试计划,推动代码评审、代码审计、单元测试、自动化冒烟测试、测试精准化分析以及研发自测等来保证研发阶段的质量;
* 另外,测试人员会也会参与配置部署,将自动化测试用例配置到持续交付链中,并通过“测试右移”,全流程监控发布后的应用质量。
如果你想在测试行业成为专家,先要成为高级测开,可以接着往下看!

下面谈谈不同level的测试工程师应具备的基本能力

 

第一个:我们称之为测试员/测试工程师


直白一点说,就是干苦力活的。对标过来就是百度的T3、T4,阿里的P5,腾讯的T1-T2。主要的工作就是需求分析,测试方案,测试策略,测试执行,都是业务测试。当然你能够掌握某些领域知识,比如你是测无人车的,无人车的业务是什么,我测AI,AI是什么,我去测大数据,大数据是什么,测的是电商,电商系统的架构是什么,业务知识是要懂的。再一个是带外包团队,可能会有一部分的外包团队交给这一部分人去带。主要是也就是管理这些基础的业务测试工作。

第二个:测试开发工程师


现在第一个level是不怎么招了,多数都是从第二个level开始招。一旦提测试开发,就一定要求你懂研发,懂测试,并且有一定的深入工作的能力。从这个level开始要求你的编程能力了,Java、Python、shell、SQL,这是最基础的,然后是业务测试。


这部分人仍然会负责一部分的业务测试的工作。老大会根据你的能力,给你安排一个比例。你能力很强,80%做技术,20%做业务,如果你能力不强,那就80%做业务,20%参与一部分技术。如果你的技术太low了,那就100%的全部做业务测试。所以这个时候会根据你的能力进行合理的时间划分。这里面的要求就比刚才突然间就拔高了,客户端的UI测试,服务端的接口测试,性能测试,基本上都属于这个范畴。


面试的时候,性能与非功能测试,可能不会做一个主面试点,主要还是在自动化和编程能力。也就是目前大家出去找工作,你们最容易被卡的这一关。所以在这个level里面,也是干活的,也就是既做业务测试,也做技术上的改造,以及去写一些自动化,但是仍然是偏重于业务的。

第三个:高级测试开发工程师/测试架构师


那么到这个level,业务测试已经非常少,甚至完全没有了,这个时候更多的是负责整个团队的流程管理。流程管理体系,白盒测试体系,测试工具与测试平台的开发,再一个是质量监控,还有一个质量管理。通常一个团队里面,会有一个测试的管理,加上1-2个高级的测试开发工程师,或者叫测试专家也行。他会搭建起整个的持续集成系统。持续集成、白盒测试、以及一些平台的开发,主要会交给这些人负责。然后他会带2-3个测试开发工程师,这些测试开发工程师一边跟着他去学习,一边去做业务。然后剩下的活儿,交给外包公司或者校招的人去做。

 

对于一个测试工程师,核心的竞争力有哪些?

 

 


专业技能:毋庸置疑,吃饭立足的根本,随着你的测试技术的不断深挖,你一定会觉得自己曾经的测试想法是非常浅显的,先要走管理也好,甚至转岗也好,技术的深挖都是非常重要的;


管理技能:能够带领团队高效的运作,高效的完成任务,测试核心王道,当然也要保证团队内部氛围的和谐,促进团队健康发展。你的技术到了一定的程度,自然会担起一定的管理责任的。

学习能力:软实力中最重要的一环,或许听到的比较多了,但是作为过来人建议一点,人的精力有限,把你的有限精力聚焦在最重要的方向;

沟通能力:是不是听起来有些上头,耳朵都听出茧子了,自古套路得人心,但是真诚永流传;


影响力:测试这个行业,越往上,圈子越小,北京、深圳、上海、杭州这些的测试开发、架构师类的,如果有一定影响力的,相互之间交流和学习都是非常容易的。往往越是顶尖,越乐于分享。

不进步,就淘汰!