测试与开发的融合 开发对测试的依赖
返回《关注[北大青鸟...》 关闭窗口

ID: 13985259
安静幻影 发表于:2008-5-12 22:14:03

测试与开发的融合

 

    在这一历史发展过程中,最值得注意的是测试与开发流程融合的趋势。人们对这种融合也许并不陌生。比如测试活动的早期展开,让测试人员参与用户需求的验证,参加功能设计和实施设计的审核。再比如测试人员与开发人员的密切合作,随着开发进展而逐步实施单元测试、模块功能测试和系统整合测试。的确这些都是测试与开发融合的表现形式,而且初期的融合也只反映在这个层次上。90年代以后,软件的规模和复杂程度迅速提高,这种形式上的融合也迅速走向更深层次,更具实际意义。具体地说这种融合就是整个软件开发活动对测试的依赖性。传统上认为,只有软件的质量控制依赖于测试,但是现代软件开发的实践证明,不仅软件的质量控制依赖于测试,开发本身离开测试也将无法推进,项目管理离开了测试也从根本上失去了依据。在微软,测试的确有这样的地位和作用。这就是为什么微软在软件测试上有如此大的投入。

 

开发对测试的依赖

 

现代软件开发,特别是大型软件开发通常会遇到以下两个问题:

 

1    在开发初期,如何能够展开大规模团队,群体齐头并进,而同时保持开发的有序性。从而有效利用资源,缩短开发周期。

2    在开发后期,如何解决深层次的Bug,如何面对设计更改,而能够保证产品的质量不出现或少出现回落。

 

        对于小型简单的软件,这两个问题也存在,但不突出,而且容易解决。但对于复杂的大型软件的开发,这两个问题常常会成为难以逾越的障碍。

 

    通常大型项目的功能丰富,但架构、层次也会相当复杂。稳妥的开发方式是,一次投入少量的人员,逐层开发,逐层稳定。但这种方式显然资源利用率低,开发周期长,不能满足现代软件和IT行业高速发展、瞬息万变的需要。因此大型项目需要大型团队。在微软,产品开发团队(主要包括开发、测试和项目管理)一般都有百人以上规模,有些产品甚至上几千人(Windows2000的开发部门曾有3000多人)。这样大规模的人力资源作用在一个动态的,内部相互联系的系统中,若没有有效的协同,其混乱是不可避免的。试想,有两个开发人员,分别在开发两个不同的功能模块,其相互有依赖关系。为了相互协调,他们可以随时进行当面讨论。如果这种关系发生在五个开发人员和五个功能模块之间,这种协调就只能通过定期的会议来进行。而一个大型项目,会有许许多多这样的关系,而且很多时候这种关系有着不确定性和不可预见性。当一个开发人员编写一段新的代码或对已有代码进行改动和调整时,他(或她)常常无法确定,或无法完全确定究竟有哪些相关的模块会受到影响,以及在什么请况下这种影响会带来什么结果。因为系统的复杂性已远远超出了人的逻辑思维、技能和经验所能力及的范畴。因此这种传统的协调手段是远不能满足需要的。

 

    在微软,这种协调是通过测试来实现的。具体来说就是:每日建造+自动化测试。关于每日编译和自动化测试,我将来会作专门介绍,这里简单的说就是每天都建造一个新版本,每个版本都要运行通过一定量的自动测试用例,以检验当天工作的质量。这里所说的质量当然有一般意义上质量的概念,但同时它也反映项目在开发过程中的整体协调性。

 

        自动测试的最大优点在于它的高度可重复性。一个理想的自动测试系统能够让人随时、方便和迅速的运行大量的测试用例。因此一个开发人员可以通过检查当天的自动测试结果来分析前一天代码的质量(事后检查),也可以在当天存入代码前,先运行自动测试以进一步确保存入代码的质量(事前检查)。

 

    在微软,每日建造都是在午夜开始,完成后紧接着就是全面的自动测试,到早晨上班时间之前就会把结果自动通过e-mail等方式发送出来。开发人员上班后的第一件事往往就是检查测试结果。如果没有问题就会开始新的工作。如果有测试有用例没有通过,开发人员则必须协同测试人员一起立刻找出原因,解决后才能开始新的代码。有时一个小的失误会引起大面积的测试用例失败,很大一部分开发团队会受到影响。为尽量避免这种情况,要求开发人员在存入代码之前先在自己的个人建造版本上运行一定量的自动测试,全部通过后在存入。如开发人员没有按照这样的要求,而擅自存入质量不高的代码而造成大量测试失败,这种不负责任的行为是要受到严厉批评的。从这一过程可以看出,开发人员依赖测试来保证开发工作的质量,使开发整体地协调地向前推进。

 

    当开发进入后期阶段,尽管项目已总体成型,开发人员也会不时遇到一些技术上的挑战。比如一些Bug的解决涉及对项目深层次结构的调整;再比如由于客户反馈的意见造成设计的修改。每一次这样的修改和调整事实上都是对一个稳定系统的破坏,如果处理不当往往一个Bug的修改会生成很多新的Bug,就像一系列联锁的恶性循环。很多项目工期的延误都是这样造成的。要避免或至少将这种破坏减少到最低限度,开发人员首先需要知道这种破坏的影响面。在这里单靠开发人员自身的逻辑思维、技能和经验是远远不够的,自动测试再一次成为一种有效的工具。往往开发人员会制定不止一个方案,对每个方案上都运行一遍同样一套自动测试用例,然后比较结果,选出最佳方案。自动测试在这方面所起的作用不仅在产品的开发过程中,它还延续到产品发布后。产品支持部门在为客户提供应急解决方案时也要依赖自动测试。

 

   
 

ID: 13118619
信青蛙 发表于:2008-5-12 22:17:13 2
沙发!!!!!!!!!
小时侯,曾经爱过一条小鱼。  
  
可是后来,她游向了大海,而我长出了腿,爬上了陆地。  
  
这就是奇怪的命运,你永远不知道你的身体里隐藏着什么。  
  
可它们一旦悄悄地长了出来,  
  
你就会突然明白,这才是真正的你。  
  
以前的一切只是错觉,可是这是多么忧伤的错觉啊。
   

ID: 13937623
MM,我们私奔吧 发表于:2008-5-12 22:19:45 3

板凳

爱若琴弦,注定了是一出落泪的戏
MM,我们私奔吧
   

ID: 13079584
whx915 发表于:2008-5-12 22:21:06 4

探花

   

ID: 02143608
气气熊 发表于:2008-5-12 22:21:13 5
没有沙发鸟~~
   

ID: 12347720
nUaaBabY 发表于:2008-5-12 22:22:23 6
技术含量很高 啊
Can you understand the link between wolf and the two persons?
   

ID: 02143608
气气熊 发表于:2008-5-12 22:22:40 7
这么狠,一个坑都不给我留啊
   

ID: 13985259
安静幻影 发表于:2008-5-12 22:28:24 8
呵呵,抹油~~~~~~~~~~
   

ID: 12798105
醜人多作怪 发表于:2008-5-12 22:28:26 9
继续填坑~~
   

ID: 13221329
小宝SOD蜜 发表于:2008-5-12 22:29:45 10
生活很简单,快乐就好啊!!!
   

ID: 14110281
徐州天下 发表于:2008-5-13 8:06:26 11
今天的沙发是我的....嘿嘿!!
   

ID: 14089783
杀手娃娃 发表于:2008-5-14 12:08:04 12
so?
   

ID: 14089783
杀手娃娃 发表于:2008-5-14 12:09:46 13
so?
   

ID: 13999824
雪上浪子 发表于:2008-5-31 14:07:45 14

敬业!!!!!!!!!!!

浪子不回头,但恋一枝花
   

ID: 14094246
铃兰花开1314 发表于:2008-5-31 14:38:29 15
踩~!~!
   
返回《关注[北大青鸟...》 关闭窗口
对不起,匆匆过客没法跟贴:(
登录到 西祠胡同
用户/ID 注册新用户
密码 忘记密码了?
 

胡同口 | 帮助 | 健康 | 法规 | 广告服务 | 合作伙伴 | 联系我们   © eLong, Inc 本页运行 0.125 秒