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

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

技能方面

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

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

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

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

非技能方面

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

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

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

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