从企业方面:多数企业较难招聘到满意的测试工程师,尤其在软件测试外包企业,人才问题成了这类企业的发展瓶颈,这些恰恰反映了整个测试行业的发展遇到了瓶颈;
从个人方面:很多测试人员薪资和职位到了一定阶段就很难得到提升,例如很多测试工程师做到测试经理后,几年内得不到提升。
职业发展尤其体现在待遇方面。下表是北京市一些IT企业测试工程师的月薪数据。这些数据主要从一些网站收集,由一些测试工程师发布。
通过上面的数据,我们可以看出:
(1) 企业规模越大,越重视测试,而测试人员的待遇也越高;
(2) 掌握测试工具的测试人员待遇往往高于那些只能进行手工测试的工程师;
(3) 测试技术越熟练,待遇越高,而具备一定领导能力的测试工程师待遇会更高些;
但是我们就整个IT行业来看,尤其是与开发人员相比,测试工程师的待遇显得很低。就作者掌握的资料来看,同一级别的开发工程师要比测试工程师高1~2K(人民币),甚至更多。
与开发人员相比,测试工程师的职业目标则很少,主要下面几类:
◇ 测试组长(也可称之为测试负责人、测试经理):这类测试人员通常是测试项目负责人,既要具备较高的测试技术能力,还要具备一定的管理能力。主要职责是制定测试与编写测试计划、监控和管理整个测试过程。测试组长职位之所以受青睐,是因为测试组长可以向上发展为测试部门经理、质量经理,也可以横向发展为项目经理,因此通常待遇相对高些。
◇ 测试分析师:主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。测试分析师不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识。这类职务的发展空间也不错,可以发展成系统设计师等。
◇ 自动化测试工程师、测试开发工程师:主要职责是编写测试程序、执行自动化测试任务。这类职位的测试人员至少要达到初级程序员的能力,因为经常和程序打交道。发展空间也不错,甚至可以发展为程序员。(在国外,这类工作多由具有开发背景的测试人员来负责。而国内的IT公司不重视测试,程序员不愿意去做待遇较低的测试工作,因此测试人员在具有一定的开发能力后,将会考虑转行去做开发。)
但是,国内的测试人员多数在测试圈子“打转转”,很难进入到开发领域。多数测试人员发展成测试经理/高级测试工程师后,职业化几乎到了尽头。于是,出现了一些大企业的测试人员自己去创业的情形,但这种情形更是少之又少。
实际上,这一切的根本原因是由测试工程师的能力水平决定的。国内测试工程师普遍根基不牢,自然难获得较大的发展。下面将从测试工程师的基本素质谈起:只有那些基础知识扎实、潜质较好的测试工程师才是合格的工程师。
后面紧接着分析了测试工程的一些必备的素质和知识,还是比较全面和客观的:
(1)计算机专业技能
◇ 测试专业技能
◇ 软件编程技能
◇ 网络、操作系统、数据库、中间件等知识:
(2)行业知识
(3)个人素养
除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。
专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。
细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。
责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。
自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。
“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。
对于测试职业的发展展望,最后给出了国外的通常的一个职业发展路径:
实际上,测试工程师如果按照前面的要求打好基础,职业前景是非常广阔的。我们可以借鉴一下国外测试工程师的职业发展历程,很多时候,国内的软件都是跟着国外的发展趋势,测试行业也一样,国外至少比国内起步早15到20年。
与国外的专业测试工程师相比,国内测试工程师突出特点是晋升非常快,2-3年可能走完了国外10年的路。实际上有很多测试(部)经理也就2到3年的工作经验,而在国外,测试工程师很多至少会有5年以上的开发经验。在国外,通常测试工程师会经过下面的职业发展历程:
1、初级测试工程师
主要是计算机相关专业的本科生或具有一些手工测试经验的个人,主要工作内容是开发测试脚本并开始熟悉测试生存周期和测试技术。我们国内的大多数工程师都在这个水平上,这也是我们软件质量上不去的一个重要原因。
2、测试工程师/程序分析员
具有1-2年经验的测试工程师或程序员,主要职责是编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能。国内的高级测试工程师的水平比这个级别还要略低些。
3、高级测试工程师/程序分析员
具有3-4年经验的测试工程师或程序员。帮助开发或维护测试或编程标准与过程,负责同级的评审,并为其它初级的测试工程师或程序员充当顾问。继续拓展编程语言、操作系统、网络与数据库方面的技能。其能力相当于国内的测试负责人。
4、测试组负责人
具有4-6年经验的测试工程师或程序员。负责管理1至3名测试工程师或程序员。担负一些进度安排和工作规模/成本估算职责。更集中于技能方面。
5、测试/编程负责人
具有6-10年经验的测试工程师或程序员。负责管理8至10名技术人员。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。开发一些特定领域的技术专长。
6、测试/质量保证/开发(项目)、经理
具有10多年的工作经验。管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和大量演示。负责项目成本、进度安排、计划和人员分工。
7、计划经理
具有15年以上开发与支持(测试/质量保证)活动方面的经验。管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任。
国内测试工程师早期的发展和国外有些类似,基本遵循从初级测试工程师到中级、高级测试工程师,再从测试负责人到测试经理。但是接下来就很难提升,很少有测试工程师发展成为IT企业的技术总监,主要原因就是技术能力不够。