敏捷开发的tdd方法_tdd开发 和敏捷开发 - CSDN
  • 敏捷开发--TDD

    2013-04-02 16:11:00
    TDD (Test Driven Development):顾名思义测试驱动开发,在没有开发之前,先写test case, 写出来的code要满足test case. Test Driven Development is the strategy of writing tests along the development process. ...

    TDD (Test Driven Development):顾名思义测试驱动开发,在没有开发之前,先写test case, 写出来的code要满足test case.

    Test Driven Development is the strategy of writing tests along the
    development process. These test cases are written in advance of the code that is
    supposed to satisfy them.
    A single test is added, then the code needed to satisfy the compilation of this test and
    finally the full set of test cases is run to verify their results.

    TDD的流程:

    1. 写test cases, 实际上写test case的过程就是理解需求的过程, 写test case的过程中会驱使我们去想清楚如何去开发, 使我们能使提前想到一些可能会出现的问题.

    2.run test cases: 为了能让所有的test cases run成功, 不断的完善开发代码

    3. 重构代码: 当所有的test case pass, 重构代码,清理没有用的,是代码更加干净紧凑; 重构完成没有可以再优化的地方,而且所有的test cases pass的时候,任务就完成啦

     

    这个跟完全颠覆了我们先开发再测试的观点, 这样做有什么好处捏?

    1. 让开发过程变成已结果为主导, 让需求更明确, 不会开发出没有用的代码

    2. 当要对代码做出改变时,会很清楚的知道会影响系统的那些部分

     

    对于TDD的实用性不敢妄加评论,也没有在实际项目中用到这种模式。这种模式成熟型的公司有可能会用到, 创业型的公司应该不会使用,因为代码量差不多多了一倍,风险也因此增加。希望以后可以在个小的项目中应用,感受一下他的魅力.

     

     

     

    展开全文
  • 测试驱动开发 TDD(Test-Driven Development)是敏捷开发的一项核心实践,同时也是一种设计技术和方法。1. 基本思想在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷...

    测试驱动开发 TDD(Test-Driven Development)是敏捷开发的一项核心实践,同时也是一种设计技术和方法。

    • 既然是测试驱动,便是测试,测试用例先行;
      • 首先编写好测试用例,期待值,实际值;
    • 开发的目的是让测试运行通过;
    • 开发围绕测试展开;

    0. 常见测试方法

    • 功能测试、单元测试、系统测试和负荷测试等;

    1. 基本思想

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

    展开全文
  • 敏捷开发模式,实质是一种以人为本的开发理念,重视团队沟通,重视客户反馈,重视产品迭代。 根据Agile的思想,我们主要有Scrum和XP两种开发实践,XP中又以TDD较为流行。 Scrum 项目经理从客户(产品经理)获取...

    “你有了解哪些开发模式?” “你了解的这几种模式有哪些不同” “测试方法与目的是什么?”
    带着这些问题,我们来看看Agile 中的Scrum 与 TDD

    Agile
    敏捷开发模式,实质是一种以人为本的开发理念,重视团队沟通,重视客户反馈,重视产品迭代。
    根据Agile的思想,我们主要有Scrum和XP两种开发实践,XP中又以TDD较为流行。

    Scrum

    项目经理从客户(产品经理)获取初步的需求,建立需求列表;
    项目经理(可以分为PO与ScrumMaster)定一个sprint的周期(4周例如),按需求列表分配优先级,以此为前提,与开发小组讨论工作量backlog;
    技术总监按backlog分配任务;开发小组集中速度开发。
    项目经理每个sprint向客户递交可视化产品,评审并讨论迭代需求。
    循环迭代,直至递交完整需求的产品。

    优点:有效提升用户满意度,产品成功率;量化,透明的开发任务,增加效率;不同开发岗位之间的互动,培养了团队凝聚力,减少技术代沟产生的摩擦。

    缺点:项目经理要求极高,对外部客户的需求更变所带来的backlog,经费以及质量控制要有明确的量化能力。对产品迭代需求的优先级划分要合理。对内部开发人员/QA的信息互换要即时。
    对开发人员有更高的要求,没有完善的设计文档(UI/原型)约束,容易产生理解误差,不能解决反复修改需求带来的工作量积压问题,即递交产品前的开发工程量不变甚至更多。

    Scrum小结“敏捷”实质上是对产品需求完善的速率,不是加快工程速度,而是产品后续打入市场的速度!
    正如微信等产品,通过用户反馈后迭代部分业务功能并及时更新即是agile的思想。

    由上可知,Scrum对开发人员个人也提出了更高的要求,尤其是对需求的认识。

    此时我们需要引入TDD的开发模式了,即先写测试后写业务代码。

    T实际上能映射现实业务的需求,在“莽”代码前,开发人员先分析需求,完善测试,再按照测试要求完成代码书写。这样的功能模块跑起来才是有效的,这样的集成系统跑起来才是有质量,少返工,真前进的工程。

    经过一些网络资源的阅读与大佬经验谈,TDD给我的第一印象是前期引入较为困难,测试例的推导不全,后期补测试例的情况较多。如若在Scrum中引入TDD,开发人员Sprint工作量积聚上升,抱怨与抵触声随着backlog增加而来。

    可以推断,TDD对技术总监的要求更高,需要对开发成员进行思想的指导与实践的论证,团队熟练掌握后,后期对于产品的质量的确会有进一步的保证。

    总结:Scrum与TDD近几年的普及与实践都顺应了互联网瞬息万变的节奏,这两种开发模式都对开发人员个人,提出了更高的要求。

    OK~屁文写完,继续补技术知识去了。

    展开全文
  • 敏捷开发是一种内涵非常丰富的思想,面向用户,面向需求,而不是面向模块。而TDD则是一种卓有成效地提高工作效率的办法,与敏捷相辅相成。 接下来,结合本人最近项目上的一些经验和教训,来做一个深入的总结和反思...

    通过昨天对老师的提问,也算是对一直以来的困惑和思考做了个总结。

    敏捷开发是一种内涵非常丰富的思想,面向用户,面向需求,而不是面向模块。而TDD则是一种卓有成效地提高工作效率的办法,与敏捷相辅相成。

    接下来,结合本人最近项目上的一些经验和教训,来做一个深入的总结和反思吧~

    关于敏捷,面向需求和面向模块究竟有什么区别呢?

    以目前的经验为例,作为一个用户量巨大的后台,按照模块来分,有测试模块,面向数据库的模块,面向缓存的模块和面向前端的模块。如果按照模块来分工合作的话,会出现的问题是,接口的负责人很难提供其他模块所需要的特定功能,很难知道自己的接口在其他模块究竟是怎样运行的,发挥着什么样的作用。倘若尝试解决这些问题,沟通的成本是昂贵的,需要给出的API文档的工作量和需要的时间成本同样很高,但是需要更新甚至返工的概率是很大的。那么按照需求来分工的话,则是功能的开发者对所需要的模块接口进行全局的设计和实现,在已有的可扩展性较高的接口基础之上,为需求进行专属的扩展。事实上有经验的对业务进展十分清楚的程序员会能够在最初设计接口是就考虑接口的通用性,为后来的接口扩展提供便利,但多数情况下还是按照功能,定制地去拓展接口。

    这种情况下对程序员的挑战是大于以往的,一方面,前期的结构对于后期功能的拓展可能会是一种阻碍,很可能需要全部重来。如果接口的可拓展性极差,或者架构对后期的功能的添加会产生大量负面影响而需要重新设计,推翻重来是不可避免的。所以这是十分需要经验的,现代软件开发流程的科学化使得很多公司有专门的架构师,这类人所承担的责任通常是巨大的,就我现在的感受而言,架构师应该不仅仅是面向开发团队的,同时也是面向用户的。在我们这次实践中,SM便是这样的一种角色,而PO更像是用户和SM之间的桥梁。如果SM缺乏面向用户的意识,整个团队的代价是无法真正实现敏捷的,开发过程中遇到的阻碍也可能会变多。另一方面,是对编程技能的要求更高,需要更加全面的编程知识。譬如,一个后台程序员,除了要对前端有所了解,对于算法,数据库,数据库底层,操作系统性能等方面都比较熟悉,否则同样是无法敏捷的。也就是说,对于一个整体的功能,任何拿到部分功能的程序员,都应当具备实现全局功能的编程能力,同时也意味着不同的人是需要操作相同的模块的。

    关于测试,什么样的测试才是系统测试呢?

    还是结合自身经历来思考。对于一个面向前端的登录接口,我们获得前端的输入,返回其想要的结果,我们不需要关心用户信息是否写入了数据库或缓存,不需要关心返回值是如何计算的,这个过程中可能出现的错误等。我们的测试是不依赖于实现的。那么单元测试呢?我的理解是,单元测试时关注实现的,譬如我的需求,a+b+c,实现者利用了函数sum(a,b,c,),过程需要函数add(x,y),系统只关心初值和终值,单元却还会关心过程中的两次add,他需要知道实现,才能确认实现,进而测试实现来保证最终结果。

    那么,TDD是什么,又如何应用呢?

    TDD,所谓测试驱动开发,那么一定是测试现行。TDD的过程中,我们需要的是专注于一个需求的开发,直到测试通过。这里我说针对一个需求,我想强调的,这里的测试,应当是不依赖于实现的系统测试,而不是单元测试。否则,TDD将难以展开。

    大多数情况下,开发者会先开发再测试,很可能出现的一种情况是,过程中一系列的单元测试都是通过的,但最终的功能依旧无法保证,这时再开展系统测试,可以说是比较耗费时间的,毕竟,原本你的目标可以变成:通过眼前这一项测试。

    先这么多吧~期待后面会有更多不一样的感受。

    展开全文
  • 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行...
  • TDD,Test-driven development,测试驱动开发TDD产生远敏捷开发运动,特别是极限编程(extreme programming , XP),而TDD正是XP的一个核心原则。TDD人认为,不应该完成开发之后再写测试,这通常只是“马后炮”,而...
  • 敏捷开发,瀑布式开发,XP,TDD,SCRUM,Lean,FDD,DSDM你了解多少?本篇文章是有关敏捷软件开发方法学及应用的基础知识。敏捷开发是有关团队怎么样合作去实现一个常规目标。敏捷开发并不仅仅适用于软件开发者,也...
  • 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个...
  • 软件的开发方法中的测试方法学,应该包括完整的理论,而目前的TDD本身只是还只能是一个开发方法。如果要使用TDD成为开发方法学,那么要至少包括以下内容: 1、可测性设计理论及实践 2、扫描...
  • 本系列笔记将从测试人员的角度,总结在百度两年来的测试经验,记录一个完整的基于敏捷流程的验收测试驱动开发的全过程,分享在测试过程中的一些知识和经验,以及自己的一些理念。总结自己,也希望对大家有益。 概念 ...
  • 三种TDD开发模式

    2017-02-08 13:12:11
    测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行...
  • TDD开发模式

    2018-05-29 11:30:33
    TDD:测试驱动开发(Test-Driven Development)测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。...
  • 过去,几乎所有的软件开发项目都采用瀑布模型。这种编程方法酷似工厂装配线,...敏捷软件开发以及似乎无穷无尽的变种方法已越来越常见。现在它们成了主流的编程方法。 我们在本文中介绍了十种最流行的软件开发方法的功
  • 测试驱动开发TDD敏捷软件开发方法的重要组成部分。TDD是从极限编程中发展而来,它既可以用在设计时也可以用在开发实践中。TDD把业务需求转化为可以运行的测试代码并具有如下的优点1.TDD从一开始就保证了code的...
  • TDD,即测试驱动开发,强调的是测试先行。根据对业务理解,先写一些测试(E2E,Integration, Unit),此时得到运行结果为红色(测试运行失败),然后编写业务代码让其变绿(测试运行成功)。 TDD目标:让代码更...
  • Test-Driver-Development (测试驱动开发) 是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的...
  • 敏捷开发流程总结

    2010-07-20 15:36:00
    Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以...
1 2 3 4 5 ... 20
收藏数 8,616
精华内容 3,446
关键字:

敏捷开发的tdd方法