软件测试是一门非常崭新的学科,目前研究的内容还不很深入,所涉及的只是测试数字、测试函数等一些非常简单的问题,可以说还处于婴儿阶段。当前,软件测试作为一个成长中的专业,在美国已经有大学开设。由于软件测试学科还不成熟,到底它需要一个什么样的专业基础,尚无定论,而且目前还没有一种很好的标准来衡量一个测试人员的优劣。陈宏刚博士以微软公司为例为我们讲述了软件测试的方法。
软件测试工程师:其职能是理解产品的功能要求,然后对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robust),并写出相应的测试规范和测试案例。
国内的一位博士到微软总部参观之后,觉得非常奇怪:“测试人员是做什么的?为什么微软在做产品时,测试人员占了一半以上?”其实,软件测试在产品开发中占据相当重要的一部分,这是一种需要,是微软从二十几年的实践中明白的道理,也是微软从不断的失败中总结的经验。
大家可以感觉到,微软以前的产品有时会发生崩溃、死机等现象,而今天的产品则比五年前的产品更大、更完善,并且要稳定得多。为什么呢?这是因为测试工作越来越好,测试人员越来越多,而且越来越有经验。关于这一点,微软公司曾经算过一笔账:最初,微软公司与大家一样,认为测试不重要,重要的是开发人员。通常,一个团队中有几百个开发人员,但只有几个测试人员,并且开发人员的工资比测试人员高很多很多。经过多年的实践公司发现,为那些出现问题的产品再去修一个补丁程序所花的钱,比多雇用几个测试人员的费用要多得多。
但是,软件测试到底是一门什么样的科学?没有人知道,大家只是在摸索。它需要什么样的背景,也没有人知道。所以,微软的测试人员中,只有很少一部分是从计算机出身的,其余的有学俄语的、英语的、数学的、工程的、生物的……种类特别多,但有一点:测试人员一定要有一种感觉。
由于现在的软件测试仍然处于发展阶段,往往测试人员还是依据本能、靠感觉、靠天赋来做软件测试。如果像用户那样只是通过使用来发现Bug不是真正的测试,这只是一种最基本的测试,你只能发现一般用户的问题。
最后,我以一段有趣而又真实的故事来结束这篇文章。
我在微软总部做测试组长和经理时,经常需要招聘测试人员。我招聘人时通常会遵循两个原则:一是要看他的逻辑性,这是非常重要的一点;二是要看他的思维是否怪异,是否能经常产生一些怪点子。第一点是可以依靠后天培养的,但是第二点恐怕是后天培养不出来的,多少有些天生的因素在里面。
这两个原则是我在多年的实践中得出来的。由于软件测试学科还不成熟,目前还没有一种很好的标准来衡量一个测试人员的优劣。而且它到底需要一个什么样的专业基础,尚无定论。从目前来看,并不是说学计算机专业的就最适合做软件测试人员。
说起来也许大家不会相信,我曾经亲自招聘过一位家庭主妇来做微软的测试人员!
这名家庭主妇已经四十多岁了,是一位海军军官的妻子,三位孩子的母亲。她只读到高中毕业,连大专也没有上(在美国没有上过大专的人是很少的)。她使用计算机的水平也非常初级,而且还是跟着自己的女儿学的。后来她在家闲得无聊,就决定出来找一个工作,而且居然跑到微软来应聘了。
当时,我在面试她的时候就已经发现她的计算机水平很有限,只能达到一个一般用户的标准。但是,我发现她的思维很怪异,怪点子很多,能够很快地发现一些问题。于是,我就随便让她试用一下IE,结果她当场就给我找出了好几个Bug。她完全是凭着一种感觉来找Bug的。
后来,我对老板说,我想雇用她。老板一听,睁大了双眼:“Are you crazy?You want to hire a housewife!(你疯了吗?你居然想雇用一个家庭主妇!)”
于是我跟他说了一下我的想法。他还是觉得让一个大学都没有上过的家庭妇女做测试人员是不可思议的。但是,最后他还是说:“You are the hire manager.You make the decision!(你是招聘经理,还是你自己来决定吧!)”
我最终决定还是雇用她。在开始阶段,她的确存在许多问题。我只是认识到她的感知力很强,却忘了她的其他素质如何。由于她一直做家庭妇女,没有在职业环境中待过,因此显得很粗鲁,经常大声喧哗,利用办公电话到处大声打电话,在办公室里抽烟,而且还经常逞能,走到别人后面得意地告诉别人:“I just found a bug!(我刚刚找到一个Bug!)”,好像别人都发现不了Bug。但是,后来我警告过她以后,她就努力改正了这些毛病,并非常认真敬业。她学得非常快,三个月以后,就已经非常专业了。最后,我的老板终于承认她真是非常厉害,并将她转为了正式职员,现在她恐怕已经成为测试组长了。
从这个例子可以看出,做一名好的普通测试人员并不需要某方面(如计算机)的专业基础,我们不能像评价开发人员一样依照常理来评价测试人员。开发人员肯定需要专业基础,但是测试人员有多种,如做IE的一些手工测试(Manual Test)就不需要任何专业基础,他们是在以用户的身份使用(甚至乱用)产品并从中发现问题。那位家庭妇女就具有这方面的天分。我当时也招聘了一些学生物、物理专业的博士,但他们做得并不怎么样,远不如这位家庭妇女干得好。
(本文选自《软件开发的科学与艺术》一书,电子工业出版社2002年4月出版,该书全面透彻地剖析了微软软件开发的思想与过程。)