国内软件测试工程师的职位从无到有,经历的时间还不足10年。成熟的软件测试理论体系构建也仅有10余年的历史。而纵观现在如雨后春笋般蓬勃增长的计算机软件企业,对优秀软件测试工程师需求和渴望的现实,不禁让我们不得不去思考一个问题:如何开展并做好软件测试工程师的培训工作。
对于软件测试的重要性,很多人有些误解。因为刚刚开始做软件测试的人员往往是从黑盒测试做起,而黑盒测试不需要编程经验,所以总是给人感觉测试人员不需要太多的知识,无论谁上了岗都能做,因此也就导致软件企业不愿意、也认为不需要对软件测试工程师开展培训工作。一旦软件产品发货到用户手中,发现质量低劣、效率低下、维护成本昂贵,又都毫不留情地骂测试人员无能,为什么测不出Bug(软件缺陷)。
中国有句老话:磨刀不误砍柴工。看到上面这种恶果,显而易见,现在至少我们应该达成一种共识:软件测试工程师也需要培养,并且需要接受正规培训。培训什么?我想应至少从三个方面入手培训工作。
一、入职培训
软件测试工程师初来乍到一个公司,往往兴趣十足,预备全身心投入到“捉虫”的战斗中。但往往不得其法,事倍功半,因为抓不到虫子,或是即使抓到了虫子并不重要也被开发人员视而不见。设身处地的为这些雄心勃勃的测试工程师想想,他们是多么需要入职培训。
软件测试工程师的入职培训可以从三个方面来分头进行。产品的培训、测试技术的培训和测试工具的培训。软件测试的工作对象即是企业开发的软件产品,所以务必要对软件产品有一个全面的了解和清醒的认识。作为一个测试管理者,应至少安排足够的培训时间,让测试新手研习被测试软件的内容。我们可以利用一切可利用的培训资料。软件产品本身、用户手册、开发组的需求规格说明书、技术文档,包括熟悉产品的人员进行功能讲解等等,用这些形式不拘一格的产品内容来迅速武装起测试工程师的头脑。光有这些培训还不能罢休,要善于检查测试工程师的学习情况,及时地向他们提问产品中那些最关键性的问题,如产品的核心概念、业务流程等。有培训有检查,通过一问一答的方式,既了解了初学者对产品的了解程度,同时也传授了产品中的精髓,并且还能够从初学者的疑问中抓到培训工作中的漏洞,为今后更好地开展培训奠定基础。
因为软件测试工程师总是如人们所预料的一样,来自于各行各业、五湖四海。有测试经验的,无测试经验的,统统汇集到企业中。所以必须的测试技术培训一定是要有的。培训内容主要以黑盒测试技术为主,一是因为黑盒测试技术是基础,二为的是成本更为昂贵的白盒测试人员在需要的时候,也能够出色的完成黑盒测试的任务。黑盒测试常用的测试方法、测试用例的设计、黑盒测试常见的测试类型、不同测试类型各自关注的主要问题等等,在入职培训中都应有所全面接触。同样,方法的学习离不开实践的过程。可以找一些具有普遍性的功能点,由测试人员尝试设计测试用例。只有通过由易到难,由简单到复杂,不断反复的练习,才能慢慢建立起测试人员的测试概念、设计方法、捉虫的敏感度,并且保证他们不会走不必要的弯路。
在入职培训中,测试工具的培训已经逐渐提到议事日程上来。随着软件规模和复杂度的提高,纯粹意义上的人工测试已经不能满足软件测试各个方面的要求,因此对于测试工具的使用需求应运而生。为了使大家尽早成为会使用工具的高端测试人员,所以在入职培训中也应重视测试工具的培训。LoadRunner、WinRunner、TestDirector,这些常用的测试工具是需要让测试工程师尽早掌握的。网络上汇集了这些工具的大量资料,只是看我们如何自己整合打包形成适合自身需要的培训资料。
二、在职培训
入职培训不过是软件测试领域的一块敲门砖,能够带领初学者尽早领悟到测试工作中最精华的那部分内容。要想真正培养出一位合格的软件测试工程师,只靠入职培训显然是远远不够的。几年前曾听一位资深软件开发工程师提到过InJobTraining的概念。意思是说,作为工程师自己要注重工作过程中的自我培训,作为管理者更需加强在工作进程中对员工的知识灌输和能力培养。
InJobTraining可以是正式培训,也可以是非正式培训。按照以往经验,一对一式的非正规培训,其培训效果更容易得到保证。每经历一个产品或是项目的测试,都将是一次在职培训的极好机会。从跟随开发组开发用户需求开始,到协助开发组并审核开发组的功能设计,而后是测试工程师独立的完成测试设计工作,到最后的测试执行,测试管理者始终需要指导和带领测试工程师,教会他们在软件开发全生命周期的各个阶段,软件测试的工作目标、工作内容和结果物是什么。那些在入职培训中刚刚建立起的一点点测试概念和技术理论,需要在实际工作中得到最大化的尝试和实践。在在职培训过程中,测试管理者务必要花费较大的力气去审核测试工程师的各项工作,就如同在软件产品中捉虫一样,需要尽早发现每位测试工程师的工作漏洞、工作缺陷和改进的重点方向。不能以为通过入职培训,测试工程师就真的什么都已经学会了。不要忘记软件测试工作也是技术性很强的工作,和功能设计、代码开发一样,需要反复的实践,找出其中的不足,不断的加以改进,工作技能才能得到稳步的提高。
现在企业中定义软件测试工作范畴,恐怕大多数情况已经不再单纯是测试执行本身了。所以一批批软件测试工程师入职企业后,企业应该按照各位工程师不同的特点和特长,在在职培训过程中,为其选择重点进行培训,也就是进一步加强在职培训的趋向性。比如说,有人可能擅长完成较大规模功能的测试设计工作,那就重点培养其测试设计的能力;有人可能擅长利用测试工具开发测试案例,那就重点培养其测试工具开发的能力;有人可能具有极强的耐心、探究精神和怀疑的态度,那就重点培养其测试执行的能力;还有人可能具有一两年、两三年的开发经验,那就重点培养其白盒测试的能力。总之,在职培训过程中,应当依照测试工程师不同的工作经验和技术背景,为其正确选择重点培养方向。如果面面俱到,很有可能发生投入大产出小的低价结果,而且会挫伤测试工程师的积极性,同时也会影响到测试管理者对测试工程师的客观评价。更何况作为测试管理者,也不可能有足够的时间和精力,逐个培养每位测试工程师的每项能力。所以基于这点考虑,在职培训中加强目的性、重点性,明确培训的方向和目标就显得尤为重要了。
三、软件测试工程师的职业生涯发展规划
相信经过正规的入职培训和有的放矢的在职培训之后,我们的测试工程师在一两年时间里都应该能够有一个长足的进步了。但此时新的问题发生了。做了几年的软件测试之后,我的发展前途在哪里?好像我该学的我能学的都已经学会了。这时候,一系列的危险信号会陆续出现在测试工程师的身上。敷衍了事,吃老本,另谋职位找工作。哎,测试管理者发出一声叹息:仿佛曾经的培训投入都将付之东流了。要想遏制这种不良事态的发展,我们有一解:做好软件测试工程师的职业生涯发展规划。
勿庸置疑,谁都不想一辈子只做一个测试工程师。更何况按照自然规律,做了两三年测试工程师之后,一定有更好的发展前景等待测试工程师们去开拓。高级测试工程师、测试经理、测试主管;软件品质保证工程师、高级品质保证工程师、品质保证经理、品质保证主管、品质保证总监,几个职业发展序列都可以由测试工程师去自由选择,而从一位普通的测试工程师发展成为品质保证总监,没有十年八年的技术积累和经验沉淀,也是很难实现的。
选择适合于测试工程师自身条件的目标,并为其明确目标,并在目标基础上为其设计呈阶梯状的职业发展规划,也是测试管理者对测试工程师实施培训工作的重要组成部分。
现代软件企业一般都已有一套科学合理的职位序列,并每年在固定时间内为每位员工评定企业内部的职位。在此期间,测试管理者应在充分了解和掌握测试工程师实际工作水平和当年业绩的情况下,评定出最新的职位水平。更为重要的是,要在此时为测试工程师仔细设计和规划下一年度的职业发展方向。是向高级测试工程师序列发展,还是向测试经理序列发展,还是向品质保证工程师序列发展,要定义好明确的方向。一是为了便于测试工程师了解自己当前的工作状态,以及与今后的发展目标存在的差距;二是为了加强测试工程师的工作热情和动力,让他们体会到企业的发展要依赖于他们个人的发展;三是为了企业能够明确自身人才结构和知识结构的现状,扬长避短,为今后不断发展壮大企业,积累自身实力并增强信心。
在设计软件测试工程师的职业生涯发展规划时,往往会陷入到一个两难的境地:一个工作出色的测试工程师,今后是往测试经理方向发展,还是向高级测试工程师方向发展。
从人们的传统意识上来讲,总是觉得当了测试经理好像就有了一官半职,远远要比高级测试工程师显得高贵得多。所以形成了千军万马想过测试经理独木桥的现象。如何决策,一句话,要以人为本,从测试工程师的自身条件出发。很显然,高级测试工程师主打自身的技术优势,只要保持技术优势就行了。而测试经理需要从无到有大量累积管理的能力和经验。最起码要具备经营能力、成本控制能力、工作统筹安排能力、人员管理能力、沟通协调能力等等。也就是说,如果选择了测试经理的发展方向,则无疑要付出更多的艰辛和努力,方可达到职位目标的要求。所以测试管理者在为测试工程师设计职业发展规划时,务必要冷静头脑、全面分析,不应也不能轰轰烈烈的一拥而上,让技术型人员去做管理工作,而擅长管理工作的人员就只在技术单方面谋求发展。
设计职业生涯发展规划的过程,严格意义上应该属于年度培训工作的开端工作,制定既定目标的工作。所谓万事开头难,为了一年甚至更长时间的软件测试工作卓有成效,测试管理者在开展好职业生涯设计工作的同时,务必要与每位测试工程师做好充分的沟通,达成双方的理解和共识,保证大家一条心,劲往一处使。在此测试管理者还可以借助外部的力量来完成沟通工作。如利用企业的人力资源部门、技术委员会的资源和力量,群策群力,优势互补,减少设计工作中的偏差,积累设计工作的经验和技巧。
以上只是凭借实际的一些工作经验,总结出来的有关软件测试工程师培训工作的一些心得。潦草几笔,不成体系,欢迎大家批评指正。
看看现在软件企业的发展前景,以及对测试人员、测试环境、测试工具的需求增长,我们真的要脚踏实地的做好软件测试工程师的培训工作了,抓好软件企业的第一生产力,凭借人的智慧和才干,提高我国软件企业的核心竞争力。
最新内容请见作者的GitHub页:http://qaseven.github.io/