October 19, 2006

如何招聘软件测试人员(2)

谜题测试

面试时,有些经理人常常习惯于用逻辑或者算法迷题进行智能测试,我并不反对这种做法,但我不相信这样的测试会像他们所想象的那样有意义。首先,世界上存在着大量的逻辑和算法谜题。在速度、非语言和能力测试方面,实践强化的效果更持久、更明确(见Jepson, A.R. 著、1980年出版的Bias in Mental Testing一书)。其次,速度测试的典型范例就是龟兔赛跑的故事,它足以证明速度超不过思想。或许速度很慢的“乌龟”们有时会设计出更适合的产品或产品测试方案。

一个简单的测试题目

速度测试的一个古老而备受喜爱的谜题应当首推G.J. Myers的self-as-sessment(见1979年由John Wiley & Sons出版的The Art of Software Testing一书)。测试时,给被测者一个特别简单的程序,要求生成有意义的测试案例列表。这个特定的程序包含一个集合抽象物(三角形)。我很喜欢这个谜题,原因是它检测了被测人员的实际能力:分一个程序,找出测试该程序的方法,虽然这个题目已经流传了很久,但它始终具有一定的实际意义。首先,解答过Myers这道谜题的人,一般而言,都回避从未见过该题的优秀测试员做出更好的答案。其次,即便是同等熟练的测试人员,文化上的差异也会产生不同的成绩等级。对于抽象有研究的人(例如几何抽象或者数字之间的逻辑关系),要比那些对用户界面或者产品与设备兼容性测试的人更有优势。

另一例简单测试

在画板上绘出一个打开文件的对话框,对面试者进行如下说明:“这是一个打开文件的对话框,你可以直接输入文件名,也可以点击打开按钮来打开”。然后把画板交给面试者,问问她将怎样测试该对话框。同时向她补充不限制答题时间。而且,她还可以在纸上或画板上记下自己的想法。有些应聘者只要思考几分钟就会开始回答。但是,注意不要批评或质问。

当应聘者停顿时,允许她保持沉默。在她准备完全的时候,她会继续回答。

这是一个典型测试,它允许应聘者在某种程度上可以有种多种答案。有些应聘者也许会停留在设计的表面,指出对话框设计的每一点瑕疵。例如: 没有取消按钮或者对话框标题、没有目录间切换的明显方式,等等。而另外的应聘者可能会忽略用户界面问题,将重点放在测试大文件、小文件、受损文件、扩展名不符合的文件或者远程文件(根据她在文件名栏内键入路径)的打开上。

在测试中我遇到过各种各样不同的回答,随着时间的推移,我已经对这种测试方式进行了改进。现在,我还会像以前那样给出对话框,同样不限制答题时间。在对方完成回答后,我会对她的分析表示赞许,而不在乎她的实际成绩。然后,我会向她列举她所遗漏的测试部分。同时,我还会补充说,从来没有人能够发现所有的测试疑点。有时人们会遗漏问题,只是因为过于紧张或者太匆忙。我花费大量时间列举和讨论各种不同类型的测试方法以及他们可以找出的种种bug。最终,我擦干净画板,重新画一个保存对话框,当然也是错漏百出的,然后让应聘者再试一次。

由于经过了前面的练习测试和指导,两次测验的效果差别被减小到了最少,所以真正的测试是第二次。应聘者收到考官的反馈信息,不再担心自己会当作傻瓜。实际上,大部分的应聘者在第二次的测试中都完全放松,不再那么紧张不安。

通过第二次的测试,我会明白应聘者是否对我的训练方式作出反应、应聘者是否完全理解了我的指导,并在第二次的尝试中更好更完善的加以发挥?如果答案是肯定的,我就找到了合适的应聘者(正是由这项试验测定的)。如果应聘者第二次的分析和第一次相差无几,那她或许就不是合适的人选了。也许她也很聪明、谦虚和风趣,但是,她没有能够学到我所讲述的内容,她也就不太合适于我们这个团体。

有时,我也会免去第二次测试,那一般都是因为应聘者在第一次测试中太差,或者在我的降解过程中过于固执的为自己分辨或争论不休。取消第二次测试,通常就意味着我和这位应聘者的面试实际已经结束,即使我会花一点时间来礼貌地结束这次面试,但是,我肯定不会聘任他的。

Bug报告

编写bug报告是测试人员工作中最基本的,但也是最重要的一部分。其中,有许多的因素都会影响到bug报告的质量,即便是那些有多年经验的熟练测试人员编写的报告也概莫能外。

为了测试这种能力,让面试者从你提供的软件中找出bug并写出报告。如果你所提供的软件bug太难或者太简单,那都不适合于测试,不过你可以从www.bugnet.com站点里再找一个合适的程序。评测一份bug报告很简单,不过,让你的员工试答一份答案也可以提供相对参考,帮助你判断测试者答题的质量。实际上,目前正在使用的还有不少很不错的试题和方法,但这些试题必须根据一个共同的前提: 努力去寻找一个最合适的方式,让面试者处理未来实际工作中需要面对的部分工作。这样你就能了解应聘者真正面临实际问题时的表现。所以,必须认真设计测试题目,以使面试者在不熟悉你的产品情况下,也能客观地找出软件的瑕疵。这实现起来虽然麻烦,但如果能制作这样一份公正、实用、合理的测试题目,对于你的正确选拔无疑是十分有益的。

如上所示,综合考查应聘者对各方面问题的答复,并且面试完所有的应聘者后,只要运用你手中占据的大量资料,就可以公正、准确地选择出你的最佳人选了。

--------------------

本文源自:《程序员》2001.4期,撰文Cem Kaner,编译孟迎霞

No comments: