欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

软件测试工程师的职业发展“瓶颈”

程序员文章站 2022-07-14 19:09:16
...

 在中国,近年来软件测试发展迅速,测试工程师的数量越来越多,在软件开发项目中,测试也越来越受到重视。但是,一个不可忽视的现象是,测试工程师工作两三年后,会遇到职业发展的“瓶颈”,表现为觉得已经掌握了基本的测试技术,但是不知道该如何深入,工作缺乏挑战性和成就感。这时,测试工程师容易变得焦虑和痛苦。一些测试人员在这个时候选择了离开,转型为QA,产品人员,开发人员和项目经理。最近来自Google,Facebook的测试文章越来越多,其核心是他们没有独立的测试,是开发人员自己做测试,而且还做的很不错。在国内一些大的互联网企业,也倾向于招聘越来越多的测试外包人员。因此很多人都觉得做测试是没有前途的,或者只是把做测试当成是一个敲门砖,几年后就会离开。

 

作为软件测试从业人员,更深入地理解软件测试,是有必要的。我们先来看看软件测试的起源和发展。1972年,软件测试领域的先驱Bill Hetzel博士,提出了对软件测试的定义:“Establish confidence that a program does what it is supposed to do. ”此时软件测试普遍被定义为“证明软件的工作是正确的”活动,这个理念简称为“证实”。1979年,Glenford J. Myers(代表论著《The Art of Software Testing》)提出了对软件测试的定义:“The process of executing a program or system with the intent of finding errors.” 他认为测试是为了“发现错误而执行的活动”,这个理念又被称为“证伪”。Myers还给出了与测试相关的三个重要观点:1、测试是为了证明程序有错,而不是证明程序无错误;2、一个好的测试用例是在于它能发现至今未发现的错误;3、一个成功的测试是发现了至今未发现的错误的测试。1983年Bill Hetzel博士将定义修订为:“测试是以评价一个程序或系统属性为目标的任何一种活动,测试是对软件质量的度量”。至此,人们开始将测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容。所以到现在软件测试也有了行业标准(IEEE/ANSI),“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。20世纪90年代,软件测试工具开始盛行,同时自动化测试技术也开始迅速发展,一些对软件测试系统的评估方法开始被提出,比如1996年的“测试成熟度模型”(TMM),“测试能力成熟度模型”(TCMM)。2002年,Rick和Stefan在《系统的软件测试》中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”。细心的人会发现,这是一份“西方”的软件测试发展史,在西方的一些企业中,对软件测试人员的要求甚至比开发人员更高。那么中国的测试行业有什么特点呢?

 

在中国,随着软件测试行业的发展,通过校园招聘,从计算机科学相关学科的大学毕业生中招聘软件测试工程师成了主要途径,但是大多数高校都未提供专业的软件测试课程,很多人不理解软件测试,甚至认为软件测试是不重要的。主动选择软件测试的毕业生,有的因为编程能力不强,有的因为性别觉得女生比较细心,缺少对软件测试的了解,工作几年后容易离开。在一些大的互联网公司,常常会在资源、晋升上偏向开发或产品,而忽略测试,因为管理者往往会认为测试是一种“开销”,而不是“价值创造者”,甚至认为测试是影响产品按时发布的障碍,常见的情况是,开发延迟,通过压缩测试时间来保证项目进度。测试外包的兴起,意味着公司在削减测试方面的投入,并没有将测试作为核心、重要的业务去发展。外包测试人员会更频繁得更换测试产品,对产品实现的理解不会太深入。而对产品测试经验不断持续的积累、对产品实现不断深入的理解又是深入软件测试的两大必要条件。同时,外包测试人员缺少归属感、缺乏晋升空间等问题,就更难深入发展了。综上,总结中国的软件测试有“深入难”和“门槛低”的两大特点。基于这样一个背景,工作3年左右,有经验的测试工程师在不断丢失,要改善这个问题,需要解决测试工程师的发展问题。