第15章 测试工程师前途
请看下面一条来自新浪网的新闻:
软件测试人才:缺口三四十万,年薪十万
http://www.sina.com.cn 2003 年08 月14 日 14:42
中国软件行业协会软件出版分会副秘书长张志明认为,软件测试工程师出现严重短缺的现象是与我国信息产业的发展紧密联系的。信息产业作为我国的支柱产业,对其他各行业所起到的促进作用不可估量。比如说随着电子商务的发展,对中国石化等企业产生了巨大的推动作用,产业经济大幅度攀升。而信息产业的核心就是软件技术,滞后的软件技术是不可
能产生先进的信息产业的。而软件的产业化,主要表现在对软件质量的控制上。随着我国IT行业的发展,产品的质量控制与质量管理将成为企业生存与发展的核心,而能够把质量带动起来的就是软件测试。从软件、硬件到系统集成,几乎每个中大型IT企业的产品在发布前都需要大量的质量控制、测试和文档工作。
缺口高达三四十万
但是前些年,国内企业对产品的测试工作都不太重视,也很少有人员能够系统地参加过测试的培训课程,因此软件测试工程师或者系统测试工程师严重短缺。去年5月份,国内软件测试工程师的人数还寥寥无几,但没过多久,涉及软件测试和软件质量的书籍、专业媒体上的相关文章、特别是网上的论谈便扑面而来。在人们深切感触到信息化时代的脉搏是多么快速而有力的同时,张秘书长也不无担忧地说,这其中人员的素质却是良莠不齐。
据介绍,我国目前软件人才匮乏,有关专家估计缺少软件开发人员高达30多万人,在今后相当长的一段时间内,将缺少更大数量的软件开发人才。而根据有关职位统计资料显示,在国外大多数软件公司,1个软件开发工程师就需要辅有1—2个软件测试工程师。目前,软件测试自动化技术在我国则刚刚被少数业内专家所认知,而这方面的专业技术人员在国内更是凤毛麟角。
目前国内软件业和国外相比,最大的差异就在于:国外把质量和质量控制作为最重要的一项内容。但是,无论在消费类软件还是大型软件的测试领域,与国外相比,国内软件产品的质量掌控体系和标准都是模糊的。国内软件提供商的质量承诺,既没有相应机构的监督,质量水平也没有第三方来认证,承诺显得极其苍白而无力。
薪资看涨可达10万
随着我国软件产业化进程,软件测试职业将成为比软件编程更具挑战性和创造性的职业。软件测试人员必须具有创新性和综合分析能力,必须具备判断准确、追求完美、执着认真、善于合作的品质,以及具有丰富的编程经验与查检故障的能力,对企业人才转型、人力资源再分配、开拓新的发展方向提供了机遇。
人才的紧缺也促使软件测试工程师的薪资逐渐走高,技术优秀的人年薪可高达10万元。从近期的企业人才需求和薪金水平来看,软件测试工程师的年工资还有逐年上升的明显迹象。但是有关职业咨询专家同时也提醒求职者,在行业的选择上,应该看好潜力行业,而不要过分追求当前的热门行业,尽管IT等行业令人趋之若鹜,但这些行业技术更新快,竞争激烈,从业者具有相当大的压力。
下面是来自中国青年报 2004 年 1 月 22 日 的一条新闻:
随着我国软件开发行业的不断发展壮大,软件测试作为软件工程中一个至关重要的环节已经越来越受到行业的关注。然而传统的作坊式开发习惯和测试方法,已经完全跟不上客户的要求。在北京、上海、大连、广州等重要的软件基地甚至出现了软件测试专业人才的极大缺口。尤其是大量跨国软件外包企业对于掌握现代化软件测试技能的人才更是求贤若渴。据报道,现阶段,我国软件测试工程师缺口已达到三四十万;薪资看涨可达10万。
也许读者会责问作者:为什么把相信把如此振奋人心的消息放在最后面?这是因为作者认为,中国测试工程师是一个充满前景的职业。但是要想在这个行业能够有所作为,仅仅知道测试是个好职业还是不够的,还需要付出很多辛苦才能成为这个行业的佼佼者。本章主要讨论测试工程师的职业发展前景,同时提出了一些走向成功的建议。
本章重点包括:
l 测试工程师职业历程分析;
l 分析国内的测试行业现状——待遇、热门的测试职业;
l 一些测试工程师发展案例;
l 测试工程师走向成功的建议。
15.1软件测试职业展望
15.1.1 软件测试职业历程
本节主要讨论一下测试工程师职业发展历程。与国外的专业测试工程师相比,国内的测试工程师专业素质往往要低些,但是这种现状正在得到改善。在国内的测试工程师突出特点是晋升要快的多,2-3年可能走完了国外要10年的路。实际上有很多测试(部)经理也就2到3年的工作经验,而在国外,测试工程师很多至少会有5年以上的开发经验。这种现象主要归结于国内的软件发展相对落后,而测试发展更加落后,最终导致了对测试工程师要求相对降低的情况。国内的测试工程师在这种环境下,大多数待遇较低也就很容易理解了。这种现象的最终影响是国内的软件质量一直上不去。
我们国内的测试行业发展很多时候是一种不正常的发展,测试工程师要想真正的发展好自己、在市场上有长久的核心竞争力,就应该很好的规划自己的人生发展规划。我们可以先借鉴国外测试工程师的职业发展历程,很多时候,国内的软件都是跟着国外的发展趋势,测试行业国外至少比国内起步早15到20年。在国外,通常测试工程师会经过下面的职业发展历程:
1.初级测试工程师
主要是计算机相关专业的本科生或具有一些手工测试经验的个人,主要工作内容是开发测试脚本并开始熟悉测试生存周期和测试技术。我们国内的大多数工程师都在这个水平上,这也是我们软件质量上不去的一个重要原因。
2.测试工程师/程序分析员
具有1-2年经验的测试工程师或程序员,主要职责是编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能。国内的高级测试工程师的水平比这个级别还要略低些。
3.高级测试工程师/程序分析员
具有3-4年经验的测试工程师或程序员。帮助开发或维护测试或编程标准与过程,负责同级的评审,并为其它初级的测试工程师或程序员充当顾问。继续拓展编程语言、操作系统、网络与数据库方面的技能。其能力相当于国内的测试负责人。
4.测试组负责人
具有4-6年经验的测试工程师或程序员。负责管理1至3名测试工程师或程序员。担负一些进度安排和工作规模/成本估算职责。更集中于技能方面。
5.测试/编程负责人
具有6-10年经验的测试工程师或程序员。负责管理8至10名技术人员。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。开发一些特定领域的技术专长。
6.测试/质量保证/开发(项目)、经理
具有10多年的工作经验。管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和大量演示。负责项目成本、进度安排、计划和人员分工。
7.计划经理
具有15年以上开发与支持(测试/质量保证)活动方面的经验。管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任。
国内的测试工程师目前的发展和国外有些类似,基本遵循从初级测试工程师到中级、高级测试工程师,再从测试负责人到测试经理、技术总监的发展历程。测试工程师如果把测试作为自己的职业,就应该充分了解上面的各个阶段的要求,同时在每个阶段打好基础。当然这个阶段的划分也不是严格的,最重要的还是看个人的努力程度。
15.1.2 国内软件测试行业分析
本节首先讨论一下广大测试工程师最关心的话题——测试工程师的待遇,出于为广大企业考虑,这里只讨论测试技术人员在北京的普遍待遇情况,针对企业是2005年的国内IT企业,不含外商合资或者独资企业。
下表是国内不同规模企业内,大多数测试人员的税前月薪情况,单位为人民币(注:改表数据仅供参考)。
职称名 | 不同规模企业测试人员的月薪(人民币) | 工作内容 | ||
少于100人 | 100~200人 | 200人以上 | ||
初级工程师 | 1500~2000 | 2000~2500 | 3000~4000 | 执行收工测试为主,一般是一年以内工作经验的新手。 |
2000~3000 | 2500~3500 | 一年到两年经验的测试工程师,工作内容以功能测试为主。 | ||
中级工程师 | 2500~3500 | 3000~4000 | 2500~3500 | 编写测试用例,执行测试计划。 |
3500~4000 | 4000~4500 | 3500~4500 | 编写测试用例,执行测试计划,能够使用测试工具。 | |
高级工程师 | 4000~5000 | 5000~6000 | 6000~7000 | 熟练使用测试工具,制定测试计划,完成测试任务等。 |
7000~8000 | 编写自动化测试脚本,能够进行白盒测试。 | |||
测试分析师 | 4000~5000 | 5000~6000 | 6000~7000 | 具有一定分析能力的高级测试工程师。 |
6000~7000 | 7000~8000 | 能够设计测试方案,执行测试并对测试结果进行全面的分析,例如性能测试分析。 | ||
测试组长 | 4000~5000 | 6000~7000 | 6000~7000 | 带领5人以内的测试小组执行测试任务。 |
5000~6000 | 7000~8000 | 7000~8000 | 带领15人以内的测试小组执行测试任务。 |
通过上面的数据,我们可以看出:
(1) 企业规模越大,越重视测试,而测试人员的待遇也越高;
(2) 掌握测试工具的测试人员待遇响应高些;
(3) 测试技术越熟练,待遇越高,而具备一定领导能力的测试工程师待遇更高些;
但是我们就整个IT行业来看,尤其是与开发人员相比,测试工程师的待遇显得更低。就作者掌握的资料来看,同一级别的开发工程师要比测试工程师高1~2K(人民币),甚至更多。
测试行业内现在比较热门的发展方向,主要如下:
l 测试组长(或者叫测试负责人、测试经理):这类测试人员通常是测试项目的负责人,既要具备较高的测试技术能力,还要具备一定的管理能力。主要职责是制定测试计划、编写测试计划、监控和管理整个测试过程。测试组长职位之所以受青睐,是因为测试组长可以向上发展为测试部经理、质量经理,也可以横向发展为项目经理,而且通常待遇相对较高些。
l 测试分析师:主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。测试分析师不但测试技术能力较强,还要具备数据库、操作系统等多方面的技术知识。这类职务的发展空间也不错,可以发展成系统设计师等。
l 自动化测试工程师、测试开发工程师:主要职责是编写测试程序、执行自动化测试任务。这类职位的测试人员至少要达到初级程序员的能力,因为经常和程序打交道。发展空间也不错,例如可以发展为程序员。(在国外,实际上这类工作多是程序员背景的人来负责,造成这种现象的原因是国内IT公司不重视测试,程序员不可能去做待遇较低的测试工作,而测试人员去争取成为待遇较高的程序员。)
通过本节的分析可以看出,测试人员在国内待遇普遍低下。实际上这一切皆归因于国内软件公司普遍管理能力低下,国内的软件公司管理能力普遍落后于国外,并且大多数公司存在着发展瓶颈——国内超过500人规模的软件公司为数不多,而过千人的IT公司更是屈指可数了。管理上不去导致规模上不去,规模上不去导致很多公司只能在意识上重视测试,没有能力在测试上进行实际的投入。
尽管如此,测试工程师也没有必要悲观,因为测试依然是充满前景的行业。测试工程师仍然要做好本职工作,没有必要抱怨大环境不好,抱怨是不能解决问题的。只有在不断提高自己的同时,才能迎接测试行业美好的明天。
只有打好基础、具备足够实力的测试人员,在未来才能够接受新机遇的挑战,因为所有的机会永远都属于有准备的人!
15.2对测试工程师走向成功的建议
15.2.1 测试工程师帖子解析
国内软件行业中,测试在现在乃至将来很长一段时间内,仍然是一个没有“地位”的职业,谈如何走向成功,未免有“纸上谈兵”的嫌疑,因为软件测试毕竟不是一个发展成熟的行业,“大师级”的测试专家寥寥无几。但是了解这个行业的人,都会意识到软件测试是未来的朝阳产业之一,我们踏踏实实的做好工作和打好基础,仍然会向开发一样走向成功的。
下面是作者在一些网站上收集到的一些帖子,主要是一些测试工程师对这个行业的看法。从这些帖子中,我们来分析一下如果做好测试工作,走向更大的成就。
帖子一:踏实的发展自己
我在北京工作有4年了。职业发展依次经历了测试员-测试工程师-测试分析师-测试经理。这就是我在北京的4年测试生涯。个人对测试工作有如下的行业观点:
1)软件测试不像一些人看起来那么简单,需要相当深厚的技术背景。但只要掌握要领,也不像我们一些人所认为的那么困难;
2)测试工程师和开发人员相比,可以有机会要多接触更多的不同行业的项目,是一个大的优势。
3)测试工程师要想成功,更多的是靠平时的积累。不管是项目的积累,还是平时学习,两者都至关重要。
4)测试工程师要充分利用网络资源,与同行们充分交流,在互相帮助和学习的氛围中,可以加快自己成长速度。
点评:这是一位比较踏实的测试工程师,一步一步的走着自己的测试之路,我们可以认为他是成功的典范。现实中我们很多测试工程师不是抱怨工资低,就是抱怨自己公司的测试环境不好。其实要想在测试领域走向成功,重要的秘诀就是踏踏实实的学习,认认真真的做好工作。
帖子二:执着的测试工程师
我作测试快5年了。刚开始的时候,我是公司的第一个测试员,虽然公司也在做ISO9000,
但是什么规范都得自己摸索。可是,我仍然坚持下来了,而且大有收获,虽然在公司里不受重视。
但是随着测试工作的不断深入,自己对公司的主流业务(我们作的是行业软件)从外行变成了内行。而且还发现了一些产品的设计方面的欠缺,在老板和开发主管面前树立了自己的一些威信。至少在一些项目进行需求分析的时候,会来征求我的意见。而且,目前做到了不经测试的产品不给客户。当然,在我和开发经理发生分歧的时候,大部分时间老板还是支持开发经理,但我认为是正确的地方还是会据理力争的。
一句话,测试人员是孤独的,寂寞的。但只要坚持,总能有收获的,尤其是在发现了隐藏很深的一些BUG的时候,那种成就感和自豪感真的是一种很好的感觉。
实际上,做任何一行工作,都会遇到不公平。但为什么要去跟别人比呢,只要自己有提高,就是好的。
点评:“敢做冷板凳的人”才是勇敢的人,这位发帖子的测试工程师不但有勇气做了冷板凳,而且能够坚持下来,直到最后取得了很多个人成绩。“实际上,做任何一行工作,都会遇到不公平。但为什么要去跟别人比呢,只要自己有提高,就是好的。”几句朴实无华的话说出了如何做好测试工作的真谛。
测试人员一定要给自己做正确的定位,既然选择了目前地位有些低的测试工作,就应该踏实的做好。
帖子三:好学而有信心的新手
我在一家外企作了一段时间的兼职测试,之前我从未接触过测试。开始的时候只作一些Manual test,后来就开始做Automated test,修改原有的test cases,或者重写一些test cases。然后test小组的leader建议我写测试文档,他说写文档有利于一个tester技术水平的提高。因为你必须要熟悉软件项目的整体框架,洞悉软件深层的结构才能写出高质量的测试文档。
于是,我在网上查了一些关于测试方面的资料,发现测试真的很重要。对一个软件项目而言,老外对软件测试尤其重视。我兼职的这个外企是有一半的员工是测试的,大概有7、8个人。个人认为,国内的软件企业对测试的重视程度还不够,但是毋庸置疑,测试是软件企业产品线上和开发同等重要的。可以预言,未来的国内软件行业,软件测试人员可能会占据软件团队半数左右。同时,对测试人员的能力要求也是比较高的。
综上,我觉得Software test很有前途。当然,这些都是一个测试新手的看法,可能比较片面,全当给大家打打气了。
点评:可以看出这是一位很有远见的测试工程师。现实中很多测试工程师是由于不能从事其它工作才从事测试的,因而工作中也是不断的抱怨待遇、团队环境等不能满足自己的要求。在此建议测试工程师,如果选择了这个行业,就认真的对待工作,抱怨永远解决不了问题。只有象这位测试工程师一样认真分析自己的行业,才可以有更好的职业化发展,否则还不如换一个自己喜欢的工作内容去试一试。
帖子四:郁闷而犹豫的测试工程师
我做软件测试也有两年多的时间了,但是在这两年中似乎没有太多的提高。因为都是黑盒测试,所以一般就是使用产品,最多也就是一些工具测试。可是这都是想到哪就测到哪,也没有真正按照测试文档执行。公司测的东西组合情况也很多,根本没办法。而且公司测试流程也不规范。
刚开始没签约的时候,还是专职测试,签了以后简直就变成打杂的了。什么都要做,连一些设计文档都推了过来,有时候还要去现场了解客户需求,真是非常佩服老板把一个人当三个人用的能力。总的感觉在小公司里,根本就没有测试员这个概念,测试员一般什么都的做。当你提出一堆建议的时候,老板总是会说,现在公司规模还不具备条件,以后会慢慢的改善的,可我感觉过两年公司可能已经倒闭了。
真是有点郁闷,改行做开发,又不想放弃这个很被看好的职业。可是光被看好又怎么样呢?说不定十几年前,扫大街的就像现在的做测试的。都是要做质量保证,扫大街的要保证城市环境的质量,现在呢?他们又怎么样?
点评:其实测试和开发一样,都不是那么想当然的理想,国内开发环境也和测试一样很是混乱。而开发人员发展到高级程序员就会成为很多人的发展瓶颈,薪资和职务都很难再提升。而测试与开发相比的一个巨大优势在于它是一个新兴的领域,拥有更多的机会,测试人员工作三五年,再有一些管理经验,很容易做到测试主管,虽然薪资待遇相对低些,但是给个人的发展打好了基础,而这种优势短期内测试行业仍然会保持,毕竟国内测试行业很不成熟。看准了就应该去做,实实在在的学到知识测试最重要的。
15.2.2 测试工程师职业化建议
通过上一节的帖子,我们可以看出测试职业在国内还是一个充满“心酸苦辣”的职业。而待遇(工作中的地位和薪资等)很长一段时间内仍然是测试工程师心中的“痛”。本节将结合作者的工作经验,对测试工程师职业化道路提出如下的建议。
软件测试是一个绩效不太明显甚至很差的工作,这是所有从事软件测试管理工作都要面对的难题,而根本原因就是整个软件开发团队的开发能力不成熟。因此要想做好测试管理,首先要配合整个团队做好软件过程改进,这是提高软件测试团队绩效的根本原因。其次管理者要提高团队的技术能力,测试工作的范围取决于团队的技术能力高低,只能做简单黑盒功能测试的团队永远是一个没有地位的团队。
对于测试技术人员来说,测试工作是对个人综合素质要求很强的工作,因此测试工程师在技术方面要注意全面发展,从各个方面来提高自己的能力。操作系统、数据库、网络等知识都是测试人员应该掌握的知识。在这种自我能力不断提高中,会逐渐形成较好的学习能力,尤其是快速学习能力。测试工程师不可能学好所有的知识,但是当测试工作需要时,应该有能力学会这些需要掌握知识,学习能力是技术能力的根本。
对于测试管理者来说,在使团队成员最大程度的发挥出自己的能力的同时,更应该积极提升自己。测试管理者特别重要的一点是不能忽略技术的学习,所有的基础工作都离不开坚实的技术基础,例如给成员安排任务时,如果自己不懂,很可能搞错了工作量,甚至发生争执和难以领导的局面。测试经理一般可以向上发展为技术总监等职务,这就要求测试管理者在技术和管理两个方面都要提高自己。
目前测试领域的一个突出现象就是跳槽比较严重,这主要是行业比较浮躁造成的。在此作者给同行们一个忠实的建议:就是尽量不要跳槽。因为跳槽几乎意味着重新开始,跳槽的对个人发展的直接影响就是至少损失半年的适应时间。当然,如果是一个好的机会或者是公司严重抑制个人发展,跳槽对个人的发展更有好处,是应该跳的。不过机会永远属于有准备的人,因此作者建议最后在一个地方踏踏实实的工作两到三年,等自己的能力提高上来再进行新的选择。跳槽前一定要对自己的职业发展进行较好的规划,且不可盲目的跳槽,为了一时的高薪,是目光短浅的行为。
测试行业的前景和发展空间都是很大的,测试工程师要牢牢的打好基础,才能把握住更多的机会!
15.3小结
软件测试是一个专业化程度非常高的软件工程分支专业方向。也是一个在中国面临严重人才饥荒的行业。无论从哪个角度来分析,测试的前景都是广阔的,尤其是这个行业对人才的需求是“精”而不是“多”。
国内从事测试行业的已经很多了,但是实际的情况是很多测试工程师找不到工作或者找不到合适的工作,而很多企业也招聘不到合适的工程师。这种供需矛盾的怪现象根本原因是测试人员水平能力普遍不高,很多人的测试工作经验都是一些机械化的功能测试,或者一些简单的自动化测试。国内的测试队伍仍然是一只杂牌军。
测试是一项需要深厚技术背景的职业,要想成为优秀的测试工程师,不但需要编程方面的知识,还需要数据库、操作系统、网络、系统分析设计等多方面的知识。测试工程师们只有在工作中真正掌握了本领,提高了能力,才能有一个广阔的天空!