软件测试工程师是低人一等还是一金难求--请看微软观点
最近看到一些文章报道,软件测试工程师那很高的薪水,很高的待遇,可是很多人还是越不过去那种心理障碍。大家都认为软件测试工程师是为那些程序员打杂,甚至被人驱使,去收拾残局......
软件测试工程师真的低人一等么?从薪资待遇上,很多大公司都开了大价钱招募测试工程师,从这个程度上应该改变了现状了,但是很多公司还是抱怨找不到人。
请看微软工程师的观点。
(1)Francis:卓越的软件企业一定会确保测试团队人力资源及水平
Francis Zhou 毕业于加州大学系统圣克鲁斯分校。他于2000年加入微软,曾在总部先后担任软件开发测试工程师及测试组长等职务,参与了Windows XP及Windows Presentation Foundation的开发。2005年初他正式加入微软亚洲工程院并先后参与了TTS, Microsoft Speech Server, ActiveSync, GamesUX等项目的开发及测试。他现任测试经理,主管游戏平台及移动平台多媒体软件的测试开发。
我会从一个职业软件管理人员的角度分析一下测试人员到底是不是“一金难求”。
单从微软中国研发集团招聘数据统计来看,我们每年对软件测试工程师(SDET)和软件开发工程师(SDE)的数量需求基本相等,但SDET总是供不应求。其中原因固然有业界对测试工作的偏见而导致的软件工程师偏重开发而回避测试,但最大的原因还是因为市场上缺少同时具备良好测试及开发能力的工程师。两种原因合在一起导致了合格的软件开发测试人员的严重短缺。
一个良好的测试工程师需要从很多不同的角度考虑问题,在尽量广度覆盖的同时还要拥有深入调查研究问题的能力。而其深入调查研究问题能力 不亚于甚至要超过软件开发人员。可以说,一个SDET比起与其技术水平相当的SDE对产品有可能作出更大贡献,从而帮助他在事业上有更迅速的发展。
就像开发人员有不同水平一样,测试人员之间也存在着很大的区别。一个会设计测试计划、会开发测试自动化软件、会debug、会调查研究问题的测试人员是非常宝贵的,而且往往难以取代。测试团队的不完善会影响产品质量以及其开发过程,从而导致产品不能如期发布或存在严重缺陷。所以卓越的软件企业管理人一定会确保测试团队人力资源及水平。根据以上的事实,测试人员到底是“打杂”还是“一金难求”就不难判断了。
(2)刘俐:环境造成测试人员低人一等这样的看法
刘俐,软件测试开发工程师,微软亚洲工程院测试组,三年软件测试经验,现从事Microsoft Adcenter相关项目的测试工作
这是个经常被人说起的话题。到底测试人员是为程序员打杂的还是一金难求的国内软件行业的特殊人才?
个人认为,测试工程师是一个对专业技术和自身素质都有一定要求的职业。一个优秀的软件测试工程师无论在何处都是一金难求的。以我所在的微软亚洲工程院为例,我们的测试工程师需要和开发工程师,规程经理一起合作,从产品定义(product definition)到产品开发(product development)再到产品维护(product servicing),在整个产品生命周期中,不断贡献各种建议、测试文档以及测试数据。在这样一个开发团队中,测试工程师的地位和开发工程师,规程经理是一样的——是软件开发团队中不可或缺的部分。
正因为测试工程师与开发工程师的同等重要性,使得软件测试开发工程师(SDET)和开发工程师的录用标准基本类似,但是由于外界长久以来的“不平等”观点,左右了很多软件开发人员的选择:大部分人更乐意成为软件开发工程师。这也就出现了所谓的软件测试工程师“一金难求”的现象。
但同时,作为一个优秀的测试工程师,他应该具备与开发工程师相类似的软件开发知识和技能,对被测试的软件产品架构和所使用的技术了如指掌,同时还要有足够的热情和动力,凭借积累的测试经验,去寻找并指出产品中存在的漏洞。如果说以上这些还仅仅是对测试工程师工作要求的简单描述,我们可以看到这样的能够帮助产品开发团队寻找到重要缺陷的工程师永远都会是一金难求的。
对于测试人员低人一等这样的看法,我认为是由环境造成的。在微软公司,我们营造的是测试和开发同等重要的环境。一个软件测试开发工程师(SDET)一般会与开发工程师配合工作,负责开发相应产品模块的自动化测试工具以及测试用例。当然,必须承认,微软公司也一样有很多项目是需要一些具有简单技能的测试人员帮助运行手工测试的。而对于这些测试人员,我并不认为是“低人一等”,而是测试行业的“初级工作”。如同初级开发人员只负责编写一些简单逻辑的模块一样,测试工程师的简单工作不应被大家诟病或者轻视的。同时,只要这些测试人员愿意,他们完全可以在工作中不断成长,最终成为一个优秀的经验丰富的测试人员。
(3)李和恒:软件测试覆盖的范围远大于业界普遍看到的部分
李和恒,微软亚洲工程院软件测试开发工程师,从事测试工作已三年,先后参与过视频编码、在线会议和企业级即时通信等产品的测试工作,并主持web应用测试架构的开发。技术兴趣为泛型编程,架构设计,测试自动化。
目前国内难以看到的高级测试技能使得业内人士低估了测试人员的职业发展空间,进而得出这样的结论。事实上软件测试所需要覆盖的范围远大于目前被业界普遍看到的部分,因此测试人员往往没有机会 去展示或者发展相应的高级测试技能。就一般而言,软件测试除检验软件行为是否符合产品设计之外,还应包括检验。
1. 设计阶段
1.1. 产品设计(feature specification)本身是否符合客户需要,是否容易被不精通计算机的用户所使用
1.2. 架构设计(design specification)是否符合产品设计,是否容易导致缺陷,是否容易导致低劣性能和不稳定,是否有利于测试
1.3. 测试方案(test plan)是否对功能覆盖完备,是否采用恰当方法测试每个不同领域,时间人力是否足够,帮助开发人员提高质量的措施是否恰当和足够,有否保证测试工具的质量
2. 实施阶段
2.1. 某次代码更新是否引发严重缺陷以至无法测试
2.2. 某个开发人员是否引入了太多缺陷
3. 稳定阶段
3.1. 缺陷是否值得修复
3.2. 缺陷修复顺序是否合理
3.3. 缺陷修复会否引发更多缺陷
4. 发布阶段
4.1. 缺陷数量是否有扩大化的趋势
4.2. 待发布版本是否符合发布标准
可见,为了完成这些任务,测试人员应该具备的技能包括
1.了解客户需要(针对1.1),了解行业技术现况(针对1.2)
2.程序设计以至架构设计能力,调试能力(针对1.2,1.3,2.1,3.1,3.3)
3.了解产品相关技术,了解产品本身(针对1.1,3.2,3.3,4.1)
4. 了解开发人员的工作流程(针对2.1,2.2,3.2,4.2)
5. 了解产品代码结构(针对1.2,1.3,2.1,3.1,3.3)
6. 部分的项目管理能力(针对1.3,2.1,2.2,3.1,4.1,4.2)
从中不难发现,一个具备上述能力的测试人员,从事开发人员是绰绰有余的,职业发展的道路和开发人员也没有太大的区别。
原文:http://www.51testing.com/html/67/n-6667-2.html