学习
实践
活动
专区
工具
TVP
写文章

TDD( 测试驱动开发) Overview

本文主要是基于本人的开发经验,概叙一下TDD,也就是测试驱动开发。 我比较喜欢用问题方式来写,语言水平有限 希望读者看得懂且有帮助 TDD这个东西 你一般用了之后会上瘾:) 它可能改变你以后的编程习惯 什么是TDD 故名思意就是用测试的方法驱动开发。 简单说就是先写测试代码,再写开发代码,和传统的方式是反的。 为什么要用TDDTDD的方法可以使代码干净(代码重构的结果),测试覆盖率高(先写测试的结果),软件做集成测试的时候一般问题会比较少。 什么地方TDD 我觉得写任何代码都可以用TDD吧 怎么做TDD(关键5步) 加入一个新的测试 运行下新加的测试,看到它失败(因为你还没写功能代码) 对开发代码做很小的修改,目的就是让新加的测试通过 (注意这里的目的 可能不适合时间很紧的软件开发,更适合于产品和平台的开发 怎么学习TDD最好 我觉得最好且最快的方式就是 XP中提到的结对编程,一个有TDD经验的坐在"后面",指导另一个不大熟悉的人,两人一起来完成一个类或模块的功能

84550
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    测试驱动开发TDD)入门

    来源:https://my.oschina.net 测试驱动开发,英文全称 Test-Driven Development(简称 TDD),是由Kent Beck 先生在极限编程(XP)中倡导的开发方法 本文不打算扯过多的理论,而是通过操练的方式,带着大家去操练一下,让同学们切身感受一下 TDD,究竟是怎么玩的。开始之前先说一下 TDD 的基本步骤。 TDD 的步骤 ? 操练 Balanced Parentheses 是我在 cyber-dojo 上最喜欢的一道练习题之一,非常适合作为 TDD 入门练习。 ? 总结 通过上面的练习,相信大家应该能够感受到 TDD 的威力,有兴趣的同学可以不使用 TDD 将上面的功能重新实现一遍,对比一下两次实现的时间和质量就知道要不要学习 TDD 这项技能。 资料 https://martinfowler.com/bliki/BeckDesignRules.html 《测试驱动开发的艺术》 星云测试 http://www.teststars.cc 奇林软件

    56020

    软件敏捷开发 TDD 方案

    但是现在敏捷开发又好几种方案,如:TDD、BDD、DDD 与 ATDD。 几种模式的介绍 TDD:测试驱动开发(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论,TDD首先考虑使用需求(对象、功能、过程、接口等 大行其道的一些模式对TDD的支持都非常不错,比如MVC和MVP等。 BDD:行为驱动开发(Behavior Driven Development) BDD也就是行为驱动开发。 (包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开发TDD 实施方案 通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。 开发原则 先写测试代码后,再写功能代码。

    1.3K50

    TDD测试驱动开发的基础

    ★如果您需要软件并且需要快速,那么测试驱动开发TDD)可能是解决方案。TDD致力于快速将软件从计算机推向市场,是当今顶级软件开发和软件测试公司正在使用的最有效方法之一。 什么是测试驱动开发? 敏捷性和速度是赋予测试驱动开发运动力量的两个概念。但是什么是TDD,流程如何运作? 测试驱动的开发是一个软件开发过程,其重点是在开发人员编写实际代码之前为软件测试编写测试。 贝克还是敏捷软件开发的创始人之一,也是《敏捷宣言》的签署人。 早在2002年,贝克(Beck)就在他的《测试驱动开发:范例》一书中向世界介绍了TDD的概念。 虽然一般来说不是一个新主意,但是Beck声称TDD是“有效的干净代码”,着眼于模型的简单性和消除了传统软件开发方法附带的代码不起作用的担忧。 TDD与传统测试之间的差异 让我们比较一下。 传统测试 TDD 最后测试的方法,其中开发人员创建代码,但保留测试直到开发过程结束。 一种测试优先的方法,其中开发人员或测试自动化工程师首先创建测试,然后开发人员进行编码以满足测试的要求。

    52210

    TDD(测试驱动开发)死了吗?

    01、前言 很早之前,曾在网络上见到过 TDD 这 3 个大写的英文字母,它是 Test Driven Development 这三个单词的缩写,也就是“测试驱动开发”的意思——听起来很不错的一种理念 但后来很长一段时间里,都没再听过 TDD 的消息。有人说,TDD 已经死了,给出的意见如下: 1)通常来说,开发人员不应该在没有失败的测试用例下编写代码——这似乎是合理的,但是它可能导致过度测试。 TDD 的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。 然后循环进行添加其他功能,直到完成全部功能的开发TDD 的基本过程可以拆解为以下 6 个步骤: 1) 分析需求,把需求拆分为具体的任务。 2) 从任务列表中取出一个任务,并对其编写测试用例。 接下来,假设我们接到了一个开发需求: 汪汪队要到小镇冒险岛进行表演,门票为 99 元,冒险岛上唯一的一个程序员王二需要开发一款可以计算门票收入的小程序。

    33730

    TDD 开发模式的优势与劣势

    Pros and Cons of Test Driven Development 优势 劣势 Pros and Cons of Test Driven Development TDD 开发模式其实就是先准备好测试脚本 优势 强制 Modularization, TDD 开发模式会强行让代码变得模块化, 可以让开发人员更容易理解系统的模块设计, 测试脚本也很适合新人进行学习 功能开发流程变得更高效,因为每一次修改都要运行一次测试 Modularization 的弊端: 很多部分用一个简单模块可以轻易写出, 如果强行要模块化那么很可能让代码变得复杂 比如 React 早期的 Class Component 文件, 每个文件需要写很多重复的模板代码 功能开发流程变得快速但是测试阶段会影响精度 case 进行了大量 mock 导致编写成本变高 测试一般希望尽可能涵盖各种边缘条件 想写一份非常好的测试脚本难度不小 每一个重构之后都需要修改测试代码 如果一个项目已经进行一半,很难中途突然开始引用 TDD

    38010

    TDD(测试驱动开发)之一二事

    测试驱动开发(Test-Driven Development),在极限编程中应用广泛,但测试驱动开发完全可以单独应用。 TDD的基本思路就是通过测试来推动整个开发的进行。 而且这种从使用角度对代码的设计通常更符合后期开发的需求。可测试的要求,对代码的内聚性的提高和复用都非常有益。因此测试驱动开发也是一种代码设计的过程。 原理 测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。 http://www.ibm.com/developerworks/cn/linux/l-tdd/images/X.jpg 过程 测试驱动开发的基本过程如下: 1) 明确当前要完成的功能。 一顶帽子: 开发人员开发过程中要做不同的工作,比如:编写测试代码、开发功能代码、对代码重构等。做不同的事,承担不同的角色。

    44860

    TDD测试驱动开发的实践心得

    1 此事已有定论 Robert C.Martin在他的程序员的职业素养一书中明确提出: 关于TDD,也就是测试驱动开发 此事已有定论,无须争议 笔者对此深以为然,但这并不是信口雌黃的结论,也不是因为谁说了就认定他是对的 2 我与TDD 这几年,我在工作上的重心其实并不在于后端开发,而更多的是在移动端与基于TypeScript与React的前端及桌面端的一些开发上面。 2.1 TDD实践项目经验 2.1.1 2019年的TDD实践 19年时,当时在公司曾经有一段时间负责过一个技术中台的项目,因为这个项目并不大,当时公司是让笔者一个人负责这个项目的后端开发。 那个时候笔者刚刚从移动端开发中出来,有些时间没搞过后端开发了。所以在开发时,也考虑过该用什么样的技术及怎么来做。 当然,这篇文章并不是详细阐述TDD的,所以这个点到此为止,笔者后续会就TDD再来专门阐述为什么TDD会加快代码开发

    22010

    【译】现代化的PHP开发--TDD

    来源/https://www.startutorial.com/articles/view/modern-php-developer-tdd 译/Lemon黄 TDD 简介 如果你还没有听说过测试驱动开发 尽管与Ruby之类的其他语言相比,PHP社区在TDD实施方面稍晚一些。但是,一旦实现了TDD的优势,对于现代PHP开发人员来说,它几乎就变得至关重要。 TDD是一种软件开发技术。 TDD由三个阶段组成:红灯、绿灯、重构 :明确了实施TDD所要遵循的工作流 (需求--->测试-->代码[重构]) 红灯阶段: 在红灯阶段,作为开发人员,我们将计划代码的草稿,而无需实际编写。 TDD 单元测试 TDD使我们可以测试驱动开发周期。在PHP中使用TDD时,显然,我们需要定义将要进行的测试类型。 在项目中使用PHPUnit不一定会使它成为TDD驱动的项目。 开发涉及TDD的过程涉及就是以上的三个阶段。

    37320

    前端测试驱动开发模式(TDD)快速入门

    来源:http://www.ltesting.net 测试驱动开发(Test-Driven Development)是一种软件开发的思维和方法,我的理解是它是一种开发的循环,先写测试代码,再用最小的代码实现这个测试 最近也在实践Tdd开发,和之前先开发,再自测的方向不同,这次的开发顺序是, 文档--->测试用例--->代码--->测试通过--->下一个测试用例。 通过测试代码,可以帮助理清楚程序中关键点 也更有利于之后的维护 缺点 加上测试的代码,会适当增加一些工作量 可能会测的不全面 总体来说,如果对一些基数设施的建设,比如基础组件等,需要长期维护的项目,Tdd 前端TDD开发环境的搭建 如果想应用Tdd的方法到前端的开发中,主要用到以下几个工具(工具的用法在后面介绍): mocha.js mocha 主要提供了describe的语法,用来描述测试用例,并且把执行测试后的结果清楚的返回到终端上 想通过本文,让大家可以简单了解Tdd,并且学到一种新的思路去写代码。

    87720

    译:如何用Swift进行TDD(测试驱动开发)

    如果你还没有用类似Swift的编译型语言进行过TDD,你可能想问:如果测试引用的对象不存在,你怎么进行代码编译,又怎么进行TDD呢? 相对于类似Swift的编译型语言,类似Ruby和JavaScript的解释型语言可能天生更适合TDD,因为你可以编写不存在的测试对象,并且不会产生编译错误。 所以该如何用编译型语言进行TDD? 为了说明这一点,我们对Project类进行TDD,我们希望创建一个它的字典,这样之后可以进行序列化。 结论 你可以用类似Swift的编译型语言实践TDD——事实上, Test Driven Development: By Example(这本书继续谈了TDD)使用了Java这个编译型语言来说明如何进行TDD 只要你以同样的方式对待编译错误和解释型语言的测试失败,TDD过程是完全相同的。

    690110

    究竟该如何进行测试驱动开发TDD)?

    他觉得这似乎和 TDD 的思想并不一致,并问我我对于网上 TDD 已死的言论是怎么看待的。 其实 TDD 已死这样的言论大概 14 年前后就出来了,几年前我为了反驳还把自己对 TDD 的思考总结为一篇文章:如何用正确的姿势打开 TDD?这篇文章里的基本观点都是成立的。 究竟怎样做才算 TDD? 首先,TDD 并不存在一个特别「官方」的解释。 所以,掌握 TDD 的精髓,根据自己的实际情况采纳合理的流程,去芜存菁,而不是机械地采纳 TDD 的流程或者教条,才是正途。 那么根据 Wikipedia,TDD 的核心是什么呢? TDD 要做到什么程度? 产品要为需求服务,无论是开发代码,还是测试代码,也都要为这一目标而服务。TDD 做到什么程度要看你在哪个层次考虑问题。

    35320

    推行测试驱动开发 (TDD) 有这么难吗?

    推行 TDD 成效不彰,充斥着似是而非的言论;TDD 造成额外工作量,TDD 没有效益,ROI 太低…… 为何会如此? 我的观察是…… “大家都把开发人员当贼看……认为只要是代码有缺陷,架构腐败,都认为是开发人员搞的,都认为是开发人员没有质量意识,千错万错都是开发人员的错。” 大家试着同理心去想想,当大家都将开发人员当贼看时,我们又怎能会有一个合理的说法,去说服开发人员做 TDD?我们又怎能会有一个激情的动机,去驱动开发人员做 TDD? 另外一方面,TDD 最大的限制在于: TDD 只能反馈,由开发人员所认知的需求是通过或没通过测试。 也就是说,由于在需求上所存在的认知上的差距,而导致项目的失败,是无法用 TDD 来弥补的。 所以,TDD 要推行成功很简单,不外乎…… 1. 用同理心去对待,去尊重开发人员。 2.

    36450

    TDD与FDD

    FDD和TDD主要区别就在于采用不同的双工方式,为频分双工(FDD) 和时分双工(TDD) 是两种不同的双工方式。 FDD是在分离的两个对称频率信道上进行接收和发送,用保护频段来分离接收和发送信道。 相对而言,TDD用时间来分离接收和发送信道。其就在一个通道中进行,在TDD方式的移动通信系统中, 接收和发送使用同一频率载波的不同时隙作为信道的承载,时间资源在两个方向上进行了分配。 从理论上讲,FDD的优势要比TDD大一些,这就让很多潜在4G用户心动,并且下定决心用联通的LTE-FDD,但是就目前形式而言,笔者认为使用移动或者联通电信的网络其实没有太大影响,网络覆盖率来讲,LTE-TDD 的覆盖率要远大于LTE-FDD,对于4G的速度,不管是LTE-TDD还是LTE-FDD,都有很不错的速度,够现在用户的使用,而用户也没有太大必要去为了体验FDD与TDD的区别而选择换运营商。    现在中国电信和中国联通FDD牌照已经颁发了,虽然中国联通之前名义上TD-LTE商用,实际上还是会在热点地区采用TDD覆盖,本身从技术层面来讲,中国联通只需要升级现有基站模块就能轻松过度到FDD,目前,FDD

    12310

    混合开发:TDD、DDD和BDD交集的值

    目录 TDD测试驱动开发 : Test-driven development,即测试驱动开发 BDD行为驱动开发 : Behavior-driven development,即行为驱动开发 DDD领域驱动设计 : Domain-drive Design,领域驱动设计 测试驱动开发TDD)是一种开发软件的过程,其中在编写代码之前先编写测试。 [在这里插入图片描述] 行为驱动开发(BDD)是对TDD和DDD的改进,旨在通过缩小沟通差距,增进对客户的了解并实现持续沟通来简化开发。 [在这里插入图片描述] Hybrid Practice混合实践 [在这里插入图片描述] TDD Test-driven development,即测试驱动开发。一种开发过程中应用方法。 其思想为先根据需求抽象接口,先编写测试用例,然后在开始编写开发代码。TDD的本意就是通过测试来推动整个开发的进行。

    47500

    开发人员看测试之TDD和BDD

    在了解Behavior Driven Development之前,先介绍Test-Driven Development(TDD)即测试驱动开发,它是一种测试先于编写代码的思想用于指导软件开发。 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。 它的工作流程如下所示: ? TDD方法的一些特点: 有利于更加专注软件设计; 清晰地了解软件的需求; 很好的诠释了代码即文档。 稍微了解TDD、BDD之后才发现,测试不仅仅是一种对于代码的验证,找出几个bug或者一些诸如压力测试、负载测试,更是一种约束,一种规范,是与项目需求息息相关,还需要沟通协调客户、开发人员以及QA,从而帮助更加高效的完成软件设计开发工作 再说BDD   BDD是一种敏捷软件开发的技术。它对TDD的理念进行了扩展,在TDD中侧重点偏向开发,通过测试用例来规范约束开发者编写出质量更高、bug更少的代码。

    81060

    TDD案例-FizzBuzz

    1 什么是FizzBuzz FizzBuzz是一个非常适合各种场景使用的编程题目,也被各路大佬推荐用于TDD的教学。 具体的FizzBuzz题目描述可参见 http://codingdojo.org/kata/FizzBuzz/ 本文将展示通过TDD来实现FizzBuzz的过程,并使用Junit5+AssertJ作为测试工具 * 如果碰到被3整除的数则报“Fizz” * 如果碰到被5整除的数则报“Buzz” * 如果同时被3和5整除则报“FizzBuzz” */ FizzBuzz-利用IDEA协助TDD 可以看到,通过TDD出来的代码,天然就达到了很高的代码覆盖,这也是TDD的一个优势。 ? 4问题 1) 通过TDD出来的代码,还会有缺陷么? 当然会有。 2) 通过TDD出来的代码,还需要重构么? 当然需要。TDD的过程本身就是不断重构实现代码的过程。

    24740

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 云开发 CloudBase

      云开发 CloudBase

      云开发(Tencent Cloud Base,TCB)是腾讯云为移动开发者提供的一站式后端云服务,支持小程序、小游戏、Web、APP开发。它帮助开发者统一构建和管理资源,让开发者可以专注于业务逻辑的实现,而无需理解后端逻辑及服务器运维知识,开发门槛更低,效率更高。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券