`

TDD training summary

 
阅读更多

从加入TW的第一天Pair开始就在项目中实践TDD。前一段时间阅读了Kent Beck的<<TDD by Example>>,之后对书中的内容进行了总结 。这次,同事yuheng 给咱们两个项目组以Code Kata的形式进行了一次TDD培训。通过这次实践结合理论的培训,自己进一步加深了对TDD的理解,可谓收获颇丰。

 

为什么要TDD?TDD有什么优缺点?

优点:

1. TDD可以让设计的接口清晰,更大程度地保证的模块内部的高内聚性和模块间的低耦合性

2. 提高系统的测试覆盖率,避免系统先开发后不可测试的现象。

3. 小步前进,快速反馈。

问题:

1. TDD驱动出来的实现是否会缺少对整个系统架构的设计,缺少全盘统一规划?

TDD与系统架构,系统设计并不矛盾,并不是说用了TDD就不能有系统架构。可以针对系统的业务需求规划系统架构,再在这个基础上进行TDD开发。但一定要避免过度设计。


TDD的过程中维护TODO List
Tasking是一个分而治之的过程。从大的方面来说,一个业务系统的开发可逐步划分成:系统,Release, Master Story, Story. 而TDD过程中维护的TODO List主要是针对

一个Story开发过程中的任务切分。同《TDD》中描述的一样,在Story开始时,我们应该对它作一个任务列表,随着任务的向前推进不断地更新任务状态,也随时可以往列表中添加新的任务。

测试用例设计
TDD的过程中应该合理的设计测试用例。设计测试用例的方法包括:等价类划分,边界值,因果图,正交方法,Pairwise方法等。

从外向内还是从内向外TDD
两种方案分别适用于不同的场景。
从外向内是从系统或模块的最外层接口出发,逐步驱动出内部的设计。之后再TDD驱动内部各个模块的实现。
从内向外通常会对系统进行架构设计,划分各个模块的职责。然后再TDD驱动各个模块的实现。最后将各个模块进行集成。
条件允许的情况下,个人倾向于从外向内进行TDD。它的优点在于能保证驱动出的各个模块能顺利集成,满足最终系统的需求。但是对于一些大型系统,很难在一开始就会有最外层的集成环境,所以只能先系统架构进行模块划分。


从核心功能开始,优先实现系统的业务价值高的核心功能。

Mock方法
首先,要弄清楚一些mock相关的名词,如mock, stub, spy, dummy, fake等。
使用Mock方法时要划分"System under test" (SUT) 的边界,避免测试边界外的功能。

分享到:
评论

相关推荐

    TDD测试驱动开发

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际功能代码之前,先编写测试用例。这种方法的核心理念是“先写测试,再写代码”。TDD通过引入测试来引导软件设计,使得开发过程...

    phpunit-TDD驱动开发

    ### 使用PHPUnit进行TDD驱动开发 #### 一、引言 测试驱动开发(TDD, Test-Driven Development)是一种软件开发方法论,它要求在编写实际功能代码之前先编写测试用例。通过这种方式,可以确保代码的质量,并且有助...

    UMTS-TDD手册

    ### UMTS-TDD 手册知识点解析 #### 核心知识点概述 本文档主要针对的是**NS2网络仿真软件**中的**UMTS-TDD**(Universal Mobile Telecommunications System - Time Division Duplex)仿真方法进行了深入细致的介绍...

    单元测试与TDD实践

    单元测试与TDD实践 **一、单元测试之测试目的** 单元测试,作为软件开发过程中的重要环节,其核心目标在于确保代码的质量、可维护性和可扩展性。它通过独立测试软件中的最小可测试单元,如函数或方法,来验证其...

    GSM TDD noise分析

    "GSM TDD 噪声分析" GSM TDD 噪声是一种常见的干扰现象,发生在 GSM 通信系统中的射频部分。这种噪声的产生是由于天线辐射出的射频能量和 PA 突发工作时带动电源的干扰。为了减少这种噪声的影响,我们可以采用一些...

    Test Driven: Practical TDD and Acceptance TDD for Java Developers (PDF英文版)

    《Test Driven: Practical TDD and Acceptance TDD for Java Developers》是一本专注于Java开发者进行测试驱动开发(TDD)和验收测试驱动开发(Acceptance TDD)的专业书籍。这本书以PDF英文版的形式提供,旨在帮助...

    Laravel开发-tdd

    【Laravel开发-TDD(测试驱动开发)】 在软件开发领域,TDD(Test-Driven Development,测试驱动开发)是一种编程实践,它强调先编写测试用例,再编写实现功能的代码。Laravel,作为一款流行的PHP框架,高度支持TDD...

    Ruby-TDD实战TestDrivenDevelopmentinAction

    **Ruby-TDD实战:Test Driven Development in Action** 在软件开发领域,Test-Driven Development(TDD)是一种编程实践,它强调先编写测试用例,然后编写满足这些测试的最小功能代码。Ruby作为一种动态、灵活的...

    嵌入式 TDD

    ### 嵌入式TDD:测试驱动开发在嵌入式C中的应用 #### 引言 测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法论,其核心理念是在编写实际代码之前先编写测试用例。这种方法不仅有助于确保代码...

    LTE TDD系统原理

    华为LTE TDD系统原理培训PPT文档

    c#_tdd.zip

    在C#编程环境中,测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法论,它强调先编写测试用例,然后根据这些测试用例来实现功能代码。这种做法有助于确保代码的质量,减少错误,并提高开发效率。...

    TDD测试驱动开发.pptx

    "TDD测试驱动开发.pptx" TDD 测试驱动开发是一种软件开发方法,它强调通过编写自动化测试来驱动整个开发过程。TDD 是敏捷开发中的一个核心实践和技术,也是一种设计方法论。其主要包括两方面:测试先行和代码重构。...

    TDD驱动测试开发培训

    测试驱动开发(TDD)是一种软件开发方法,它要求开发者首先编写失败的单元测试用例,然后再编写足够的代码以使测试通过。接下来,开发者会对代码进行重构以改善设计,同时确保测试依然能够通过。这个过程循环进行,...

    TDD-CDMA_for_Wireless_Communications

    ### TDD-CDMA在无线通信中的应用 #### 一、引言 TDD-CDMA(时分双工-码分多址)是无线通信技术中的一个重要分支,它结合了时分双工(TDD)与码分多址(CDMA)两种技术的特点,为移动通信系统提供了高效的数据传输解决...

    测试驱动编程 TDD 实例

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它的核心思想是“先写测试,再写代码”。TDD强调在编写实际功能代码之前,先编写能够失败的单元测试,确保测试覆盖了预期的功能需求。这种...

    TDD读书报告

    ### TDD读书报告知识点梳理 #### 一、了解和认识TDD - **定义**: 测试驱动开发(Test-Driven Development, TDD)是一种软件开发方法论,它要求开发人员在编写功能代码前先编写测试代码,以确保功能代码的质量。 - ...

    测试驱动开发的艺术Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际功能代码之前,先编写测试用例。这种理念源自于敏捷开发的思想,旨在提高代码质量、可维护性和降低软件缺陷率。《测试驱动开发...

Global site tag (gtag.js) - Google Analytics