shaoziyi 发表于 2006-9-30 17:26:54

看"从微软的今天看软件测试的明天"对黑盒测试没有了信心,大家一起讨论

转自uml软件工程组织
从微软的今天看软件测试的明天

2006.09.30 来自:blog  
  
陈天的办公室并不小,但却因堆 满了机器而显得狭仄不堪。他解释说,因为微软亚洲工程院(ATC)部门准备扩充,而“新的几个实验室还在装修中”,所以就形成了现在的这个局面——几十台Dell主机和一箱箱显示器堆放在眼前的办公空间里。当听说微软亚洲工程院的测试工程师人均拥有四五台计算机、且正在搭建的测试实验室将拥有上千台机器时,我跟陈天开玩笑说,看来你是微软亚洲工程院最大固定资产的拥有者,陈天微笑着对这一判断表示认同。

“人机比例”如此悬殊,并不是说微软亚洲工程院的测试工程师都是多臂超人——事实上,这是由微软独特的测试文化所决定的。陈天表示,“微软的软件测试80%-90%都是自动化的。所谓自动化,就是由测试工程师写出测试程序来运行测试案例,而并非人们所想象的人工点、点、点的那种测试方式。”

在拜访微软亚洲工程院之前,提到微软的测试,我会想到比尔盖茨说的一句话:“很多人都认为微软是一家软件开发公司,而事实上,我们是一家软件测试公司”。这种说法也让我们对微软亚洲工程院的测试团队充满了好奇。

微软亚洲工程院创立之初,仅有两位从微软亚洲研究院转过来的测试人员,而且这两个人还不属于任何一个组,只是在项目组有测试需求的时候临时帮一下忙。对于一支完整的产品开发体系,软件测试团队是极其重要的组成部分。因此,院长张宏江对此高度重视——于是,从微软总部找来了在微软从事测试五年的陈天和周庆晖担当起了搭建微软亚洲工程院软件测试团队的重任。

招募到合适的测试人员是工作的第一步,由于国内对软件测试工作的重视不够,有经验的人员因而少得可怜,培养刚毕业的学生便成为了优先的选择,不过,“我们的学生由于勤奋好学成长得很快”。到现在,微软亚洲工程院已拥有一百多名测试工程师,其中有一些人已经成长为技术骨干和Leader。

在微软的测试体系中,主要的测试人员分为两种,一种是SDET(Software Design Engineer Tester),一种是STE(Software Test Engineer)。对SDET编程能力的要求和对开发人员的要求基本上是一样的。他们都须有扎实的计算机基础知识和编程能力。区别可能在于开发人员对算法更加精通,或某一方面的技术钻研的更深入一些。而微软亚洲工程院要求SDET的技术面很宽,要能使用很多种技术,比如可以用C、C#、脚本等来写程序。陈天说:“我喜欢在面试的时候看他们直接在电脑上编程。如果一个人经常写程序,他调试程序的表现会与编程不熟练的人有很大的不同。”

因为SDET懂开发,有扎实的编程能力,所以他能够做一些其他普通测试人员做不了的工作,比如可以将源代码打开做代码的静态分析,还可以做测试用例的代码覆盖率调查。所谓的代码覆盖率调查,是指考察测试用例能否将所有的源代码都调用到,是一种对测试质量的初步评估标准。

更高深的一些测试方法还包括错误注射(Fault Injection),也就是将错误注射到源程序中。因为很多错误很不容易在某种机器环境中出现,比如一个用户的机器内存特别少的时候,微软要求程序仍然不能丢失数据和发生安全漏洞,但测试人员不能把测试机器的内存拆下来,也不能非常精确的把内存消耗到期望的数值,这时他们会通过注射一段代码来模拟内存的分配。要做到这点,需要掌握编程及熟悉操作系统的内存分配算法。由于SDET的存在,微软可以更加有效地对软件进行测试。

当然,STE的角色也很重要。这些人必须非常聪明,解决问题的能力特别强;有钻研精神,绝不放弃;很细心,而且很有创造力。陈天说:“好的STE不是只按照规定好的测试用例来执行,而是可以想到很多一般用户想不到的地方,他可以用非常规的思路来寻找软件的bug。而且他会懂很多各种各样的软件。事实上,很多bug不是在程序本身找到的,而是在其与其它程序交互时找到的。”不过,就测试工作而言,微软未来的趋向是,纯粹的STE将越来越少,而且微软会要求STE“也要学会用程序工具去进行测试”。

普通的测试工程师若想臻至“优秀”,需要经历很长的阶段。除了要学习很多测试方面的技巧外,还需对测试全局有着全面的了解和充分的掌控——这同样是实现个人成长的重要前提。“测试人员一开始学到的信息都是分块的,比如开始会写测试用例,后来知道了要做代码覆盖率,而后可以学到更深的知识,但最终是要把这些知识都融会贯通起来,大家都需要经历这样一个过程,这是很难避免的。”陈天说,“因此,我要求大家不要只看自己做的部分,而要看其他人做的事情,要看产品开发到哪个阶段,就像玩拼图一样, 只有对整个软件开发流程了解,这个时候你才知道每块拼图应该在哪里。” 为了让测试工程师更快速地成长,微软亚洲工程院经常让大家转换角色,轮流负责不同的任务,或者将一个大的部分拆分为几个小块,每个人负责其中一个小块的全部测试内容。

对于微软亚洲工程院的测试工程师新手来说,工作既充满挑战又非常充实。不过,首先要改变的是“心态”。一方面,不能仅仅满足于完成自己的工作。陈天表示,“如果让一个新人进行浏览器的测试,他可以写很多测试用例,比如测试各种按钮是否可用等等;但对于软件来说,是不是只要经过了这些测试,就立刻可以上市销售了?不能仅仅满足于找到BUG, 要真正做到质量保证. 时常问自己,是不是这样的质量软件明天就能上市?很多新来的员工没有这样的意识,也就是对整个产品质量负责的意识。我经常给我们的工程师讲,尽管微软有几万名工程师,但测试某一个功能点的人就你一个,如果漏过了任何一个bug,等到上市之后,受到影响的可能是数以千万计的微软用户。所以我们要求责任感对一个测试工程师甚至比他的测试技能更加重要。”

当然,对于新人来说,有一套学习的途径可以让他们实现快速地成长——除了陈天等资深测试经理和Test Lead的指导外,微软内部还积累了一整套测试流程、工具和模板。首先,测试工程师要对负责的产品非常了解,要看PM和开发人员的文档,然后根据模板进行工作,而Test Lead也会审查他们的工作。“每个产品的测试都包含了基本的测试,如功能测试、压力测试、代码覆盖率校验、插入测试、与其他产品交互的测试,还有全球化和本地化测试。”在测试用例上,几乎永远是越多越全面越好。在陈天测试Windows XP操作系统某项目时,仅对几个Dll文件的测试就写了两千多个测试用例。陈天说:“微软的测试工具基本上都是自己开发的,虽然商业性比较差,但对产品的针对性很强。除了常用的十种左右的测试工具外,往往需要测试人员针对项目开发很多测试工具。”

谈及未来的发展,陈天对自己的测试团队充满了信心。从院长张宏江到技术总监林斌,微软亚洲工程院阖院上下都对测试工作非常重视。陈天希望将他的团队变成“微软最好的测试组之一”。他说:“虽然目前还不是,但对此我非常有信心,我们的员工技术水平还可以提高,我们的测试流程还可以更适合开发的需求,员工们的测试理念也还应不断增强, 最后,,我们也正在形成自己的测试文化并用次来推动ATC的进一步高速发展。”



--------------------------------------------------------------------------------
版权所有:UML软件工程组织

shanxi 发表于 2006-10-2 11:03:55

AD?

yuxiao 发表于 2006-10-3 00:19:34

其实微软很多的测试工程师都是从STE,做起的。
我们部门也是分STE/SDET的,我把这篇文章也发给我了我们全team的同事
大家并没有觉得没有信心。
不过我们也不能长期的固守着黑盒测试,应该向更广阔的空间发展,这样测试的路,才会越走越宽。

jimmy07 发表于 2006-10-20 18:02:32

恩,不断地学习提高自己吧!

Jimmyshao 发表于 2006-10-21 16:47:43

主要的测试人员分为两种,一种是SDET(Software Design Engineer Tester),一种是STE(Software Test Engineer)。

微软的测试觉得和国内大部分所说的测试还是有一定区别的。
不记得哪里写得了,在微软没有纯粹意义上的Tester,有的只是叫开发测试工程师,纯手工意义的测试执行的职位个人觉得会被逐步淘汰。

shaoziyi 发表于 2006-10-23 09:28:35

关键是现在对于微软SDET的工作一点概念都没有。。我们现在做自动化最多就是在录制的脚本的基础上写写脚本,不知道他们的自动化到底是怎么做的,想入个门都入不了啊

Babby 发表于 2006-10-23 10:59:43

不现实,估计也只有纯软件公司才能这样,而且要建立在垄断的基础上,总之每个朋友情况不同~~~~

ssscn 发表于 2006-10-25 06:07:07

为什么要逃避黑盒

为什么要逃避黑盒呢? 白盒能解决一切问题么? 白盒要是能解决一切问题,那么就不用发展黑盒的理论和技术了,拼了命搞定白盒,软件质量就完美了. 实际上是这样么,显然不是.存在的就是合理的.
   上面说的比较理论,从实际上说.如果一个系统中涉及到了N个Element产品的配合,那么白盒就基本无用了.白盒只能说明单个产品工作无问题,不能说明所有产品在一起配合无问题.N个产品配合的时候用白盒来测,其成本,效率,耗时是无法想象的.无法满足工程要求的技术,就只有被放弃....越来越强调solution的今天, 黑盒将一直重要.至少在你我的职业生命长度中.

李才军 发表于 2006-11-17 18:42:59

黑盒,灰盒,白盒.都是测试的方法,在每个阶段,都有不同的作用,有自己有利的一方面,也有自己不能测试到的一面,所以,一下子不要说什么什么不行,先要问问自己行不行

enna_0000 发表于 2006-12-26 17:24:57

我也是从事黑盒测试的,最近经常在论坛上学习。个人认为软件测试才是测试的主流,但是本人主要做的还是黑盒测试,所以我觉得应该做好本职工作——黑盒测试;然后在业余时间可以学习一些白盒相关的知识。
我也觉得黑盒的测试是不全面的,还是要长远看。

Michael_Ma 发表于 2006-12-26 18:30:41

sdlkfj5 sdlkfj2 sdlkfj6 典型性的就没搞清什么是黑盒测试,建议把软件测试技术哪本书好好看下,什么叫黑盒测试,黑盒测试包括很多测试类型,单一方面做的很好已很不容易了

[ 本帖最后由 Michael_Ma 于 2006-12-26 18:33 编辑 ]

x379937330 发表于 2007-1-22 12:26:38

我来回答.

360行,行行出状元

mldyt0229 发表于 2007-1-22 13:23:51

回答

做了一段时间黑盒测试,觉得如果要把黑盒测试做得很好也是很不容易的.(首先我们公司没有什么人对需求负责,就是随心所欲地改,所以对需求的跟踪就变成测试人员的事情了,至少我就在整理需求)而且如果你全程跟一个项目的话,对这个系统最熟悉的除了开发人员(其实开发人员也是有许多人组成的,单个人也不可能了解所有的模块)就是测试人员了,很多时候客户问的关于系统的事情做测试反而要帮着回答一下.
而且目前我也在尝试用td管理测试,觉得还有许多需要学习的方面.至于白盒测试,也会加油的.反正觉得会编程是一个计算机人的基本技能,要不老是被开发人员说"你不知道的,这实现起来很难的",那太郁闷了!

Provence 发表于 2007-1-22 13:30:46

我想国内还是处于测试行业的初级阶段,随着行业的成熟,高端更具专业的测试方法论会日趋成熟的。。。

yamaya 发表于 2007-1-22 14:12:05

我觉得黑盒测试仍然是软件测试中一个重要的部分,不能说因为微软淘汰ste而认为黑盒测试没有前途。

lunarever 发表于 2008-2-19 13:50:40

自动化测试和黑盒测试两码事吧

afeng 发表于 2008-2-19 14:21:04

任何测试都可以自动化,而有些测试必须用自动化,比如性能,压力,,有些可以手动,也可以自动,比如大部分得黑盒测试

小月三木 发表于 2008-2-27 11:50:18

很多公司一味追求,白盒、自动化、性能,可基本的黑盒测试都做不清楚。
基本功能,界面,帮助等都做的相当糟糕,
小的公司,用例、计划、需求等都是没有或简单,黑盒测试也就随性而做。
如LZ说的,存在就是重要,既然有黑盒测试,真正做到如火纯青的地步,估计也到了退休的年龄了、

xiaoyaoke 发表于 2008-2-27 16:11:26

楼主明显概念有问题
页: [1]
查看完整版本: 看"从微软的今天看软件测试的明天"对黑盒测试没有了信心,大家一起讨论