如何聘用优秀的性能测试工程师?【转:只为更多人能看到原著作者和译者的成果】

2013-03-26  李万峰 

译者:陈能技

原文:What makes a good Performance Engineer? (Scott Moore)

 

朋友最近需要聘请一些性能测试工程师,问我:“一个优秀的性能工程师需要怎样的素质?”在我思前想后最终想到一些东西之后,我觉得有必要跟大家分享一下我的看法,你也可以加入你的意见,这些都有助于老板们在雇佣性能测试工程师时作出精明的选择。

需要声明的是:这里列出的东西目的不是要作为人力资源部的正式职位描述,而更多的是关于原则和概念。

 

技能方面

你需要一位了解最新的计算机技术和概念的人。他需要熟练地安装操作系统(包括Windows、Linux等),自己动手设置网络,为什么这些是重要的呢?因为他往往在工作中需要自己搭建一个测试的实验环境。

 

网络知识要点 – 你需要一位全面了解OSI模型的人,他应该知道TCP/IP,需要知道DNS、DHCP、WINS、路由/交换器/网路集线器,并且知道他们的工作原理。为什么这些是需要的呢?因为他可能需要用到网络嗅探工具来定位网络瓶颈所在,那么很明显,他需要知道自己在“嗅探”什么。作为性能测试工程师,在碰到一些简单的网络问题时应该能自己解决,而不需要把负责网络的工程师拉过来帮忙,他应该能自己解决类似LoadRunner中Controller和Load Generator之间的连接问题,只要知道网络接入、IP地址设置等常见的问题就能解决。

 

协议 – 最低要求是:他能够对项目产品中用到的那些协议轻易地创建测试脚本。当然,最好是掌握更多的协议,有各种各样的协议测试脚本开发经验,例如Winsock、COM、HTTP、Citrix等,因为不知道什么时候也许就能用上这些东西了。

 

虽然我不要求他是一位“代码狂”或者开发爱好者,但是他应该可以看懂HTML、ASP、JSP、JAVA、C等代码,并且可以弄懂代码中的来龙去脉。因为这些东西不仅对于测试脚本开发来说是需要的,而且对于定位代码瓶颈尤为重要,很明显,他对代码懂得越多,能发现的问题就越多。

 

SQL 方面的知识(包括查询语句、存储过程、索引、数据库管理、备份还原等)。数据库是复杂应用系统中造成主要瓶颈的几个原因之一。在这方面找出造成瓶颈的原因一般来讲是DBA的事情,但是如果你的性能测试工程师对此一窍不通,也不知道如何与数据库打交道,则他可能就把一些关键的东西忽略掉了。

 

他需要“统观全局”。他应该知道自己在SDL(软件开发生命周期)中的角色。他应该知道开发人员、项目经理、QA和系统管理员都是做什么事情的,并且知道如何跟他们打交道。有时候,你可能会发现有些技术方面很强的人,他们在自己的“小天地”中很牛,但是也就仅仅看到自己的那片“小天地”,而不知道对其他人在组织层面上的影响。

 

他应该能非常熟练地使用你们公司所选择的测试工具。如果他掌握了其中一个,其他的也会比较容易掌握,但是最好是选择那些至少有一年实际使用经验的人。

 

非技能方面

    跟上面说的技能同样重要的是:性能测试工程师应该懂业界常用的性能测试、性能调优、容量规划方法和过程。而不仅仅懂得按一个按钮执行测试。

 

他应该掌握一套计划、测试和调优最佳实践和方法论,并且可以根据公司的实际情况进行调整、定制。当然,如果聘用的是入门级别的人则不需要这些也可以,但是他们需要按照公司的现状来建立这方面的内容。

 

一个好的工程师应该永远都是一名顾问,即使他的顾客是内部人员。如果他不把每个人都当成是顾客的话,也许你把他请进来就直接造就了一场与开发组的不间断的战争。他应该是温顺的、懂得变通的、能承受压力并保持冷静的、对人尊重有礼貌的人。

 

性能测试小组的终极目标应该是让产品发布前的每个人都保持最佳状态,为发布一款性能优越的产品而努力。作为回报,每个人都喜欢性能测试小组的人,因为他们帮助大家让程序跑得越来越快。其实这就意味着你聘请的性能测试工程师必须拥有良好的沟通能力,他们应该被认为是帮助别人的协作者,而不是被看作整个项目的 “挡路石”。

 

我会比较喜欢引入那些有激情的人。我一般会找那些不断扩充自己知识的人。当他们来到一个项目中,对于那些没有接触过的协议,他们会感到很兴奋,因为这意味着他们有机会学到一些新的东西。他们会与其他公司的、网络上的性能测试工程师保持联系,构建一个属于自己的良好的技术支持系统。他们经常参加各种各样的活动、用户组和会议。

 

最后,还有其他一些简单的要点:他应该有能力提醒和催促、要求别人做一些事情,而且是在能让别人心甘情愿地、乐意地接受的情况下。他应该尽自己所能去帮助别人,即使需要牺牲自己很多的时间,花费大量精力。他应该非常乐意分享知识。他知道什么时候做领导者,什么时候做跟随者。这些都是在聘用时需要考察的内容。

 

小结

我非常幸运可以碰到很多真正优秀的性能测试工程师。那些全职的顾问往往都保持忙碌的状态,因为在对待工作方面他们有相似的素质。我想更多的是他们的非技能方面的能力,而不是他们的技能方面的能力,让他们保持领先、站在更高的位置。关于一个好的性能测试工程师的素质要求,你有没有什么其他的建议了?如果有,欢迎发表、一起讨论。

 

译者后记:

这是2004年的一篇文章,但是今天看起来仍然非常实用。最近大环境不是很好,很多人尤其是大学毕业生找起工作来都比较吃力,这篇文章是关于如何招聘一名优秀的性能测试工程师,但是我觉得更加适合那些希望找性能测试方面工作的人读一读。看自己在技能方面、非技能方面还有哪些欠缺。

一个合格的性能测试工程师所要求的知识面是非常广的,要想成为一名优秀的性能测试工程师,没有一两年的努力是无从谈起的。很多知识我们在大学也学了,但是没有掌握,出来找工作时才后悔当初没有好好学。当然,还有很多实用的技术方面的东西在当今的大学教育体制下很难学到,需要个人努力或者通过后续的培训掌握到。另外,正如文中提到的,很多非技能方面的东西是需要工作中慢慢体会和掌握的。
362°/3629 人阅读/0 条评论 发表评论

登录 后发表评论