一位微软软件测试开发工程师的软件测试生涯经历

发表于:2009-06-01来源:作者:点击数: 标签:软件测试微软工程师经历生涯
2005年的秋天,李敏还在上海交通大学念研究生,还有半年就要毕业了。一天,同学发了个链接给她,是微软在上海招聘实习生的消息,职位的名称叫做 软件测试 开发 工程师(Software Development Engineer in Test,简称SDET),这个职位对学生来说还是个新鲜玩意儿
2005年的秋天,李敏还在上海交通大学念研究生,还有半年就要毕业了。一天,同学发了个链接给她,是微软在上海招聘实习生的消息,职位的名称叫做软件测试开发工程师(Software Development Engineer in Test,简称SDET),这个职位对学生来说还是个新鲜玩意儿,没几个人清楚具体情况,在好奇心的驱动和微软的吸引力之下,她投出了简历。接着她经历了传说中的微软“五轮面试”,走出美罗大厦的时候已是下午一点,时至今日她对这个时刻的印象只有两个:饥肠辘辘,大脑高速运转。经过一周的焦急等待之后,她同时收到了SDET实习生和正式员工的offer,所在的组是System Management Server(也就是System Center Configuration Manager 2007的上一个版本)。

  就这样,李敏开始了在微软当软件测试开发工程师的旅程。

  几个月过去了,当同学好奇地问起在微软工作的感受和SDET的情况时,她说了自己的“微软测试初体验”:

  测试初体验一、软件测试开发工程师,很“奢侈”很“酷”

  问起对软件测试开发工程师的第一印象是什么,她的回答是:挺“奢侈”挺“酷”的。

  说到“奢侈”,先看看一个软件测试开发工程师的典型“测试财产清单” —— 一到两台配置先进的工作机;两个21寸的液晶显示器,一个屏幕用来显示产品的界面,另一个屏幕用来发bug或者编程序;再加上实验室里面十几台测试机器或是一个16G内存的“巨无霸”。如果你需要测试Windows Mobile,那恭喜你了,各式各样的smart phone、pocket PC可以装满一抽屉。经过一段时间的了解后,她也知道了这样“奢侈”的配置一方面可以提高工作效率,更重要的是让测试工程师能够考虑到各种复杂的配置以及模拟客户环境。

  说到“酷”,印象中,软件测试开发工程师总是有机会走在尝试各种微软新技术、新产品的前端,也总是有机会通过动手能力来展示自己的“酷”。比如工程师会把十几台测试机器装成各种各样不同的Bench, 操作系统从Windows 2000、XP到最新的Vista、Longhorn甚至Windows 7,从x86到x64,从英文到德文、中文、日文等;微软最新的产品或者尚未发布的产品都可以拿来“研究”一把,比如Longhorn、Windows 7、Hyper-V等;虽然不一定考过MCSE,但是每个人都会配置DNS、DHCP、AD、network等。

  测试初体验二、测试有时候就像是玩游戏,找问题的能力很重要

  测试就像是玩游戏?也许你会觉得不可思议。李敏拿了道面试题来打比方,给你一台笔记本电脑,你会怎么去测试它?这是一道典型的开放式问题,即使是没有测试知识的人也可以想出很多的“测试用例”。比如检查笔记本的型号、颜色、硬件配置、屏幕、电池、操作系统等,相信这是很多人拿到新买的笔记本之后做的第一件事情,这些多半都属于常规的正向功能测试;还有些人指出,外观要小巧方便携带,键盘手感如何布局如何,功能键是不是方便易用,这些人对可用性要求比较高;还有些会想到用它来玩3D游戏看看显卡的性能怎么样;有些人想到装上Vista、64位的操作系统,这就是兼容性方面的考虑;还有人思维“不走寻常路”,提出要把笔记本放在赤道的日照、南极的冰雪环境下试试能不能正常工作,当砧板切切菜,扔下楼看看碎不碎,这就是关于可靠性和压力方面的测试,有趣的答案还可以有许多许多,只要你去想…

  在李敏的描述中,软件测试开发工程师真实的日常工作跟答这道题一样的好玩,只不过笔记本电脑换成了软件程序。软件测试开发工程师拿到“笔记本电脑”之后,会像上面说到的一样开动脑筋仔细检查,检查之前需要列出想测试的各个方面、策略、工具、风险以及怎么开展等,这称为测试计划(test plan);每项具体的测试叫做测试用例(test case),每个test case需要列出具体操作步骤(steps);找出来软件的缺陷、问题等称为bug,bug中需要记录怎样去重现它,称为重现步骤(repro steps);找bug的过程中你可以试图找出根本原因在哪里、甚至哪一行代码有问题,这就是debugging。优秀的软件测试开发工程师在这个“玩游戏”的过程中需要具备足够的好奇心,想出各种各样的主意把软件“搞坏”,尽可能地找出bug,还要多从客户的角度去想,其终极目标就是为发布到客户手中的软件把好质量关。其中,找bug是软件测试开发工程师应该具备的基本功。

  不久她就找到机会“测试”了一把自己的SDET指数,正好高性能计算组举办找bug比赛,优胜者可以获得一些小礼品,她拿到了一个印有Microsoft标志的水杯。

  这时候,她的一个高中同学在MSN上面发了条消息:“你当了测试工程师,就不用编程了吧?”。看来需要澄清一下了:

  测试初体验三、谁说软件测试开发工程师不用写代码了?

  微软早年也设有只做手工测试而不写代码的职位,称为STE(Software Testing Engineer)。现在所有的测试工程师的职位都叫做SDET(Software Development Engineer in Test),从名字可以看出来,需要具备编程能力,这些编程工作是为了更好地做测试。

  举个例子,李敏负责的某个UI模块有1000多个测试用例,手工执行一遍想想都很累。为了偷懒,她写了些代码将其中80%的测试用例实现测试自动化,这样下班前只要让机器开始跑自动化,第二天就可以拿到结果,从而大大减少了验证这些测试用例所需要花的人工时间,又可以及时地捕捉到bug。此外,软件测试开发工程师经常会做一些实用的测试工具和研究测试技术,比如开发UI测试方面的工具,开发测试流程管理工具,和更好地运用基于模型的测试方法等。在坚持创新的公司文化引导下,大家都非常注重运用新技术新方法,不断地把测试工作推进到新的高度。

转眼间,一年过去了,李敏从上海的服务器与开发工具事业部老大谢恩伟的手中接过了一周年的水晶纪念碑,按照惯例还请大家吃了一磅的M&M巧克力。2007年秋天,她所在的团队发布了System Center Configuration Manager 2007。在这段时间里,她亲身体验了微软给员工提供的多种多样的成长帮助:

  职业发展体验一、员工成长路上的多种帮助

  从加入公司的第一天起,部门就分配了一个资深员工给李敏做“Mentor”,Mentor的意思是良师益友,也就是“师傅”。Mentor会手把手地教日常工作中碰到的各种问题,很多小问题都可以请教Mentor,比如打印机怎么用、测试用例怎么设计、甚至是开会的时候有个缩写名词没听懂等。第一个 Mentor的作用就是“师傅领进门”。

  公司还提供了系统的专业知识培训。半年内,她先后参加了New SDET in Microsoft、Test Automation等培训,这些都是测试工作的基础知识。说起“修行在自身”,公司MyLearning网站上有不少测试专题,比如性能测试、代码覆盖率研究和安全测试等;这个网站有无数的在线课程录像,在这里可以学习其他员工的知识和经验,帮助自己更好地做测试工作;近期即将进行的技术讲座、培训、会议等也会在这里公布,热门专题一定要早点去注册“占座”,否则就没位子了。另外,她还发现了一个非常棒的资源MSLibrary,那里有无比丰富的技术书籍、新闻杂志和研究论文等。公司还投资了一系列的综合能力培训,为员工提供从各方面提升“软”技能的平台:有些培训是语言方面的,比如觉得英文不够好的可以去上课,老外来到中国也可以学中文;还有一些是教你“怎么说话”的,比如告诉你怎么精准提问、精准回答,怎样做演讲,怎样去沟通得到大家都想要的结果;还有一些教你“怎么思考”,比如创新思考,不同情况下的思考方式等。这些培训很实用,一般学完了就可以运用到实际工作和生活中。

原文转自:http://www.ltesting.net