如存在没有任何错误的程序,那么世界也会不复存在。因错误而存在,因修正错误而存在,这就是软件测试工程师的存在之道。虽然测试不是解决错误的根本举措,但却是必须的手段。
软件测试工程师(Software Testing Engineer)的主要工作职责是,理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试案例。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。据有关调查数据表明,目前国内许多软件企业内部的测试人员和开发人员之比在1:5,与国外软件业1:1的比例还相去甚远。
门派技能:
软件测试工程师主要职责为:
1、负责项目/产品的测试工作,分析产品需求,建立测试环境和计划,保证产品质量以及测试工作的顺利进行;
2、按照软件工程规范和项目管理流程,实施、管理和知道软件开发不同阶段的各种测试,并提交测试报告。测试的计划安排包括人员安排、进度、使用的软硬件环境、测试的流程等;
3、提交测试报告,并撰写用户说明书;
4、参与软件测试技术和规范的改进和制定。
入门资质:
一般需要至少专科学历,一到两年测试工作经验。要熟悉软件的测试技术、方法、流程、测试文档,若想进一步提升,还要熟悉自动化测试的流程、管理及深层开发(包括测试框架等);了解若干主流测试工具,如功能测试工具WinRunner、QuickTestPro,性能测试工具LoadRunner,配置管理工具TestDirecter, Visiual Source Safe等;熟悉一些主流的软件工程方法论和思想,如RUP、CMM、CMMI、XP、PSP、TSP;了解软件工程,软件生命周期模型基础,了解软件配置管理;能够根据不同企业的产品特点,要求了解相应的开发测试方法。对于资深的软件测试人员,有些企业还要求其本身有自主开发测试工具的能力。
由于需要与开发人员及时沟通,因此作为一个出色的软件测试工程师,还需要有良好的沟通技巧以及优秀的言语表达能力,具备良好的团队合作精神。
入门经:
缜密的逻辑思维能力
为了应对软件使用者千差万别的使用习惯和软件在使用过程中出现的各种现象,软件测试工程师应该具有逆向思维能力,能够以用户的角度出发,捕获一切可能性,对细节有不同寻常的关注能力。此外,软件测试工程师还要有穷追到底的精神,并且要善于沟通和撰写各类专业报告。
出色的沟通能力
要成为优秀的软件测试工程师,要具备出色的沟通能力和表达能力,既能够和技术开发人员沟通无碍,又能用简洁明了的话语向客户、管理者等这些非技术人员阐述系统在哪些方面还有缺失有待改进。在同开发人员的沟通过程中,要注意沟通技巧,提高沟通效率,和开发人员保持良好的人际关系。当测试人员发现软件有问题时,不仅需要跟开发人员沟通,找到问题出在哪儿,阐述自己挑错的理由,有时候甚至要提出解决方案,直接参与前期需求和代码的修改。一个优秀的软件测试工程师能够适时地站在各自的立场上考虑、解释并解决问题,从而尽量避免冲突和对抗。
全面的技术能力
作为软件测试工程师,虽然无须精通各种语言各类技术,但必须全面理解被测软件系统,明白该使用何种工具进行测试。要做到这一点一般需要有一定的编程经验,这些经验可以加深对软件开发过程的理解。
耐得住性子
软件测试工作是枯燥的,甚至重复性的,有时需要花费惊人的时间去分离、识别和分派一个错误,因此需要测试人员能静得下心耐得住性子。这个工作不容许有丝毫的心浮气躁。同时,逻辑严密但不乏重复成分的测试工作也容易使人倦怠,因此需要一定的自我督促能力。
规范测试流程
公司不正规的测试流程,不标准的测试方法,将使软件测试人员终日陷入碌碌无为的点击按钮的不良状态中。
晋阶易筋经:
初级测试工程师
入门级,具有一些手工测试经验,开发测试脚本并开始熟悉测试生存周期和测试技术;
测试工程师
能够独立编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能;
高级测试工程师
帮助开发或维护测试或编程标准与过程,负责同级的评审,并能够指导初级的测试工程师;
Team Leader
一般具有5年左右工作经验,负责管理一个小团队。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,能够为用户提供支持与演示;
测试经理
能够担当测试领域内的整个开发生存周期业务,能够为用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工;
计划经理
具有多年纯熟的开发与支持(测试/质量保证)活动方面的经验,管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。
秘传“薪”经:
薪资黄金点
软件测试工程师在IT行业中越来越受到重视,其薪资也节节高升。测试工程师的起薪从2000~5000元/月不等,若有四年工作经验的话,薪资在8000元/月左右,具体视不同地域、不同性质企业、测试工程师的不同能力而定。一般工作5~8年的软件测试工程师的薪资是刚出道时的新手的一倍,而10年以上工作经验的软件测试工程师薪资却走了下坡路,和5~8年的从业者持平甚至有些企业开出了略低的薪资,看来这行的折旧率较高。
软件测试行业的从业者7成左右都拥有本科学历,本科学历的从业者的薪资约为大专学历从业者的1.33倍左右,而硕士学历的从业者薪资起点明显高于本科学历从业者,约为后者的1.49倍。一般外语能力精通者的薪资为平均薪资的1.29倍左右,熟练者为平均薪资的1.09倍,值得注意的是,深圳、杭州和大连的外语能力精通者的薪资均超出平均薪资不少,其中杭州的外语能力精通者的薪资是平均薪资的1.79倍。
以3.5年左右从业工作经验的软件测试工程师的各地薪资情况来看:
深圳地区的平均年薪是全国各城市最高的,超出7万元,其中外商独资欧美企业的年薪为7.8万元,国营企业的年薪紧随其后,超过了7.3万元,合资/合作非欧美企业的年薪较低,约为6万。
北京地区该职位的平均年薪逾5.8万元;其中外商独资企业的年薪为全国之最,将近8.5万元,而其余各类型企业的年薪都在5~6万元左右。
广州地区该职位的平均年薪约为4.5万元;其中外商独资欧美企业的年薪最高,达到了7万元;合资/合作欧美企业也能拿到6.2万元的平均年薪,合资/合作非欧美企业就较逊色,年薪不到4万元。
上海地区软件测试工程师的平均年薪为6.3万元,欧美独资和欧美合资的薪资不相上下,分别为7.9万和7.7万元。国营企业略高于平均线,达到6.5万元,其余各类企业则都表现平平。
杭州地区该职位的平均年薪达到了5.5万元;其中外商独资欧美企业和合资/合资欧美企业的年薪相当,均为6.9万元,国营企业的薪资也颇吸引人,超过了5.9万元,民营/私企和合资/合作非欧美企业的年薪均不到5万元。
大连地区该职位的平均年薪为3.8万元;其中外商独资企业和合资/合作欧美企业的年薪均超过了4.7万元;国营企业的软件测试工程师的年薪也近4万元左右,而民营/私企和合资/合作非欧美企业的年薪则相对较低。
福利
上海地区的软件测试工程师享有的带薪年假是全国各地最多的,一年中平均有10天,北京、广州、大连均为8天,杭州和深圳相对较少,为6天。
以上这些地区在软件测试的培训方面都做得不错,基本上均有6成以上的从业者可享受到公司提供的培训计划,但上海的软件工程师的培训比例不到5成。杭州和深圳两地的培训是全国各地区最出色的,逼近8成。
深圳、上海均有2成的从业者可享受房贴或者补充住房公积金,大连和北京则有3成以上的从业者可享受公司的房贴或者补充住房公积金,广州更是达到了4成以上,而杭州此项福利的比例较低,仅为1成。
2.做软件测试至少要有四种能力 来源-http://www.rapidtesting.cn/Html/Career/011076.html
曾经在方正研究院担任测试工程师的肖先生分析说,能胜任软件测试工程师的人,至少需要以下几个能力。
一、缜密的逻辑思维能力。为应对软件使用者千差万别的使用习惯和软件在使用过程中出现的各种现象,软件测试工程师应具有逆向思维能力,能够以用户角度出发,捕获一切可能性,对细节有不同寻常的关注能力。
二、出色的沟通能力。优秀的软件测试工程师,应具备出色的沟通和表达能力。既能和技术开发人员沟通,又能简洁明了地向客户、管理者等这些非技术人员阐述系统在哪方面有缺失。当发现软件有问题时,不仅需要跟开发人员沟通,找到问题出在哪儿,阐述自己挑错的理由,有时候甚至要提出解决方案,直接参与前期需求和代码的修改。
三、全面的技术能力。作为软件测试工程师,虽然无须精通各种语言各类技术,但必须全面理解被测软件系统,明白该使用何种工具进行测试。
四、耐得住性子。软件测试工作是枯燥的,甚至是重复性的,有时需要花费惊人的时间去分离、识别和分派一个错误,因此需要测试人员能静得下心、耐得住性子,心浮气躁是做不好的。
3.从人的性格:哪些人不太适合做软件测试 来源-http://www.rapidtesting.cn/Html/Career/011820.html
我觉得有几种性格的人可能不太适合做测试,当然个人实际情况、应变能力不同可能会有不同的遭遇.
1.耐性不足的人
这种性格的人在做测试时候最大的一个难度在于碰到一个比较复杂难测的系统时,可能花了不少时间还没发现什么问题,不过明显感觉肯定什么地方有问题存在的,这时候很容易产生急躁心理,导致大脑一片混乱,思路没有了,后面测试更加难进行下去。
2.沟通能力不好,抗打击能力不强的
这种性格的人也许测试发现了一些问题开发人员不接受,说了一些可能让你不舒服的话,而你不能和他进行有效的沟通,这时候最大的可能性就是会产生一种失落感,觉得自己的工作是不是那么重要或者自己能力有问题?
3.逻辑太混乱,没有思路的人。
这种人应该可以做测试,但是也许不能一个人担当重任,特别是在资源比较紧缺,项目组里面只有你一个人的时候,测试的思路是相当重要的,没有思路,逻辑不清的人肯定无法将测试顺利,全面,有效的进行下去。
4.比较懒的人
这种人肯定不会花时间去整理自己的经验,导致测试技能的徘徊不前,也许永远停留在一定的水平上不会提高,最后失去对测试行业的兴趣.
5.学习能力不强而又不积极主动的人
对于测试人员来说,对业务的熟悉是非常关键的一方面,熟悉了业务才能更好地做好测试,而对很多项目来说,就国内现在的情况,测试人员进入的时候也许是项目进行到一定阶段了,需要很快熟悉业务进入角色,而你熟悉的较慢又不愿花过多的时间去学习,也不愿主动跟业务人员去沟通学习的话,肯定会花过多的时间在测试中慢慢去熟悉业务,这样效率低下是显而易见的。
4.从企业问题来了解软件测试人员的作用---来源http://www.rapidtesting.cn/Html/Guild/011813.html
先讲一个案例:
企业网站已经运行多年了,访问速度越来越慢,最近用户反映,打开个网站首页快的时候也要2、3秒,慢的时候就需要喝杯茶了,还不如上外网新浪搜狐快,厂领导重视这个问题,信息部的领导当然不敢怠慢。
首先组织人员参观附近的运行比较好的相关网站,比如总公司的,地方上的信息港等,现场咨询了相关设计人员若干问题。
然后就组织会议,召集相关人员讨论、分析网站首页慢的原因。网站的开发人员、维护人员、测试人员以及各方领导都参加了分析。结论很快就出来了,接着领导们开始提改进建议。但会议却好象陷入了僵局。
网站首页慢的原因如下:
1、在首页打开的数据库(表)太多。因为首页要各车间、单位的最新数据列表,提取最新数据占用了太多时间。
2、数据库有问题。测试人员在逐个测试数据库时发现,虽然网站涉及多个数据库服务器,如办公邮箱服务器、邮件服务器、文件服务器、各生产数据服务器等,但有一台服务器明显慢了许多,断掉这台服务器,网站首页的打开速度就进入毫秒级,将这台数据库的数据导出至另一台备用服务器上,并将WEB服务器上的链接指定到备用服务器,访问速度依然是毫秒级。
3、首页中的SQL语句有问题。特别是Oracle中数据表指针的移动很费时间,需要优化。
解决方案也接着就出来了,如下:
将首页改为静态的。首页中不再访问所有的数据库服务器,而是若干文本列表,这些文本由其它数据库(表)在新增记录时,同步在WEB服务器上生成。首页是静态的,速度就会快多了。
测试人员表示反对这种方案,认为问题出在数据库上,而不是网页的动态或静态上,但在讨论的过程中,领导强调指出问题必须给出解决方案,否则不予考虑。于是,表态的人少了,会议沉默了,然后就是方案的实现,解决问题的时限,散会……
这是个真实的案例。在本案例中,测试人员先期很积极的寻找网站速度慢的原因,但后来归于沉默,是因为测试人员没有能力解决这个问题,只能从多个方面寻找问题的原因,但谁找出问题谁负责解决的做法,打消了测试人员的积极性,测试人员是找问题的,不是解决问题的。多一事不如少一事。可以预见,这个方案最终会不了了之。
这就是在大多企业中软件测试人员的一种窘境,测试人员即要发现问题,还要解决问题,并且测试人员和开发人员一般在同一个部门,发现的问题越多,自己不解决,就给开发人员造成的返工量越大,开发人员和测试人员的矛盾很多,又得不到有效的解决。
总结企业中测试人员面临的问题:
1、测试人员的工作量很大,同时要为多个项目做测试,但收入却很低。
2、测试人员不具备独立性,企业的信息部门很少设有测试组一类的,测试人员往往和开发人员在同一个科室,开发人员有时兼做另一个项目的测试人员,表面上是方便了与开发人员的交流,实际上却阻碍了测试工作的进展,碍于情面,谁都要在组织内生存,谁都不愿以工作影响了同事关系。
3、领导对测试工作的轻视问题。有些领导不懂测试流程,甚至分不清集成测试和系统测试,不给测试人员说话的空间,喜欢自己说了算,当然这是题外话。
4、测试人员要解决自己发现的问题。虽然开发和测试角色可能出现重复,但两者的侧重点是不一样的,测试是发现问题,而开发则是解决问题。在实际工作中往往不是这样,特别是在一些技术问题分析会议中,谁提的问题多,谁就最终负责解决问题。迫于生存,测试人员一般不多表态。
5、测试人员的素质。程序员在干不动编程时,才会转行做测试,做职业转行的缓冲,一些优秀的编程人员一般都安排做开发了,优秀人员不做测试最重要的原因是收入低,领导也不会安排这样的人做测试,认为是人力资源浪费。所以,从开发岗位上转行来的测试人员,即使有丰富的开发经验,他也不能对所发现的问题全部解决。优秀人员的缺席也导致了测试工作效率降低。
5.测试人员如何获得高薪?----
这听起来是个很有诱惑力的话题;也的确是个很有诱惑力的话题。很多做测试的朋友千万次的问,测试行业能挣到高薪吗?从事测试工作有发展吗?我能够忍受枯燥无聊的测试工作吗?
这里我不想谈所有问题,只谈谈如何获得高薪,获得高薪需要哪些素质,那些条件,多少年的工作经验等。
我认为的测试人员分类
测试人员在软件开发中基本由两大类:一类是起步就做测试,一类做过开发后来转为测试。
最近在网上同一些朋友聊天,经常聊到测试人员是否需要开发经验这样一个话题。我个人认为,又开发经验更好。我也倾向于由开发经验的测试人员可以获得更好的发展。但这都是一个动态的过程,起步就做测试的人可能后来也慢慢掌握开发经验。
测试人员的成长阶段
测试人员基本上可以分为如下几个阶段,手工测试阶段、工具辅助阶段、定制工具阶段、初级管理阶段、高级管理阶段、业务测试专家(此阶段在等同于在管理方面发展的初级、高级管理阶段,这个阶段的测试人员熟悉测试的各个方面,逐步专项某个领域的测试)。
手工测试阶段
处于此阶段的测试人员一般是刚刚进入这一行,或者刚刚换了一个公司(新来的吗)。这个时候是很重要的积累时期,自动此时工具只是一个辅助,重要的时你要有如何测试一个软件的思想。
工具辅助阶段
这个阶段的测试人员对各个类型的测试都有所了解,为了提高测试效率,开始使用测试工具;或者为了以后的职业发展开始关注自动测试,并主动或被动的学习测试工具。这时候自己心里一定要有数,那些测试工具会对职业生涯有帮助。目前国内的测试人员都在学习一些大厂商的测试工具,这些工具的确不错,但是不一定都对以后的职业发展有利。一般来说这个时候首先要确定自己在功能测试方向发展还是在性能测试方向发展。这样可以有针对性地学习各类别的工具。当让有时间和精力可以多学习一些,多多益善。另外还有一些白盒测试工具,如果想在白盒测试方向发展可以多多研究。
定制工具阶段
这是工具辅助阶段的延续,一般定制工具分为两种,一种是对第三方厂商的工具进行插件开发或利用工具的脚本语言开发可重用的类库;另一种是开发公司内部使用的工具。第二中情况难度较大,需要测试人员有较高的开发水平。一般来说只有在商业测试工具不能满足测试要求时才开发自己的测试工具。当然有时候不需要使用庞大的商业测试工具的时候也可以自己开发一些小的、能够满足测试要求的工具。这一般使用产品开发所使用的语言或者Perl、Python等。对于使用Java开发的产品可以使用BeanShell等脚本语言。
业务测试专家
此阶段的测试人员已经熟练的掌握了多种工具,或者已经具备了为产品定制测试工具的能力。这个时候的测试人员应该做长期的职业生涯考虑,如果从事某个领域的产品测试时间较久,可以继续深入研究此领域里的相关技术,逐步能够提出对产品开发有建设性的建议。一般来说这个阶段的测试人员会在产品规划的前期作为高级测试人员参与进去,为产品的需求搜集和设计提供建设性意见。
初级管理阶段
一般来说这个阶段是指你处于项目组长位置的时候。这时可以制定测试计划,组织组内人员编写、修改测试用例。这个阶段的人员一般一般可以考虑向业务测试专家方向或者高级管理人员发展。
高级管理阶段
经历初级管理阶段后,积累了初步的测试管理经验。这时候一般会参与测试计划的制定、人力资源调配、各种资源分配等。
各阶段的薪资状况
就目前国内市场来看,按照测试人员所在的公司类型大致可分为如下几类:
1。国内中小企业
2。国内大企业
3。测试外包公司
4。国外企业
同一个等级的职位在不同类型的公司可能有不同的定义,比如在国内的小企业可能就以两个测试人员,那你可能身兼多职,既是项目组长,又是项目经理。国内大企业一般来说同国外的企业的职位基本对应,但是一般来说国内大企业的测试经理到国外的公司也只能是个测试组长。