测试工作是一项极其重要的质量保证活动,因此测试部门既是软件发布质量把控的出口,也是客户意见反馈的入口。但是因为之前的不重视,导致了软件测试行业的发展相对滞后,优秀的软件测试工程师非常难得。
一个优秀的测试工程师要对一些不易重复出现的错误找到规律,要能够帮助开发人员定位问题,能够对代码进行一定的检查,将错误尽可能在项目生产的早期阶段发现,同时,测试工程师还要对各种编程语言、数据库都有一定的了解,要有编程的概念。
那么,什么样的人才适合做软件测试工程师呢?
一般情况下,分为技术技能需求和职业素质需求。
一、基础要求(技术技能需求)
软件测试工程师岗位基础要求一般包括以下几个方面。
1.学历
学历,代表学习的能力。软件测试工程师的最低学历要求一般是专科以上学历,有个好的基础,才可能有好的结局,因此,很多公司对学历有一定的要求。
2.专业
专业基本无要求,当然要是计算机及相关专业更好。不过特殊的行业可能有特殊的需求,例如做建筑软件的公司,招聘测试工程师倾向于招聘土木工程专业的;做医疗软件的公司,则倾向于医疗专业毕业生,因为这样专业更对口。对于基础技术而言,因为软件测试本身就需要从最终用户的使用角度考虑,所以专业往往没有特别的要求。
3.经验
很多公司在招聘测试工程师时希望应聘者具有1到2年以上的测试经验,企业要求具有一定经验的目的在于,降低员工工作风险、缩短员工适应周期、减少员工培训成本。如果应聘人员具有对口的问题解决能力,则是否有软件测试工作经验不是关键问题。
4.测试技术
1)了解软件工程、软件生命周期基础知识,了解软件配置管理;
2)能够根据不同企业的产品特点快速理解需求;
3)了解相应的开发、测试模型,如SCRUM、敏捷测试等;
4)熟悉软件测试的常用技术、方法、流程;
5)熟练掌握软件测试文档写作,如测试计划、测试方案、测试用例、缺陷报告、测试报告等。
6)熟悉自动化测试的流程、管理及深层开发(包括测试驱动、测试框架等)。
7)了解若干主流测试工具,如接口测试工具Jmeter、PostMan、SoapUI等,功能自动化测试工具Selenium、Appium等,性能自动化测试工具LoadRunner、Jmeter等,测试管理工具QualityCenter、ApplicationLifecycleManagement(ALM)、ClearQuest、禅道等。
5.开发技能
对于资深的测试工程师,需要一些开发知识,如编程语言C、C++、Java等,在测试过程中开发一些测试工具、测试脚本等。在此过程中,需要掌握数据库(MySQL、SQLServer、Oracle、MangoDB)、操作系统(WindowsServer、Linux/UNIX)等。
6.业务知识
因为不同业务有不同的测试方法,所以企业招聘测试工程师时,一般需要应聘者具有招聘企业的业务背景知识,目前一般集中在金融证券类、移动通信、电子商务、页游手游、移动互联、Web门户等系统。
二、职业素质要求
软件测试工程师所需具备的基本职业素质为:
1.责任心
大多公司以缺陷的多少来衡量软件测试工程师的工作质量。但是测试工作,在不同时段,其特点不同。如在测试工作开展初期,被测对象中存在大量的缺陷,测试工程师毫不费力,即可找到很多缺陷。随着测试工作不断深入,测试版本不断迭代,不论测试工程师再怎么用心,也不一定能找到更多的缺陷。因此,以缺陷的多少来衡量软件测试工程师的工作质量,并非一种明智、公平的考核方法。
在实际工作中,如果没有明确的测试需求,没有完善的测试用例,软件测试活动在很大程度上就依赖于测试工程师的责任心,主动完成测试任务,确保自己的工作质量。
2.沟通能力
软件测试活动中,沟通能力并不是通常意义上所讲的交流,其包含的更多成分是技术含量以及服务意识。
测试是连接开发和客户的纽带,与开发人员沟通,需要从专业知识角度考虑,当发现的缺陷开发人员不认可时,如何从理论、实际应用以及缺陷可能引发的后果等角度去阐述缺陷,使研发人员认同测试工程师的判断,所做出的阐述要有理有据,而不是强词夺理,更不是争吵。
时刻记住,缺陷很大程度上是开发人员犯下的错误,令人承认自己犯错通常都是一件困难的事,这就需要软件测试师具有一定的沟通能力。
3.团队合作精神
软件产品研发活动,需很多部门协同工作,市场部、研发部、测试部、售后服务部、运维部等。一个高质量的软件产品从设计、生产到发布,是众人努力劳动、智慧的结晶。单枪匹马闯天下的局面已经不复存在,现在几乎每家公司都在强调这种精神。例如,华为公司,在新员工入职培训中,会通过多种形式,如演讲、相声、小品等来培养、增强员工团队合作意识。
软件测试工作从其工作内容来看,是极具破坏性的工作,开发活动则是建设性的,从这点可以看出,如何沟通,如何妥善地协调开发与测试同事的工作关系,将决定软件生产活动的工作质量。因此,软件测试工程师需要具备高度的团队合作精神,与其他同事一起努力,为保证软件产品的质量做出贡献。
4.耐心、细心、信心
软件测试工作中,需要测试工程师有极大的耐心、细心、信心,与性别无关。随着测试的深入,发现缺陷越来越难,不是所有的缺陷都能容易地找出,这个时候,就需要耐心、细心了。
人无完人,在项目管理不规范,文档不齐全等客观因素,增加了软件测试工程师犯错的几率。对需求的误解,业务知识的缺乏等原因,可能会提出一些不是缺陷的缺陷,研发人员可能对此类测试工程师存在一些看法。此时测试工程师应对自己的观点有足够的自信心,谦虚地接受研发人员提出的意见和建议,提高自身发现问题并解决问题的能力。
5.风险防范意识
软件测试与软件开发工作内容的不同,导致了在某些时候测试工程师发现缺陷后,开发人员会以各种借口将该缺陷掩饰过去。测试工程师则需从测试理论、测试技术、实际用户需求角度出发,采用一定的策略去准备各种测试数据,从每个细节上设计不同的用例,去证明缺陷确实存在,或者确实可能造成比较严重的不良后果。
从事实出发,尽可能多地找出软件缺陷,协助开发人员定位问题,以求解决问题,这样才能不断地发现问题、解决问题。
软件测试工程师作为软件质量保证活动实施的主体,一定要有风险防范意识。当发生过的缺陷再次重现后,需分析其重现的原因,找出解决办法,从而避免再次出现。要善于分析测试结果,缺陷分布情况等。只有不断地总结,加强缺陷预防的能力,才能提高软件测试的工作效率。
6.持续学习能力
大多数企业、公司在招聘软件测试工程师时,提出了很高的要求,如开发语言掌握情况、测试理论熟悉程度、测试工具使用经验,等等。为了获得更多的发展机会,提高自身的职业竞争力,软件测试工程师需要不断地学习,掌握开发人员所使用的编程语言,能更多、更有效地找出缺陷,掌握一定的测试理论、测试工具将会大幅度提高自身的工作效率。同时,也为自身的发展奠定坚实的技术基础。
软件测试工作其实对软件测试工程师的技能要求很高,例如,编程语言不一定要精通,但测试工程师必须了解大部分的编程语言,要具备软件开发的思想。测试工程师还要掌握众多的业务知识。因此,学习能力对于测试工程师来说是非常重要的。