TDD(测试驱动开发)

2023-05-16

今天看到的新的有意思的名词,在此将其记录下来。

一. TDD是什么?
Test-Drive Development,是敏捷开发中的一项核心实践和技术。也是一种设计方法论,其基本思想就是:在明确要开发某个功能后,子啊开发功能代码之前,先编写测试代码,然后编写功能代码并用测试代码进行验证,如此循环直到完成全部功能的开发。

二. TDD的关注点:
需求,实现,设计TDD给我们明确的三个步骤,每个步骤关注一个方面:

红: 写一个失败的测试,它是对一个小需求的描述,只需要关心输入输出,这个时候根本不需要关心如何实现。
绿:专注在用最快的方式实现当前这个小需求,不用关心其他需求,也不管代码的质量怎么样。
重构:既不用思考需求,也没有实现的压力,只需要找出代码中的坏味道,并用一个手法消除它,让它变成整洁的代码。

TDD运行的基本流程:红 绿 重构写一个测试用例运行测试写刚好能够让测试通过的实现运行测试识别坏味道,用手法修改代码运行测试

TDD的好处:
覆盖完全的单元测试。
TDD之前要拆分任务,把一个大需求拆分成多个小需求,也可以拆出多个函数来。
单元测试应该只符合简单的几条原则:简单,只测试一个需求。速度快。可包含断言。可以重复执行。
https://www.ibm.com/developerworks/cn/linux/l-tdd/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TDD(测试驱动开发) 的相关文章

  • TDD:帮助编写可测试类

    我有一个快速的小应用程序 想尝试使用 TDD 进行开发 我从未使用过 TDD 实际上甚至不知道它是什么 直到我发现 ASP NET MVC 我的第一个 MVC 应用程序有单元测试 但它们很脆弱 耦合性强 需要太多维护 并且被放弃了 我是来学
  • TestDriven.NET 没有运行我的 MbUnit 设置方法

    我创建了一些 MbUnit 测试装置 其中具有标有 SetUp 属性的 SetUp 方法 这些方法在测试之前使用 MbUnit GUI 控制台运行器和 ReSharper MbUnit 插件运行得很好 但是 当我使用 TestDriven
  • 第一次测试 Laravel 4 应用程序(PHPSpec/BDD 与 PHPUnit/TDD)

    我已经为这个问题苦苦思索太久了 我知道我需要跳入其中一个或另一个 因为它们显然都是可行 有用的工具 但几周来一直处于观望状态 对两者进行研究 PHPUnit http phpunit de vs PHPSpec http phpspec n
  • 运行junit测试时是否可以进入android的调试模式?

    通常我使用运行junit测试adb shell am instrument w com android contacts tests android test InstrumentationTestRunner 它确实有效 它将运行我所有的
  • NUnit 最佳实践

    环境 Visual Studio Professional 2008 中的 C WinForms 应用程序 我一直在挖掘有关 NUnit 最佳实践的指导 作为一个在相对孤立的环境中工作的独立程序员 我希望这里的集体智慧可以帮助我 斯科特 怀
  • PHP 全局常量是一种良好的现代开发实践吗?

    我正在开发一个具有相当大的 PHP 代码库的新项目 该应用程序使用了相当多的 PHP 常量 define FOO bar 特别是对于数据库连接参数之类的事情 这些常量都定义在一个配置文件中 该文件是require once 基本上应用程序中
  • 单元测试与验收测试

    你支持其中之一吗 或两者 我的理解是单元测试 从开发人员的角度验证系统 帮助开发者实践TDD 保持代码模块化 协助检测低粒度的错误 验收测试 从业务和 QC QA 角度验证系统 往往是高级别的 因为它们通常是由不熟悉代码内部工作原理的人编写
  • 测试在最小起订量中多次调用的方法

    我有一个像这样的界面 Interface IWriteFile string FileName get set void Open void WriteData string dataToWrite void Close 我想测试一个将使用
  • 如何使这个 SwingWorker 代码可测试

    考虑这段代码 public void actionPerformed ActionEvent e setEnabled false new SwingWorker
  • C 编程和 TDD

    测试驱动开发仅限于面向对象吗 或者将它与过程语言结合使用是否可能 有用 接下来的几周我必须开始一个更大的 C 项目 我正在考虑如何开发 TDD 是一个design范例 因此不依赖于任何特定的编程范例 简而言之 在编写代码之前先为代码编写测试
  • 为什么 TDD“尖峰”被称为“尖峰”?

    测试驱动开发人员指的是快速 探索性的调查 包括编写代码以查看其是否有效 a spike 你知道他们为什么想出这个词吗 Update 肯特 贝克 Kent Beck 的造词对我来说看起来像是 原始 的 尽管他对这个词的使用在我看来没有多大意义
  • “自动测试/rails [...]不[...]存在。正在中止”

    我发现自动测试已停止工作 autotest loading autotest rails Autotest style autotest rails doesn t seem to exist Aborting 根据这篇博文 http ww
  • 将 TDD 与 Web 应用程序开发集成的最佳实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 单元测试和 ASP NET Web 应用程序在我的团队中是一个模棱两可的点 通常情况下 良好的测试实践会被忽视 Web 应用程序最终会在没有测试
  • 模拟迭代行为

    我有一个具有迭代行为的界面 但在 Rhinomocks 中模拟它时遇到了麻烦 示例接口和类是我的问题的一个非常简单的版本 每次调用 LineReader Read 时 LineReader CurrentLine 都应返回不同的值 下一行
  • 学习 BDD、TDD(ruby、C#、javascript)的好资源

    学习 BDD 和 TDD ruby C javascript 有哪些好的资源 现在用什么好的框架 See 为什么我应该练习测试驱动开发以及应该如何开始 https stackoverflow com questions 4303 why s
  • TDD 红绿灯的重构阶段 - 如何做到这一点?

    所以我对一个班级做了以下测试Board那将会诞生 TestMethod public void Set The Origin As Violet And The Query Confirms It Board board new Board
  • MSTest:如何增加测试时间

    我有一个测试需要运行超过 1 分钟 VS2008 MSTest 测试是从 VisualStudio 启动的 const int TestTimeout 1 TestMethod Timeout 10 60 1000 10 minutes p
  • 测试驱动开发 - 我应该测试数据库列和索引吗?

    我是 TDD 新手 我发现shouldagem 能够测试数据库实体的列是否存在以及测试其索引 但是否有必要在我的测试套件中包含列和索引的测试 我是否需要担心在开发过程中可能会删除任何列和索引 不要测试数据库列 这只是测试实施 不要测试实现
  • RubyMine 不能使用 Guard 吗?

    由于某些无法解释的原因 RubyMine 会自动保存您所做的每一个更改 因此每次击键都会触发 Guard 运行您的测试 最可笑的是 显然没有办法禁用这个自动保存 功能 我只是想知道 RubyMine 似乎是 Rails 开发人员中非常流行的
  • TDD/测试 CSS 和 HTML? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法测试 CSS 和 HTML 例如 有时某些通知会受到某些 CSS 更改的影响 我不想每次进行更改时都手动测试所有通知 Tha

随机推荐

  • windows下C++学习推荐书籍

    推荐几本书给你们 xff0c 有空可以学习一下 xff1a C 43 43 编程相关 xff1a 1 C 43 43 Primer xff1a C 43 43 的工具书 2 Effective C 43 43 xff1a C 43 43 提
  • stm32IO口八种工作模式详细解析(附原理图)

    目录 工作模式介绍常用IO口工作模式分析实际应用 很多小伙伴们在初学stm32时都对stm32的IO口工作模式的原理和配置不了解 xff0c 所以我整理发表此篇文章作为自己复习和他人参考资料 xff08 注 xff1a 该文章参考了stm3
  • cmake之install总结(指定安装文件和安装位置)

    背景 cmake不仅可以构建可执行文件 xff0c 还可以安装 使用CMake xff0c 我们可以使用install 命令指定安装规则 只需要指定安装位置和待安装的目标文件 xff0c 十分简单 以cmake官方教程为例 xff08 3
  • 工训备赛日志(二)——上位机与stm32之间的一种简易通信方式

    工训备赛日志 xff08 二 xff09 上位机与stm32之间的一种简易通信方式 一 摘要 上位机检测到物体之后 xff0c 要将信号传递给控制底层的STM32 xff0c 这里提出了一种基于读取电平和外部中断的简易通信方式 此方法占用五
  • 【2】中断方式和查询方式的区别

    1 中断方式 xff1a 接收数据时 xff0c MCU转入中断服务程序 xff0c 再处理接收到的数据 xff1b CMT2300A接收数据的中断 xff1a 检测RX FIFO TH 中断 xff0c 一旦有效表示FIFO 已经被填入预
  • Ubantu 安装到VMware详解

    想要在VMware中运行Linux系统 xff0c 那么就需要Linux系统安装到VMware虚拟机上面 在这里 xff0c 以把ubantu16 04安装到VMware虚拟机中为教程进行图文讲解 xff0c 共分为三个步骤 xff0c 分
  • 数字直流电源设计

    设计目标 xff1a 市电输入 开关频率50KHz 60V 20A 1200W输出 输出电压纹波0 2 输出电流纹波20 效率0 8 1 确定输入电压 经查阅 xff0c 我国市电电压标准 xff0c 220V单相供电时 xff0c 为额定
  • CAN报文格式

    CAN协议的报文传输过程中有 数据帧 远程帧 错误帧 过载帧和帧间隔 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 1 数据帧 用于发送节点向接收节点传送数据的帧 nbsp nbsp nbsp nbsp nbsp n
  • FreeRTOS调度器启动

    nbsp 在真正启动调度器之前 先创建空闲任务 初始化一些变量 真正启动调度器的函数是xPortStartScheduler 启动调度器 void vTaskStartScheduler void BaseType t xReturn if
  • 安装novnc,并加入开机自启

    1 安装git工具 apt get install git y 2 下载novnc git clone https github com novnc noVNC 3 ls 查看 xff0c 已经下载完成 4 vim novnc sh把启动命
  • 【C++初阶11-模版进阶】解锁C++模版更多玩法

    今天 xff0c 带来模版进阶的讲解 主要讲解 xff1a 非类型模版参数模版的特化模版的分离编译 文中不足错漏之处望请斧正 xff01 非类型模版参数 模版参数分为类型模版参数和非类型模版参数 可以这么理解 xff1a 前者是为了泛化类型
  • Qt 获取当前时间

    1 获取带日期的时间 xff0c 使用QDateTime类 QDateTime current date time 61 QDateTime currentDateTime QString current date 61 current d
  • Qt 判断文件或文件夹是否存在及创建文件夹

    1 判断文件夹是不是存在 参数说明 xff1a QString fullPath 文件夹全路径 方法1 bool isDirExist QString fullPath QDir dir fullPath if dir exists ret
  • Qt阻塞延时与非阻塞延时(四种方法之个人笔记)

    功能描述 毫秒级非阻塞延时函数 参数 延时毫秒数 其他说明 已试验 可用 但CPU占用率较高 void VdpuMngUI msecSleep int msec QTime dieTime 61 QTime currentTime addM
  • 获取本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息及网线是否插入状态

    使用windows sdk提供的API函数GetAdaptersInfo 可以获得本机所有网卡的网卡名 网卡描述 网卡MAC地址 网卡IP 网卡类型等信息 xff0c 并用IP ADAPTER INFO结构体存储 xff0c 使用GetIf
  • C++ GUI Programming with Qt4 Second Edition 之 附录C.1 Qt Jambi入门

    Qt Jambi入门 本节 xff0c 我们将开发一个简单的Java应用程序并显示如图C 1所示的窗口 除窗口标题之外 xff0c Jambi Find对话框与第二章中创建的Find对话框的外观和功能均相同 通过使用相同的例子 xff0c
  • WinRAR 5.5 简体中文版去广告弹窗方法

    WinRAR 5 5 简体中文版去广告弹窗方法 1 下载WinRAR 5 5WinRAR官网 xff08 http www rarlab com xff09 2 下载 Resource Hacker 3 用压缩软件打开WinRAR安装包 x
  • C++子类的构造函数后面加:冒号的作用

    在C 43 43 类的构造函数中经常会看到如下格式的写法 xff1a MyWindow MyWindow QWidget parent Qt WindowFlags flag QMainWindow parent flag 上述语句中单冒号
  • “真相”重要吗?

    这是一篇个人思索的鸡汤 xff0c 并不想表达什么观点 xff0c 只是因为有了要写的冲动才写的 言归正传 xff0c 我认为 真相很重要 周末回老家看了一岁半儿子 xff0c 从国庆送回老家已经一个半月了 周日下午我临走时 xff0c 他
  • TDD(测试驱动开发)

    今天看到的新的有意思的名词 xff0c 在此将其记录下来 一 TDD是什么 xff1f Test Drive Development xff0c 是敏捷开发中的一项核心实践和技术 也是一种设计方法论 xff0c 其基本思想就是 xff1a