从微软Windows产品线的测试看自动化测试的重要性
最近父母来美国访问,大部分时间都陪他们到处游玩,因此也没有写任何新的文章出来,今天还是老声常谈。从写测试文章以来就陷于自动化测试话题的漩涡中,虽然我觉得这个话题对我来说已经没有任何讨论的意义,可是还是怕很多反对自动化的文章对大家产生误导作用。以前的文章我主要是从技术的角度来讨论,而且从这个角度我认为我已经基本表达了所有我对自动化测试的理解,那么今天我就从业内实际的产品测试的范例来谈自动化测试的重要性。众所周知,微软的Windows Vista投入了6000工程师,花费了5年的时间来进行开发,不夸张的说,这是人类历史上规模最大的一次软件产品的开发。因此,对于Windows的测试流程是非常值得拿来进行研究的。今天我也想从我自己了解的一些情况来简单的谈一谈。
首先,微软没有专门的手工测试人员,基本全部是自动化测试人员。微软的一个测试人员的测试用例大概是其他公司3,4个人的数量。我们知道测试量不能仅仅用测试用例的数量来衡量,还有一个测试周期的问题。而Windows的测试周期是一天,甚至有的时候不到一天。其他公司的测试周期一般至少要一个星期。那么微软一个测试人员一天的时间要完成其他公司3,4个人一个星期的测试任务,听起来是不现实的。那么他们是怎样完成的呢?下面我从纵向和横向来分析。
纵向来看,由于Windows开发团队的规模宏大,使得他们的组织一定要分层,分级的。最高层的build就是在市面上发布的build,而每一个部门都会有自己单独的build。平时的开发和bug fix都是在自己的build中来进行的,经过测试人员的sign off才能传送到上一级的build。而一般来说,都是分3或4级的。也就是说,每一级的build你都需要进行测试,而每一级一般每天都会出一个新的build。那么最多每天你需要测试4个build,大家想想,如果不采用自动化,只是纯手工的方式,如何能够完成呢?而实际上,Windows聘用了大量的外包人员,他们专门安装每天出的新build,并且运行测试人员的自动化测试程序,然后把测试报告发布出去。而测试人员得到报告以后,要分析任何的测试错误,进行相应的处理。一般来说,错误分三种,测试环境的问题,测试程序的问题,产品的问题。测试环境的问题要外包人员来负责,测试程序的问题要报测试的bug,自己解决。产品的问题,当然就要报产品的bug由开发人员来解决了。这种模式就使得测试人员能够把测试的开发和运行分离开来,使得测试人员能够专注于测试的开发工作,也就是说测试人员大部分的时候是在coding中。这也是为什么微软的测试人员title是SDET(software development engineer in test), 也就是说微软的测试人员本质上就是开发人员。
横向来看,Windows的测试根据时间的长短和重要性分成很多种。以上所说的是测试每天的build,在自己部门的build往上一级传送之前的测试又是一种,还有一种是要测试一个build使得质量可以使得微软的员工进行内部的使用,还有就是每个milestone的测试,以及release之前的beta, rc阶段的各种测试。因此,测试用例的优先级在这里就显得十分的重要。由于各种原因,往往不能100%的进行测试用例的自动化,因此手工测试还是必不可少的。如果我们把测试用例按照优先级分为P0-P3。那么一般来说,P0和P1的test case是一定要实现自动化的。那么对于P2和P3的手工测试,就只在非常重要的测试阶段来进行。在每天的测试,和不太重要的测试阶段,也没有要求保证全部的测试用例要通过。这样的安排,就使得SDET能够尽量少的去执行手工测试,从而能够专注自动化测试的开发和对产品进行更加深入的测试,以及安全测试等等。一般来讲,需要进行手工测试的情况的发生周期要大于一个月,而因为SDET平时尽量的能自动化更多的测试(包括P2和P3),手工测试往往需要2天的时间就能完成。
从以上纵向和横向的分析来看,Windows的测试任务是十分浩大的,纯手工测试也是无法想像的。可是,由于微软大量的采用自动化测试技术和人才,使得不可能变为可能,实在是做了一个自动化测试软件工程的典范,值得任何公司和个人去思考。 微软的技术实力实在是太强大了,大多数公司都是自动化和手工一起做,纯自动化测试似乎总是不那么让人放心,而且也难以百分百实现,特别是一些gui和功能方面的测试,不手工的看一下,似乎总有些不太放心,呵呵,而且不知道微软具体是怎么实现的,真的是一点手工测试都不需要吗 楼上的没有仔细看楼主的文章,完全没说“手工测试一点都不需要”。
说技术实力么,微软也没什么特别强大的地方,主要是市场地位和营销方式以及对客户的把握做的非常好。 Windows Team是微软资力最老的团队,相比其他产品Team也属于Top级的地位.
说起技术实力,这世界能有哪家IT公司能小瞧微软的整体实力呢?
Google属于新生,在技术领域的积累不会比微软更深厚;而IBM自从跟微软的上次合作失败后,更视微软为最别扭的公司.
2楼所怀疑的自动化比例,微软确实还没达到完全抛弃手工那么高,但比例至少到了每个项目都会有,而且今后的趋势是逐渐减少手工测试的工作量,自动化方向正是该公司正在强力推进的策略:为了提高效率节省成本,也为了保障产品生命周期越来越完美. 微软确实是个很伟大的公司,事实上偶个人很喜欢微软的产品,为用户考虑的非常周到。不过纯粹从技术实力上来说,微软并没有超出其他公司一截。特别是在商用领域和大型系统领域,当你需要一些特别的要求和配置的时候,微软的产品就显得乏力和不够灵活了。个人体会的观点,有点跑题。
而自动化测试,现在几乎所有的大型企业都是很重视的。不过我很赞同“不应该过分重视自动化测试”的观点。至少在可预见的将来很长一段时间内,手工测试有不可替代的作用,是不可能被自动化测试取代的。我们不能仅为了自动化测试而盲目的推进它,而是根据需要进行,虽然我也很期望自动化测试能做的更多,开发和维护自动化测试系统与用例比手工测试有趣的多,手工测试确实乏味无聊,不过这是没有办法的事情。拿我个人曾经所在的一个团队来说,我们每周的基本功能自动化测试都在数百万次级别,还不算那些自动化packaging test,GUI test等等非常规的测试。然而更多,更重要的bug仍然是来自于手工测试。我觉得自动化测试就目前最重要的应用仍然是回归测试,保证开发迭代中的质量,而于发现bug方面功效一般。更何况自动化测试本身的建立和维护也很大的依赖于高质量的手工测试。
[ 本帖最后由 chech28 于 2007-11-4 19:53 编辑 ] 好像是这样,我也是有点怀疑现阶段是不是能百分百实现自动化,就像一个页面包含多少内容信息的话,都用自动化测试的话,有点多此一举,杀鸡用牛刀的意思,人工看一下要简单,省力的多,而且有些版本开发也未必会及时通知一些小的改动,会造成一些bug的误报,自动化其实也有不灵活的地方,不过在一些常规,验收测试中自动化测试还是有很大的作用的。:lol cleverman 指的是 windows 的系统测试阶段吧。
不知道在单元测试阶段,cleverman能否分享一下。
我对其他公司的单元测试非常感兴趣。 微软的单元测试是由dev完成的。之后,才由test来进行测试。 欧美的公司好像一般单元测试都由dev来完成其他都是由tester来做的 原帖由 shanxi 于 2007-11-4 17:58 发表 http://bbs.51testing.com/images/common/back.gif
Windows Team是微软资力最老的团队,相比其他产品Team也属于Top级的地位.
说起技术实力,这世界能有哪家IT公司能小瞧微软的整体实力呢?
Google属于新生,在技术领域的积累不会比微软更深厚;而IBM自从跟微软的上次合 ...
微软的员工???
Google虽然属于新生,但是在搜索领域微软短期根本无法超越。而且这个领域的积累是这个世界上最厚的,从技术到各种资源。
而且google是特定领域的公司,他们怎么比?
chech28 在五楼说的很好。
还有一个应该注意的就是微软做的是操作系统,而我们很多人测试的应用软件。质量要求和成本投入就不同。
微软vista如果失败,什么后果?我们国内的公司大不了坑害一个客户。
对于应用软件,我们很多都是在一定平台上做的快速应用,有些本身就不太适合自动化,手工反而更快。
[ 本帖最后由 supercleaner 于 2007-11-16 13:29 编辑 ]
回复 10# 的帖子
所以还是很有必要进大公司的。在小公司,测试技术要求就低,对自己的长期发展不利。 微软帝国---梦想中的。国度 :victory:
页:
[1]