TDD术语的两个不同含义

  测试驱动开发敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。

  TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。

  TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

  优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。

  缺点:增加代码量。测试代码是系统代码的两倍或更多。

  TDD = TFD + Refactoring

  (TFD -- Test First Development)

  计算机领域:

  Test Drived Develop

  测试驱动开发是一种开发方法,是开发人员参与的活动。 其效果是以可执行的形式文档化你的需求,迫使你分清职责隔离依赖以驱动你的设计,编织安全网以便将Bug扼杀在在摇篮状态,防止其逃逸。可传统测试人员的活动是试图找到已经逃逸的Bug。这两种活动都是必要的,而且毫不冲突,互为补充。

  那么测试人员在新的特性还没开发完成之前做什么呢? 除了提前写测试用例,无论是自动化的还是非自动化的,而需要测试人员参加的一项重要活动,就是参与特性验收条件的制定。 之前经常发生开发人员按照自己的理解去编码,测试人员按照自己的理解去测试,直到开发完成,测试过程中才发现理解的不一致,开始产生争执并阻塞等待业务分析人员(如果幸运的话)或者行政主管(如果开发过程混乱的话)的仲裁。 解决办法就是,在开始开发新特性前的一刹那,由业务分析人员,测试人员,开发人员进行一次讨论,就验收条件达成一致并形成记录,然后测试人员和开发人员分头去写测试和实现。

TDD(Time Division Duplexing)时分双工技术,在移动通信技术使用的双工技术之一,与FDD相对应。

  在TDD模式的移动通信系统中,基站移动台之间的上行下行通信使用同一频率信道(即载波)的不同时隙,用时间来分离接收和传送信道,某个时间段由基站发送信号给移动台,另外的时间由移动台发送信号给基站。基站和移动台之间必须协同一致才能顺利工作。

  FDD模式的特点是在分离的两个对称频率信道上,进行接收和传送,用保证频段来分离接收和传送信道。某些系统中上下行频率间隔可以达到190MHz。

  与FDD相比,TDD具有一些独到的优势,也有一些明显的不足。

  优势:

  (1)使用TDD技术时,只要基站和移动台之间的上下行时间间隔不大,小于信道相干时间,就可以比较简单的根据对方的信号估计信道特征。而对于一般的FDD技术,一般的上下行频率间隔远远大于信道相干带宽,几乎无法利用上行信号估计下行,也无法用下行信号估计上行;这一特点使得TDD方式的移动通信体制在功率控制以及智能天线技术的使用方面有明显的优势。

  (2)TDD技术可以灵活的设置上行和下行转换时刻,用于实现不对称的上行和下行业务带宽,有利于实现明显上下行不对称的互联网业务。但是,这种转换时刻的设置必须与相邻基站协同进行。

  (3)与FDD相比,TDD可以使用零碎的频段,因为上下行由时间区别,不必要求带宽对称的频段。

  (4)TDD技术不需要收发隔离器,只需要一个开关即可。

  不足:

  (1)移动台移动速度受限制。在高速移动时,多普勒效应会导致快衰落,速度越高,衰落变换频率越高,衰落深度越深,因此必须要求移动速度不能太高。例如在使用了TDD的TD-SCDMA系统中,在目前芯片处理速度和算法的基础上,当数据率为144kb/s时,TDD的最大移动速度可达250km/h,与FDD系统相比,还有一定差距。一般TDD移动台的移动速度只能达到FDD移动台的一半甚至更低。

  (2)覆盖半径小。也是由于上下行时间间隔的缘故,基站覆盖半径明显小于FDD基站。否则,小区边缘的用户信号到达基站时会不能同步。

  (3)发射功率受限。如果TDD要发送和FDD同样多的数据,但是发射时间只有FDD的大约一半,这要求TDD的发送功率要大。

  (4)需要更复杂的网络规划和优化技术。

  目前,由我国提出的3G技术标准TD-SCDMA是三个3G标准中唯一使用TDD技术的标准。

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...