测试驱动开发(tdd) 学习笔记(1)基本思想原则和术语

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

    这几天学习了一下测试驱动开发(tdd) 实用指南,感觉相见恨晚,收获很大。以前也听别人说过测试驱动开发,也用过dunit,但是当时不知道具体的含义,也没有仔细研究一下,真是遗憾。

   Test-Driven Development  A Practical Guide 测试驱动开发,实用指南,作者David Astels

        测试驱动开发的主要思想是 测试先行,在写一个类的具体实现之前,先写类的测试代码,类的测试代码通过调用各种public 的方法,对类进行测试。在写测试代码的过程中,思考类的调用方法,也就是类的外在表现形式。

      我觉得这种做法的很大一个好处是:因为设计一个类是从它的外部形态开始的,所以设计类的时候就会自然的考虑类的封装。

        测试驱动开发采用的主要方法之一是重构(refactoring)。重构两个字的字面意思,并不能涵括它的具体涵义,在tdd中重构具体指什么,下面通过一个简单的例子来说明:

        我们想编写一个math 类,来实现简单的加(sum)、减(minus)运算,首先我们编写math 类的初步测试方法。

public class testMath extends TestCase{

     public void testSum(){

          math math1 = new math ;

          assertEquals("3加2应该等于5",5,math1.sum(3,2));

     }

然后我们编写具体的math 类

public class math {

     public int sum(int a,int b){

          return 5;

     }

}

运行测试,测试通过。但是很明显,sum方法的算法是不对的,这是因为测试不够全面。我们重新修改测试

public class testMath extends TestCase{

     public void testSum(){

          math math1 = new math ;

          assertEquals("3加2应该等于5",5,math1.sum(3,2));

          assertEquals("0加0应该等于0",0,math1.sum(0,0));

          assertEquals("1加1应该等于2",2,math1.sum(1,1));

     }

然后我们对math类的sum方法进行重构

public int sum(int a,int b){

          return a+b;

}

        以上是一个简单的例子,如果是在实际的开发中的话,至少还要加上对临界值的测试,比如两个最大的int值相加等。在上面的例子中,重构是为了让测试通过,或者说是为了保证代码功能上的正确性;有了这些test 作保证,我们还能为了提高代码的质量而重构。

          我个人的理解,测试驱动开发的一个原则就是,编写可以信任的测试,只要测试全部通过,那么说明类的方法全部正确,如果你对代码没有信心,那说明测试代码的测试覆盖面不够,需要进一步完善。

         关于重构的方法,书上归纳的有 extract class ,extract interface,extract method,replace type code with subclasses,replace conditional with polymorphism,form template method,introduce Explaining variable,replace constructor with factory method,replace inheritance with delegation,replace magic number with symbolic constant ,replace nested conditional with guard clauses,,refaction to patterns. 这些方法有很多的目的是提高代码质量。

Java 测试驱动开发TDD):让你的代码更健壮 TDD 是一种科学、高效的开发方法,不仅能帮助你写出更健壮的代码,还能减少 Bug 返工。当然,TDD 不是万能的,它更适合逻辑性强、需求清晰的模块开发。所以,别只埋头写代码,尝试用 TDD 先写测试,用一种“未雨绸缪”的心态开发项目,你会发现它的妙处。现在,试试 TDD 吧! 阅读详情

相关推荐

TDD测试驱动)调研

测试驱动开发(Test Driven Development, 简称TDD)是敏捷开发中的一项核心实践技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写测试用例代码,测试代码确定需要编写什么产品代码。TDD基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。可以帮助我们增量式的构建系统,也能保证代码在任何时刻都不会错的离谱。

专注技术;java、架构、项目交付流程... 1850

测试驱动开发

测试驱动开发一:测试驱动开发所追求的目标:       代码整洁可用。 二:测试驱动开发基本过程如下:1) 明确当前要完成的功能。可以记录成一个TODO 列表。2) 快速完成针对此功能的测试用例编写。3) 测试代码编译不通过。4) 编写对应的功能代码。5) 测试通过。6) 对代码进行重构,并保证测试通过。7) 循环完成所有功能的开发。如图:

AfricaHyena的专栏 1857

【编程理念】初识TDD(测试驱动开发)思想

-------------------------------------------------------START---------------------------------------------------------------------- 今天是2020年元旦,先祝大家新的一年工作顺利;只争朝夕,不负韶华! 好久没更新了,今天分享的主题为:测试驱动开发,简称TDD。 T...

不同地方的猴子的博客 1157

单元测试TDD、BDD

## 单元测试相关 ### TDD三定律(测试驱动开发) **1 、You are not allowed to write any production code unless it is to make a failing unit test pass.** 除非为了使一个失败的unit test通过,否则不允许编写任何产品代码(必须先写测试用例) ---- **2 、You are not allowed to write any more of a unit test than is su

Esy_Hong 788

什么是测试驱动开发

测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它强调在编写功能代码之前,先编写测试代码。这种方法的核心思想是通过测试来推动整个开发过程的进行,确保代码的质量可维护性。

软件行业技术文化交流。 684

测试驱动开发的代码设计原则

1.背景介绍 测试驱动开发(TDD,Test-Driven Development)是一种编程方法,它强调在编写代码之前先写测试用例。这种方法可以确保代码的质量,提高代码的可维护性可读性。在本文中,我们将讨论测试驱动开发的代码设计原则,并提供详细的解释实例。 1.1 测试驱动开发的优势 测试驱动开发的主要优势包括: 提高代码质量:通过先写测试用例,开发人员可以关注代码的质量,确保代码...

AI天才研究院 1092

驱动测试开发

测试驱动开发(Test Driven Development,英文缩写TDD)是极限编程的一个重要组成部分它的基本思想就是在开发功能代码之前,先编写测试代码也就是说在明确要开发某个功能后首先思考如何对这个功能进行测试,并完成测试代码的编写然后编写相关的代码满足这些测试用例然后循环进行添加其他功能,直到完成全部功能的开发。代码整洁可用(clean code that works)测试驱动开发所追求的目标。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。单元测试的目标。

ada4656的博客 650

测试驱动开发TDD)实践与技巧

引言 测试驱动开发,英文全称 Test-Driven Development,简称 TDD,是一种不同于传统软件开发流程的开发方法。 在《程序员的职业素养》第五章,我第一次看到有关 TDD 内容,当时Bob大叔向我展示了一种不可思议的编程开发方法,这种方法颠覆了我的认知。Bob 大叔列举了 TDD 很多好处,例如确定性、降低代码缺陷、方便代码重构、测试单元文档化,更优秀的代码设计等等。并强力安利读者们尝试 TDD,因为 TDD 是专业人士的选择。 在 Bob 大叔的洗脑下,我决定去尝试学习如何使用 TDD

记录学习的过程 1万+

TDD】深度解读 - TDD测试驱动开发

有广义狭义之分,常说的是狭义的 TDD,也就是 UTDD(广义的 TDD 是ATDD),包括BDD)等。本文所说的 TDD 指狭义上的 TDD,也就是「TDD是敏捷开发中的一项核心实践技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,。。

qq_43331089的博客 2万+

测试开发TDD测试驱动开发了解一下?

1、什么是TDD 我第一次接触TDD这个概念,是在<<代码整洁之道>>中,作者鲍勃大叔在书中,写了一些关于测试代码的代码规范,其实就提到了有关TDD三定律: - 定律一: 在编写不能通过的单元测试前,不可编写生产代码 - 定律二: 只可编写刚好无法通过的单元测试,不能编译也算不能通过 - 定律三:只可编写刚好足以通过当前失败测试的生存代码 我第一次读到这三个定律时,不能说是毫无头绪,只能说是一脸懵逼。 完全不知道作者想表达啥意思,也没有案例代码。 对此,我不得不网上查阅的很多相关

优秀的程序员不应该是CRUD 7277

测试驱动开发TDD)方法详解

在软件开发过程中,质量效率始终是开发团队追求的目标。传统的开发方法常常先编写代码,再进行测试,这种方式在发现问题时常常为时已晚。为了更早地发现解决问题,测试驱动开发(Test-Driven Development,简称TDD)应运而生。TDD是一种强调测试先行的开发方法,它不仅可以提高代码质量,还能提高开发效率。本文将详细介绍TDD的定义、开发流程、常用工具框架,并探讨其在实际项目中的应用。

cooldream2009的博客 3571

tdd测试驱动开发)的概述

简单介绍tdd测试驱动开发)的方法,思想与一些best practices

abchywabc的博客 1万+

测试驱动开发(TDD)学习分享-上篇

测试驱动开发(TDD)是一种增量式软件开发技术。简单地说,就是在没有失败的单元测试的前提下不可以写产品代码。这些测试要很小,而且要自动化。用测试驱动其实很合理。相对于直接写产品代码,TDD的实践者们会先用测试来表达他们希望产品代码会有什么样的行为。然后这个测试显然会失败。只有在这时,他们才开始写产品代码;以便让测试通过。在测试驱动开发LightScheduler时,测试夹具通过截获对TimeServeiceLightController的调用来校验LightScheduler的行为是否正确。

u010467490的博客 3246

测试驱动开发TDD

测试驱动开发是一种迭代开发方法,强调在编写代码之前先编写测试用例。这些测试用例定义了预期的功能行为,然后开发人员编写足够的代码来满足这些测试TDD的核心理念是“红-绿-重构”,即先编写失败的测试(红),然后编写代码使其通过测试(绿),最后进行代码重构以保持代码质量。

qq_39431405的博客 2129

Python测试驱动开发(TDD)

Python测试驱动开发(TDD) 前言:TDD是一种敏捷开发模式,而不是测试方法。 目录 Python测试驱动开发(TDD) 目录 单元测试与功能测试的区别 “单元测试/编写代码“循环 遵守不测试常量规则 有用的TDD概念 不要预先做大量的设计 确保出现回归测试 如何测试设计布局 别忘了重构 尽早合并代码 要判断何时应该编写测试确认我们没有犯错 单元测试需要一个断言框架...

羊同学 1万+

浅谈测试驱动开发TDD

测试驱动开发TDD)是一种软件开发方法,强调在编写功能代码之前先编写自动化测试用例。TDD的核心步骤包括:编写测试用例、运行失败的测试、编写最少量的代码使测试通过、运行测试、重构优化代码,并迭代这一过程。TDD的目标是通过自动化测试确保代码质量、可维护性稳定性,同时降低后期修复缺陷的成本。TDD与传统开发相比,具有更高的需求明确性代码质量,且调试成本较低。在TDD中,单元测试集成测试分别关注单个组件多个组件的组合,两者结合使用可全面提升代码质量系统可靠性。TDD特别适用于复杂业务逻辑或对稳定性要

红军不怕远征难,万水千山只等闲 1195

TDD测试驱动开发

TDD测试驱动开发什么是测试驱动开发测试驱动开发该怎么做?需求一:输入一个非元音字符,并预期返回字符本身 (输入"h" 返回“h”)需求二:输入一个元音(a,e,i,o,u),返回 mommy (输入"a" 返回“mommy”)需求三:加入新的业务逻辑(元音字符超过字符串的 30% ,被特定字符串替换)运行结果变红需求四:加入新的业务逻辑(连续元音的字符串,并预期只被替换一次)运行结果变红完整代码 什么是测试驱动开发 测试驱动开发(Test-Driven Development),是敏捷开发中的一项核心实

qq_45661125的博客 3944

测试驱动开发TDD)的优点缺点

测试驱动开发(英文全称Test-Driven Development,简称TDD)是确保代码具有良好质量的一种方法。它要求开发人员在编写代码之前思考代码应该如何工作,然后让你严格测试,以确保代码确实按照规划的要求运行。 使用测试驱动开发的确有很多好处,但是,使用这种方法也有一些缺点。

人生不怕起点低,就怕没追求 2100

什么是测试驱动开发TDD)?

测试驱动开发TDD)是一种软件开发方法,它的核心思想是:​​先写测试,再写代码​​。但这并不是说让你一开始就写好所有测试,而是按照"红-绿-重构"的循环来开发

跟佟格湾一起学习计算机知识吧~ 1391
下一篇: 测试驱动开发(tdd)学习笔记 (2) 工具,技术 junit
bfox
博客等级 码龄25年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值