金融领域的资产和财富通过数据以数字表现。此前介绍了数据仓库(Data Warehouse)和数据库(Database)管理(DBA)与运行数据库的操作系统UNIX平台以及计算机系统非常重要的信息安全。无论IT业未来开发领域谁更有前景,Java与C#学哪样好,尽管是IT开发人员经常遇到的两难问题,但软件测试(QA)人员最缺,这是IT企业的人力资源部门,经常仰天长叹,百分百地会回答的问题。近年来,软件测试人员迅速窜红,是当今IT企业最抢手的人才,成为IT业界重点培养的对象。
究竟是何魅力让软件测试人员成为人们眼中的“金饭碗”?就业竞争压力小是主要因素。目前软件从业人员中,真正能担当软件测试职位的人才不多,缺口有逐年扩大的趋势。人才的极度匮乏为企业发展带来消极影响,但对测试人才就业却有积极意义。人才供不应求让软件测试人员的就业竞争压力明显小于同类其它职业,有利于从业者的身心健康。另外,由于软件测试工作职位独立设置测试部门、对测试人员有强烈需求的多为独具慧眼的大中型IT企业。软件测试人才不需要在小企业积累经验就能获得知名企业的入门通行证,工作起点高于同类其它职业,高起点的年薪甚至超出很多相同服务年限的软件开发人员的薪资水平。
与其他IT职位相比,软件测试人员最大的优势就是发展方向多,但这有助于多元化发展。软件测试工程师如果喜欢钻研技术,并且对编程也有一定兴趣,朝技术方向努力肯定就错不了。由于工作的特殊性,测试人员不但需要对软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后的等领域都要涉及。在这过程中,测试人员不仅提升了专业的软件测试技能,还能接触到各行各业,项目管理、沟通协调、市场需求分析等能力都能得到很好的锻炼,从而为自己的多元化发展奠定了基础。
软件测试工作能提供更广阔的发展平台,经过软件测试工作岗位的人才往往是行业中的多面手,比其它IT人才具有更强的可塑性,在技术、管理、市场甚至其它非IT领域都能得到良好的发展。由于工作的特殊,软件测试人员往往更偏好认真、耐心、细致、敏感、等个性元素,而这在一定程度上与女性的个性气质相吻合,软件测试岗位的男女比例基本差不多,无性别歧视。软件测试人员的职业魅力列了一大堆,归根结底就一句话—发展前景相当不错。
软件测试的重要性已经逐渐获得认可,软件测试工程师供不应求,公司招聘不到合格的人才。从入门级的初级测试工程师到高级测试工程师以及项目Leader全线短缺。有志于为软件行业贡献的移民朋友们可以考虑,心虚没有底气的赶快回炉重造一番,趁着人才供不应求的大好发展时机显示身手。只要你有软件测试的本事,那就有挑工作的机会。如果没有这样的背景,对于想进入软件测试领域的移民朋友,应该如何规划自己的职业发展?
很多人认为软件测试只是在软件编写完成以后通过简单使用发现Bug,没有什么技术含量,一般人员可以承担。以前对软件测试还是有着不少误解。就像猴子跳上键盘,蹦来蹦去,偶然踩到了某一个健,或者就能够发现一个两个缺陷。而事实上,软件测试工作已经逐渐演变成一门独立的科学,包括了配置方案、测试机制、跨平台策略和产品性能、稳定性等独立区域的知识模块。同时,软件测试员需要参与包括需求分析—设计—编码等所有软件开发环节,尽可能地发现每个环节可能存在的Bug。很多软件测试工程师基本上都是由从业多年的开发工程师转变而来。
软件测试工程师地位的变化,源自信息产业的发展以及软件企业自身、用户成熟度的不断加深。一方面,计算机使用越来越普及,越来越多的领域使用了计算机,特别是一些重要领域如国防、银行、金融、通讯、航天等,对软件质量要求很高。在软件业高速发展的同时,软件质量问题越来越突出,甚至成为软件产品研发和信息化发展中的一个制约因素。软件测试经费,一般会占到整个项目费用的30%~40%。
用户成熟度不断增加,对产品的个性化以及安全等方面有更高的要求。如果产品在使用中如果出现各种各样的问题,只能通过维护解决。那么市场就不会选择这个产品。一旦将质量问题转移给维护,就会忽略开发过程中需求分析–设计–编码阶段可能产生的Bug。这些Bug会逐渐放大,最后扩散到整个系统中,不仅很难寻找到,而且修复代价更高。在销售软件时获取的利润,会在之后的维护中逐渐被消耗殆尽。这对企业来说,显然不是一个明智的、可持续的选择。
当测试人员证明了项目应用程序充满了bug时,是做一份令人满意的工作还是糟糕的工作?从开发人员的角度看,那是糟糕的工作。看上去很可笑,项目经理责备测试人员拖延了产品的发货期,开发人员抱怨说测试人员对程序太粗暴了。很显然,没有比bug数量更能代表成功的测试了。测试项目时如何与开发人员建立成功的关系,需要怎样的技巧。当作为一个软件测试人员开始职业生涯时,就要意识到在开发人员和测试人员之间的的工作有时候就是对抗,这是非常普遍的。对开发人员的各种不友好的回应,是所有的测试人员在职业生涯中经历过的事。从冷漠的耸肩到明显的敌意,一个测试人员不得不忍受来自开发人员的许多态度。
测试人员很难保持一个积极的态度。但要保持优先的正直,并且向前推动高质量的项目是由测试人员决定的。最好的测试人员不是那些发现最多bug的人,或使最多开发人员尴尬的人。最好的测试人员应该是能够使最多的bug得以修复的人。作为一个测试人员,发现使开发人员信服你发现的缺陷是非常困难的。通常,如果一个测试人员找到了一个bug,程序员将准备10个理由。有时让开发人员接受他们的代码是有缺陷的这个事实是很困难的。
开发人员需要来自测试小组的支持,测试小组可以保证发现的新bug是值得关注的,健康的并且对于使产品更好是非常重要的。人性的方法是经常帮助测试人员更多的了解编程人员。不用多久,相同的一个人将站在你身边了并且笑着指出引起bug的错误,热忱将帮助开发人员对你的错误报告说“Yes”,这是重要的第一步。然后试着巧妙地表述你的发现,并且不带任何责备地解释bug。
“我确信这是一个很小的bug,你不用花多少时间就可以处理掉,到目前为止这还是一个不错的程序。”开发人员将会跳起来并且拥抱你的bug。用一种心理方法,有时表扬一下开发人员的工作。为什么大多数开发人员不喜欢测试人员的错误报告的原因非常简单:就是他们认为测试人员在诋毁他们的辛勤工作。有些测试人员只在出现问题的时候才和开发人员沟通。对于大多数开发人员而言,软件是他们自己的孩子,而你只是一个妨碍他们的外人。告诉开发人员因为项目开发才有测试人员存在于公司,而且由于测试人员的存在,项目的开发工作才得以继续。
测试人员和开发人员之间的关系是一种共生及互惠的关系。没有人喜欢被指出错误。这是人类的天性。试着解释修复那个特别的bug的需要胜于只是用庞大的bug报告向开发人员开火。一连串的缺陷不只会激怒开发人员,而且会使你的辛苦工作对他们来说是无用的。正象一个人不可能独自测试完一个程序一样,开发人员也不能设计程序没有任何错误,而且在其他事情发生之前,他们需要先了解清楚。有错误是预料之中的事,他们也是过程中的一个正常的部分。有些测试人员尽可能将自己的错误报告强硬,甚至不听开发人员关于为什么不能修复一个错误和不能实现一个功能的解释。尝试一些可以让自己放松的方法。到开发人员身边一起分析错误的优先级和严重程度。如果开发人员在其不愿变更的背后有一个合理有效的解释,试着理解他。只是确信了解了要在什么地方划定界限以保护产品的最终质量。
外交手段和适应能力不能替代谨慎的需要。开发人员经常会找借口说因为没有意识到(或者测试人员没有告知)那个错误有多严重所以拒绝修复它。用足能够清楚展示风险和问题严重性的方法设计测试人员的错误报告和测试文档。甚至更好的办法是召开一个会议并且向他们解释那些问题。一个聪明的测试人员是在倾听和执行之间保持平衡的人。如果开发人员不能使你信服错误不应该被修复,那么测试人员的责任就是使开发人员信服要修复错误。(待续)