什么是TDD测试驱动开发(Test Driven Development)?

什么是测试驱动开发?

软件开发团队通常会编写自动化测试套件来防止回归。这些测试通常是在编写应用程序功能代码之后编写的。我们将采用另一种方法:在实现应用程序代码之前编写测试。这称为测试驱动开发 (TDD)。

为什么要应用 TDD?通过在实现所需功能之前断言预期行为,我们可以根据系统想要执行的操作来设计系统,而不是系统已经执行的操作。

"测试驱动"应用程序代码的另一个好处是,测试会指导您编写满足实现所需的最少代码。测试通过后,您便拥有了可运行的实现(应用程序代码),并可以防止将来出现错误(测试)。

测试金字塔

可以在系统的不同级别编写不同的测试。在每个级别,执行速度、维护测试的"成本"以及测试对系统正确性带来的信心之间都存在平衡。这个层次结构通常表示为"测试金字塔"。

**单元测试:**单元测试测试的是系统中与系统其他部分隔离的一个小"单元"。它们应该简单而快速。您需要在测试金字塔中拥有较高的单元测试比例,因为它们是设计高内聚、松散耦合软件的关键。

**集成测试:**集成测试测试系统的子集,并可能在一次测试中测试多组单元。它们的编写和维护更复杂,并且运行速度比单元测试更慢。

**端到端测试:**端到端测试使用与用户相同的界面(例如 Web 浏览器)来测试系统。虽然端到端测试非常全面,但它可能非常缓慢且脆弱,因为它们在可能复杂的 UI 中使用模拟用户交互。尽量减少此类测试的数量。

红色、绿色、重构循环

软件开发团队喜欢快速行动。那么如何才能永远快速行动呢?通过不断改进和简化代码------重构。您可以安全重构的唯一方法之一是拥有值得信赖的测试套件。因此,重构您当前关注的代码的最佳时间是在 TDD 周期中。这称为红色、绿色、重构开发循环:

  1. **红色:**为所需功能编写失败测试。
  2. **绿色:**实现最简单的可以使测试通过的事情。
  3. 重构: 寻找机会简化、减少重复或以其他方式改进代码而不改变任何行为,即重构。
  4. 重复!
相关推荐
python百炼成钢5 小时前
53.Linux regmap驱动框架
linux·运维·服务器·驱动开发
python百炼成钢5 小时前
54.Linux IIO驱动框架
linux·运维·服务器·驱动开发
赖small强7 小时前
【Linux驱动开发】Linux Sysfs 虚拟文件系统深度解析与实战指南
linux·驱动开发·sysfs·kobject·sysfs 映射·/sys/devices
南天一梦N1 天前
新的软件研发范式即将到来!
驱动开发·架构·系统架构·aigc·ai编程
电脑小管家1 天前
蝰蛇鼠标驱动怎么安装?全型号驱动下载方法汇总
windows·驱动开发·计算机外设·电脑·游戏程序
赖small强1 天前
【Linux驱动开发】 Linux `/proc` 虚拟文件系统深度解析与实战指南
linux·驱动开发·/proc·/proc/sys`·/proc/net
Saniffer_SH1 天前
【每日一题】PCIe 里的 RefClk (Reference Clock) 到底是干什么的?
服务器·驱动开发·单片机·嵌入式硬件·fpga开发·计算机外设·硬件架构
赖small强1 天前
【Linux驱动开发】Linux EXT4文件系统技术深度解析与实践指南
linux·驱动开发·ext4·superblock·super block·block bitmap·inode bitmap
范纹杉想快点毕业1 天前
《STM32深度100问:AI助教工程师的实战问答录》从入门到精通适用入门嵌入式软件初级工程师,筑牢基础,技术积累
arm开发·数据库·驱动开发·mongodb·fpga开发
赖small强1 天前
【Linux驱动开发】Linux虚拟文件系统(VFS)技术架构深度解析
linux·驱动开发·vfs·inode·ext4·superblock·目录项