Francis Zhou 毕业于加州大学系统圣克鲁斯分校。他于2000年加入微软,曾在总部先后担任软件开发测试工程师及测试组长等职务,参与了Windows XP及Windows Presentation Foundation的开发。2005年初他正式加入微软亚洲工程院并先后参与了TTS, Microsoft Speech Server, ActiveSync, GamesUX等项目的开发及测试。他现任测试经理,主管游戏平台及移动平台多媒体软件的测试开发。
Bug还没出现以前就将其杜绝,这才是软件测试的未来
机遇总是光临有准备的头脑,Francis走上测试之路虽然有些偶然,但他在解决问题的特质才是真正的关键。他是从大学一毕业就加入微软做了一名软件开发测试工程师(SDET),最初做这行是测试这行选中了他,然后他回过头来又选中了测试。在大学时对软件工业的认识很薄浅,以为除了开发工程师就是管理人员。后来微软来他们学校招聘,他第一次听到还有SDET这么个职位,是荐于纯开发与纯测试之间的。当时没怎么在意,后来到微软面试时才知道面的是SDET。因为一直很向往加入微软,所以不管三七二十一就答应了。加入微软之后他有一次偶然碰到了那位到他们学校招聘的人力咨询师,就问她为什么推荐自己做SDET,才知道是自己回答她问题的时候很注重对细节的描述,而且喜欢把问题拆开来了解决,而这些都是一个SDET的基础素质,所以说最初是测试选中了自己。进入微软后做了一段时间后有很多其他的职位可以选择,但在测试行业中总是有着解决不完的难题。软件工程本身就是一个很新的课题,而软件测试工程则是近十几年才开始被重视的,里面有很多需要完善解决的东西。
Francis说:“我觉得在这个领域有很好的发展前景。现在软件测试大多数还只是停留在找bug阶段,而如果真的要做好产品的话要在bug还没出现以前就将其杜绝,这才是软件测试的未来。因为我对软件测试这个行业很看好,就留了下来,所以可以说我回过头来又选中了测试。”
至今没有碰到新的理念能完全否定以前的认识
每个人对事物的认识都不是不断变化的,通过学习知识和项目经验的积累。有些时候人们会产生一些顿悟,对一个事物有了全新的理解。谈到是否在软件测试方面有过这样的顿悟,Francis认为至今还没有碰到一个新的理念能完全否定以前对测试理念的认识,因为他对测试的认识是慢慢积累而后拓展到新的领域的。
刚进微软不久,Francis从一位资深工程师那里学到了自动化测试的几种常用模式,使自己写的自动化测试程序更加规范化。它可以在一个框架中重复利用,更有效率地组建自动化测试案例,这个认识在以后诸多产品测试计划中都起到了很重要的作用。第二个认识是在听了一个演讲后领悟的。那次演讲的主题是怎么样提高测试的效率,如何从找缺陷转换到防止缺陷的产生,使Francis对测试团队的作用提高到了一个新的层面,从单单在产品里找bug,到了如何与开发团队合作把整个团队的工程质量水平提高上来,也就是做到从Bug detection到Bug prevention的转变。
Francis说:“从那以后,我开始更加强调测试团队在产品设计以及开发初期的介入,使很多bug还在设计期间就被找出来并且该掉,不仅提高了测试的效率同时也提高了产品的质量。”
9个月测试了近1500个游戏,总部测试组都无法做出的成绩
想要成为测试经理,我们必须要先了解一下测试经理主要的职责是什么。在微软一个测试经理主要负责制定一个产品或者一组重要功能的测试计划,然后按照计划带领一个测试团队去完成对该产品的测试任务。测试计划里除了要规划哪些功能要测、哪些不要测之外,还要详细解释各种测试方法在该产品测试中的应用方法,以及设置其优先级。制定测试计划也就是对该产品从测试角度进行分析,然后根据现状做出取舍,以便在有限的时间和资源内对产品质量做出最有效的评估的一个战略规划。而后在计划实施阶段,测试经理也要帮助建立起一些必要的工程流程,以保证计划的实施。然后在一个产品最终阶段,测试经理通常会担当质量把门人的角色,保证严重的缺陷都能够得到修复。
从一个测试工程师到测试经理,Francis作过了很多项目。谈到说他觉得最满意的项目,Francis说:“这个比较难说,因为每个项目都有它做得好的和可以改进的地方。如果一定要举个例子,那么我会选择Windows Vista里对Games Explorer的测试。我们是在Vista发布前九个月时从总部那边把这个项目接手过来的。做过测试的人都知道,一个项目的结尾阶段是对测试组最具考验的时候。我们接手该产品的测试任务以后,只花了1个多月的时间就把所有事都接管过来了,而且做得比以前更好、更有效。而后的几个月中我们又找到并修改了Games Explorer中以前没有找的很多缺陷,而且测试了近1500个游戏在Vista上的兼容性。自豪地说,我们组在这9个月里做出了总部测试组都无法做出的成绩。能在这么短的时间内取得这样的成绩,除了归功于他们在先进自动化技术上的投入,主要还是靠着我们建立的过硬的队伍。”
最近,Francis主要在做下一版Windows Mobile里的几个核心组件,以及一个在桌面平台上与Xbox Live有关的用户端软件。这两个项目对于Windows Mobile和Xbox Live平台都是至关重要的,期待会有更出色的成绩。
测试经理必须保证“招进来的人要比自己聪明”
除了技术类的工作以外,测试经理另外一部份重点工作是组建及维持测试团队。微软的成功有很大一部分来自于对人才的重视,而这种重视在招聘期间就可以体现出来。微软每一个正式员工都是经过了很严格的面试才成为正式员工的,而测试经理作为资深的管理人员,招聘与面试自然是少不了的。
Francis说:“我们组的每一个测试人员我基本上都曾经面试过,而且如果对方是测试组长或者经理我一定会参加,因为对方很可能会成为自己的接班人,而我必须保证我招进来的人要比他聪明。仅仅把一个员工招进微软是不够的,做为领导我们有责任为员工创造环境而使他们能最大化的开发他们的潜能,其中也包括对员工事业路线的辅导。”
提到微软亚洲工程院在培养测试人员上的特点的时候,Francis指出微软就是给个人贡献者和职业管理人员都创造成功的机会,让他们得其所好。其实这也是微软多年来一直提倡的内部管理理念。除此之外,他们也强调对测试的重视,以及将测试人员与开发人员同等对待的理念。这些政策使由测试、开发、PM组成的团队能更有效的在一起工作,从而间接的提高了产品质量。
最宝贵的经验和教训在人才招聘和管理上
一个团队的成功离不开他的管理者,但是不是所有人都能成为管理者。成为管理人员之后,很多最宝贵的经验和教训会来自在人才的招聘及管理上。在这点上,Francis的失败给他带来的经验比成功宝贵的多。第一次教训是在刚刚做测试组长后不久,有一个以前做手工测试做的很出色的员工调到了他的组里。因为他们测试的是API,因此他向开发测试软件转行。这次转行做的很费力,他个人和其他组员都受到了一些负面影响,而开始他以为是个时间可以解决的问题,只要他在上面花更多的时间和精力就能解决的。但后来经过一年的失败他最终还是换到了另外一个更适合他特长的团队。
Francis说:“这次教训使我从反面认识到为一个信息工人找到适合他而且他喜欢做的工作是多么的重要。打那儿以后我更加注重员工的兴趣以及特长,为他们创造能最大发挥他们潜能的工作环境。”
IT企业长久发展必须能为个人贡献者和职业管理人员都创造成功的机会
在任何一家企业,根据每个人的不同特质安排不同的工作,不一定每个人都要成为管理者,技术路线和管理路线都应该是可行的。Francis刚成为测试经理以后,寻找能接替他工作的测试组长时发生了一件事情。那时有一个员工工作很努力,技术上也很强,所以顺理成章就叫他做了组长。但之后不久就发现他在带头和管理团队方面并没有想象的那么在行,他自己为这责任所产生的压力导致病倒,而组员也为此变得有些群龙无首。最后通过大家的努力这个项目按时完成。
Francis说:“从这一次我体会到了一个好的技术人员不一定就会是一个好的管理者,而一个IT企业要长久发展就必须能为个人贡献者(individual contributor)和职业管理人员都创造成功的机会。从那儿以后我加强了为个人贡献者创造机会,能让他们不必成为管理人员也能成功。”
采访后记
采访之后闲谈,记者得知在微软,测试是一个必须的环节,不是可有可无的。而且在招测试开发人员时所用的标准是跟开发人员一样、甚至更高的标准,因为要一个出色的测试人员同时也是一个出色的开发人员。其次是对软件开发流程的重视,在开始测试前有测试设计文档,而在软件生命周期的每一步都明确知道测试队伍的任务。这两点是国内软件企业应该研究以及学习的,当然也要根据自己公司的实际情况去适当改革、引进。
说到最喜欢的书,Francis认为”Lessons Learned in Software Testing“是一本作者们把在现实工作中所积累的经验提炼后写出来的有效参考书,里面有很多值得引荐的经验教训,比起那些光谈理论的软件测试书籍实用的多,是本好书。