浅谈自动化测试的职业发展

本文初稿已发表于51testing期刊《51测试天地》 2019年52期

                    摘    要

本文主要从自动化测试从业者的职业方向以及职业规划两大方面展开论述自动化从业者的职业发展。从多个角度分析不同职业方向的优缺点及应具备技能,详细讨论职业规划应该考虑的因素,对自动化从业者的职业发展及择业具有重要的参考意义。

关键词:自动化测试,职业方向,职业规划自动化测试的职业发展

前言

1.1 背景


图片发自App


图一  根据51testing新近发布的测试人员对测试领域工作前途态度的统计结果(图一)显示,大于60%的从业人员对软件测试行业的发展前景感到迷茫,10%以上的不清楚甚至感觉前途无望。

随着敏捷开发在软件行业的推广与发展,自动化测试在软件测试行业的地位也在逐渐上升。然而,对于自动化从业者将何去何从?自动化从业者的发展方向有哪些?身为自动化测试工程师,我们又该如何为自己定制职业发展规划?这些问题一直困扰着我们,众多自动化从业者都是在迷茫中前进。由此可见,做好职业规划是自动化测试从业者选择发展之路,明确自身的成长空间,选择就业方向的风向标。由此可见,自动化测试的职业发展对于自动化从业者择业与从业具有现实意义。

1.2 自动化测试现状

近年来随着我国软件产业的蓬勃发展以及对软件质量的重视,软件测试行业随之兴起。软件测试在国内已经成为一个较为成熟的产业,逐步与国际水平拉近距离。具体表现在:(1)软件测试门槛低,薪资相对其他行业高,可谓是低报酬高回报的行业;(2)软件质量问题的影响越来越大,而软件测试就是保证软件质量的一个重要并且有效的手段,因此现在软件公司越来越重视软件测试;(3)软件测试行业发展势头良好,测试行业依旧处于供不应求阶段,自动化测试的发展整体上仍处于起步阶段。

1.3 自动化测试的发展前景

纵观人类发展方向,感应灯,扫地机器人,智能家具等的出现无一不诠释着自动化就是人类社会发展的大方向,软件测试行业也不例外,自动化测试一定是未来的方向。目前流行的敏捷、持续集成等都是以自动化为基础。所以说自动化测试的发展前景是乐观的。

由图一可见,超过80%的从业者认为测试行业有前景或者前途光明。同时超过75%的测试从业人员希望提高自动化测试的技能

(图二),由此可见,自动化测试在软件测试行业的发展前景也是受到广大软件测试从业人员的广泛认可的。


图片发自App

图二自动化测试在软件测试行业的发展前景也是受到广大软件测试从业人员广泛认可

自动化测试介绍

什么是自动化测试,自动化测试都有哪些,自动化测试的意义以及什么样的项目适合做自动化,作为自动化测试人员我们应该具备哪些素质?了解自动化测试框架都对于自动化职业从业者的职业发展具有重要意义。

2.1 自动化测试的定义

自动化测试是通过一些自动化测试工具模拟人工操作验证其结果完成整个测试过程。自动化测试属于测试但又不局限于测试,也是将软件开发过程中手动重复度高的,机械化的,人因失误较多的步骤用自动化实现,再将这类工作的人力释放出来去从事自动化替代不了、有成长性或者创造性的工作。

2.2 自动化测试的分类

提到自动化测试,大多数人的第一反应就是UI的自动化测试,其实不然,它还包括了接口测试,单元测试,安全测试,性能测试以及数据库测试等。具体分类情况以及每一类的测试的体系及工具如下如图三所示:


图片发自App


图三 测试体系及工具

2.4 自动化测试的意义

为什么要进行自动化测试?因为自动化测试的优点显而易见:

提高测试效率,节省时间和人力成本;

每次新的build发布之前,可以通过自动化进行BVT测试,大大节省了时间和人力成本。对于回归测试的效果也非常明显。

可以执行难以或不可能用手工完成的测试比如网站的压力测试,同时找很多人去测试不现实。便可以以自动化的方式通过机器去模拟。

一致性和可重复性强

由于测试是自动执行的,每次的执行内容和测试的结果的一致性可以得到保障,从而达到可重复的结果。

项目质量流程需要   

比如测试工具的开发,自动化在DevOps中的贡献。

自动化在DevOps中很重要因为它提供了准确性和速度。应用交付需要高效,而手动安全测试难以满足进度要求。更重要的是,第三方在外部手动测试中往往会遗漏测试错误。

2.5 什么样的项目适合做自动化

我们可以通过以下几方面来判断当前的项目适合做自动化:

项目维护周期长。如果维护周期太短,自动化框架有可能还没开发完,产品已经下线了。

比较频繁的回归测试。如果选用手工测试,第一轮可能还没完,第二轮就开始了。

产品比较稳定,不会频繁变动。如果产品不稳定,维护自动化用例成本太大,自动化测试投资回报率太低。

2.6 自动化测试人员应具备的能力

在早期,大多企业对测试人员的能力要求较低,导致人们的测试行业的认知都是:门槛低,水平低,能轻松胜任。而自动化测试,作为进阶,在测试基础欠缺的情况下,即使写出测试脚本也不能从根本解决问题。自动化测试人员应具备的能力可分为如下几个方面,这几方面在各个职业生涯发展阶段的要求也不尽相同,下一节会详细介绍各个阶段的要求。

基础能力。基础能力是测试能力和代码能力的基础,是对自动化测试人员的基础要求,包括细心,耐心,责任心,学习能力,分析问题和解决问题的能力,沟通能力,团队协作的能力以及总结问题的能力。外企或者国外的项目同时也会有外语能力的要求。

测试能力。测试能力是做自动化测试的基础,能够很好的帮助自动化促使人员决定什么时候引入自动化,有效的设计自动化测试用例,很好的发现bug,很好的理解自动化测试的目的与价值。测试能力主要包括业务分析能力,bug的洞察能力以及基本的软件测试知识(bug的生命周期,测试理论及方法等)

代码能力。良好的代码能力是自动化测试人员写出高质量的自动化测试脚本的前提,开发自动化测试脚本的过程中,需要考虑代码的稳定性,健壮性和可扩展性,同时结合数据结构和算法来减少后期的维护成本。代码能力主要包括自动化脚本的设计能力,框架开发能力,框架设计能力。

自动化测试的发展方向

俗话说:“方向比努力重要”,自动化测试行业也是如此。了解自动化测试的发展方向是自动化测试职业者做好职业规划的前提。下面是一个简单的发展路线(图四):


图片发自App

图四  自动化测试发展路线

在管理上的发展

所需技能

一般来说管理者不局限于技术,对技术敏感,但是一定对管理工作充满持续热情,善于沟通,组织协调能力强,长期抗压能力强。总的来说,管理者须具备如下三大技能:

技术性技能,是指运用专业能力来组织完成工作。如果技术和业务能力欠缺,难以很好的制定计划,预估风险,同时难以服众。对管理者技术和业务的能力要求是广而不深。

人际技能,是指管理者处人事关系的技能。即理解激励他人并与他人共事的能力,主要包括领导能力,影响能力和协调能力。人际技能要求管理者了解他人的信念、思考方式、感情、个性及态度等。

概念技能,是指一种洞察既定环境复杂程度的能力和减少这种复杂性的能力。包括理解事务的相互关联性从而找出关键影响因素的能力,确定和协调各方面关系的能力以及权衡不同方案优劣和内在风险的能力等。

资格认证

PMP:成为企业项目经理必须具备的任职资格,如果要进入跨国公司,PMP资格认证是必备条件之一。

PGMP:是PMP的高级进阶,认可度非常高,不过难度要求也高。

PRINCE2:受控环境下的项目资格认证,与PMP相比更注重于实现方法。如果想作为项目主管或者项目经理,PRINCE2 提供了明确的程序,步骤以及模板。

PMIACP:PMI推出的敏捷认证,适用于任何行业,且不对从业者限定某一种敏捷方法。

CSM:专门面向Scrum Master的认证。

PSM:也是专门面向Scrum Master的认证,不同的是PSM的认证是终身的,CSM没两年需要重新认证一次。

发展空间

如图五所示,自动化测试管理的基本角色包括组长(Leader),测试/项目经理(PM),测试/项目总监(Director), Scrum Master。

3.1.3.1 Leader

因项目难易程度与企业规模而异,组长的要求也不尽相同, 一般来说组长不是纯粹的管理者,他们也会负责一部分自动化测试工作,同时负责项目组的管理工作,管理的对象是组。要求要有一定的自动化测试经验与管理能力。同时要有一定的业务能力与技术能力,便于更好的判断任务的优先级,更好的进行管理工作。组长的管理工作主要集中在任务的追踪与计划的制定及组内人员的协调,同时也会涉及时间的管理及质量的管理,与开发人员及客户的沟通

Leader的职责:

Team 内部task的追踪与管理;

自动化测试计划的制定,实施与追踪;

进度与目标的管理;

Team内部的沟通及人员的协调;

根据自动化测试情况编写与总结报告;

承担部分自动化测试工作。

3.1.3.2 PM

项目经理管理的对象是整个项目,一般不会参与具体自动化的任务。主要工作集中在从宏观上把控整个项目的进度,质量。同时需要预估项目风险,并使客户满意。同时对团队与人员的发展负责,要进行人员的招聘与培养,提高团队的胜任力。

PM的职责:

负责项目的实施与管理,跟进并推动项目进度

负责与客户进行方案、需求、计划的交流与沟通;

向管理层汇报重大项目的情况及部门内部事务的管理;

软件产品测试方案的制定,开展和实施;

负责项目的交付,验收;

协调解决项目测试过程中的重大问题;

组建并管理团队,指导团队成员工作;

面试,选择聘用管理人员,并定期进行评价,考核和奖惩。

3.1.3.3 Director

总监直接负责项目的财务管理以及资源的调控。对于外包公司而言,项目经理与总监同时也会负责项目的周期,与销售人员的沟通等。

Director的职责:

负责整个项目的财务管理及资源调控;

负责部门的组织及建设,员工的招聘及任免;

贯彻及执行公司的各项管理制度与标准;

负责跨部门的协调与沟通

3.1.3.4 Scrum Master

Scrum Master是Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。与PM不同的是,Scrum Master更侧重于教练和引导者,是设立在项目和客户之间的角色。Scrum Master不管理实际工作的团队;反而,他会协助PM,辅导团队,确保项目遵循Scrum流程。Scrum Master只负责Scrum流程能够正确、持续的实施,发挥出它的最大效用。

Scrum Master职责:

负责帮助团队每个人更好的理解和实践Scrum;

服务型领导,服务于整个团队;

3.2 在技术上的发展

自动化测试从业者不仅具备测试理论,同时也有开发技术。所以自动化测试在技术上的发展比较广,按照资历可逐步由初级发展为高级再到资深,最后成为领域的专家。总体可分为测试设计方向的发展和测试开发方向的发展。

自动化测试及管理工具

3.2.1.1 测试工具

Web UI自动化测试:

根据软件现状调查报告(图五)显示,Selenium是目前最受欢迎的Web UI自动化测试工具,比例呈逐年上升趋势。


图片发自App


图五 软件现状调查报告

APP UI自动化测试:

根据软件现状调查报告(图六),根据数据可知,Appium是主流的移动应用自动化测试工具,近年呈上涨趋势。


图片发自App

图六 软件现状调查报告

性能测试及安全测试主流工具请参考图三。

3.2.1.2 测试管理工具

根据图七可知,目前主流的管理工具为禅道和Jira,ALM呈逐年下降趋势。


图片发自App

图七主流管理工具

3.2.1.3 测试框架

自动化框架包括自动化测试框架本身和执行的关系,自动化测试脚本的管理,测试用例的管理,以及自动化测试工具的选择。如下图八所示:


图片发自App

图八自动化测试框架

功能自动化测试的发展

3.2.3.1 发展方向

初级自动化测试工程师 -- > 中级自动化测试工程师 -- > 高级自动化测试工程师  -- > 测试架构师

-- > 系统架构师

初级自动化测试工程师工作经验一般不超过两年。要求具备自动化测试的基础知识,有一定的代码能力,能够独立开发自动化测试用例,同时具有测试理论,了解软件开发及测试的生命周期。

中级工程师相比初级而言要求知识面更广更深一些,通常具有一定的开发经验,对质量管理,脚本语言数据库等领域都有了解。要求能够独立设计开发并维护自动化测试用例,并且有维护自动化测试框架的能力。

高级自动化测试工程师不仅需要有强大编程能力,同时需要丰富的测试经验,需要深刻理解开发与测试领域。要求能够理解并维护自动化测试框架。同时具备解决team内部各种疑难杂症的能力。

测试架构师须具备自动化测试框架的设计可开发能力,负责产品测试的整体架构设计及对测试重点及难点进行研究,为整个产品提供最优的测试方案。同时负责协助测试经理制定测试计划和控制项目进度。

系统架构师负责产品开发的整体结构设计及产品开发过程中的技术重点与难点的研究,同时协助项目经理和控制项目进度。

3.2.3.2 所需技能

除了自动化测试人员所需具备的基本能力外,与管理者要求不同的是,选择技术路线的技术人员要求热衷于技术,对技术敏感。在自己经营的领域里,具有个人独到的见解和深厚的技术实力。

以当前最流行的Selenium+TestNG+Java 为例,UI自动化测试技能要求如下:

深厚的Java功底,所设计出的代码可读性,易用性,可重复性,可维护性,稳定性高;

熟悉并深入理解Selenium+TestNG 框架,便于更好的理解并维护甚至设计自动化测试框架;

熟悉设计模式及代码重构原则;

熟悉Git等代码管理工具;

熟悉CI,Jenkins job的创建,维护,执行;

熟悉测试理论方法,bug的生命周期;

能较快适应变化及对新技术特别强的学习能力;

对分析问题与解决问题的能力。

API所需技能:

熟悉被测API的协议;

熟悉协议的传输,响应和返回;

熟悉API测试框架

性能测试的发展

作为性能测试工程师,我们需要对系统进行分析,系统调用是如何进行的,CPU是如何调度线程,有限的内存是如何影响性能的,文件系统是如何处理I/O的等。对于性能不佳的系统,我们需要建立性能数据分析模型,收集原始资料,分析性能产生原因。性能测试的分类参考图三,性能测试工程师的发展参考图五。

安全测试的发展

安全测试是在软件产品的生命周期中,特别是产品开发基本完成到发布阶段,尤其是金融类产品,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。以发现安全隐患为主。安全测试的分类请参考图三,安全测试工程师的发展方向请参考图五。

3.3 其他

如图五所示,除了众所周知的“管理”与“技术”之外,自动化测试者还可以考虑以下几方面作为自己的职业发展方向。

3.3.1 职业培训师

职业培训师以讲授培训课程为职业。。根据工作性质不同,可分为:为公众服务,为特定人群服务,为企业服务三大类。

分类:PTT,TDP,TTT,ETT

要求具备的素质:以始为终;不断学些更新;教学相长的共赢思维。

3.3.2 职业规划师

是以职业人的个体利益出发,结合专业知识和相关资源,给与客户有关职业的适应,发展等方面的专业咨询、辅导、判断、和解决办法的专业人才。

最高门槛认证:CCDM

优点:高薪,稳定,自由度高

要求具备的能力:超凡的沟通能力和必要的评测技术。

3.3.3 自由职业者

自由职业者的最大好处就是可以自己掌控自己的时间,有选择自己想做什么工作的自由,同时拥有赚钱的潜力。弊端就是需要自己寻找业务。

3.3.4 创业

创业之路可能是职业生涯中最不确定但却最具挑战的选择。作为创业者的两大优势:完全的自由和完全的不封顶的赚钱潜力。你完全可以自由,随心所欲,也对自己的未来负全部责任。但是创业者必须考虑做什么才能赚钱,可能是最艰难,最冒险的职业抉择。同时还要学习销售、市场营销,以及商业和理财等诸多方面的技能。

自动化测试的职业规划

明确了可参考的职业发展方向,本节主要针对管理和技术方向的规划给出抛砖引玉的建议。根据著名的10000小时定律理论:即一个人想要成为某个领域的专家,需要经过一万个小时的锤炼。按此比例结算,如果每天有效工作时间为8小时,一周工作5天时间计算,那么成为一个领域的专家需要4-5年的时间。

职业规划的方法

职业规划可以通过两步走,一是职业方向定位,二是职业核心能力评测。

管理路线还是技术路线?其实自动化测试在“技术方向”和“管理方向”也是可以互换,交叉发展的。不管走纯技术路线还是纯管理路线最后都会进入瓶颈期。因为自动化测试的特殊性,管理者如果不懂技术,就不能很好的有效评估自动化测试的重点、难点,不能很好的做计划,控制项目进度。做技术的如果不懂管理,就不能很好的理解项目的价值,项目的目标和成本。容易陷入“唯技术论”中。所以不管选择做管理还是做技术,也同样完全取决于个人。我们可以通过核心能力评测来参考自己适合做什么。

职业核心能力是在人们工作和生活中除专业岗位能力之外取得成功所必需的基本能力,它可以让人自信和成功地展示自己、并根据具体情况如何选择和应用。

职业核心能力又分为三大部分:

基础核心能力:职业沟通、团队合作、自我管理

拓展核心能力:解决问题、信息处理、创新创业

延伸核心能力:领导力、执行力、个人与团队管理、礼仪训练、五常管理、心理平衡

当你有很高的职业发展期望时, 我们可以通过职业核心能力评测进行“胜任力”评估,用以支持你制定的职业目标并树立一个能力提升的方向与标准。

4.2 管理方向

关于如何成为自动化测试管理人才,首先一定要对测试理论,测试流程熟悉,其次要有一定的技术功底,亲自参与过UI 自动化测试/性能测试/安全测试的工作。同时,尽量选择一个领域(比如金融,人力资源管理等)持续做下去,成为这个领域的业务专家。

发展建议:工作前三至五年积累经验,沉淀技术,学习测试理论,有意识的锻炼自己的管理技能。然后逐步向Leader,PM 发展。

4.3 技术方向

关于如何成长为自动化测试专家,不管是UI自动化,还是性能跟安全。首先要了解系统的架构,然后再选择合适的测试工具,最后要保证多实践。

对于工作中没有机会接触性能测试跟安全测试工作的,可能通过自学或者参加培训来提高自己的能力。

结束语

本文简单介绍了自动化测试的概况,从职业方向和职业规划两个方面介绍了自动化测试的职业发展。读者可以参考前述章节尝试规划自己的职业发展。最后,衷心感谢奥博杰天软件的谈益平(博士)的命题,感谢Kevin从资料收集到论文修改过程中的帮助及建议,感谢Gary和Martin的意见和建议!感谢大曹的校对。

你可能感兴趣的:(浅谈自动化测试的职业发展)