TDD 与 BDD - 详细指南

TDD 与 BDD

软件测试在软件开发周期中至关重要,可确保开发的产品可靠且质量高。应用程序的质量对于提供令人满意的用户体验至关重要。注意在应用程序中编写测试所使用的开发方法也很重要。

测试驱动开发 (TDD) 和行为驱动开发 (BDD) 是开发人员用来编写有利于开发人员、用户、产品经理和利益相关者的质量测试的两种流行且有效的方法。

在本文中,您将了解测试驱动开发 (TDD) 和行为驱动开发 (BDD),包括它们的含义、它们的原则、优势、劣势、它们的工作方式以及它们的主要区别。

测试驱动开发概述

TDD 是一个基于敏捷开发方法的重复和持续过程,涉及在开发应用程序的每个阶段创建测试用例以定义预期的代码行为。

在 TDD 中,开发人员首先创建一个单元测试用例来展示代码的预期行为,然后再实际实施它。如果测试失败,他们会反复编写新代码,直到成功通过。之后,他们继续重构应用程序的源代码,这涉及在不引入新功能或损害应用程序的原始功能的情况下重构代码。

为了有效地实施 TDD,该过程需要分解应用程序的功能并为每个方面生成测试。这种方法确保对组件进行系统和彻底的测试和监控。

在应用程序中构建身份验证系统可以看到 TDD 的一个很好的例子。


 

根据上图,开发人员首先确定和定义身份验证系统的要求,包括 OAuth、用户名、密码等身份验证方法。然后,开发人员编写一个测试来定义身份验证系统组件之一的预期行为,比如登录功能。

之后,开发人员将运行测试,最初会失败,因为功能尚未实现。然后开发人员编写通过测试所需的代码。
然后重新运行测试,并重构代码。重构后,重新运行测试以确保它们继续通过。

验证登录功能后,创建其他功能的附加测试用例,例如帐户验证、注册和密码重置,并重复 TDD 过程。

TDD 的优点和缺点

TDD 提供了几个好处。尽管如此,它也有一些缺点,如下所示:

  • 更快的开发周期:TDD 允许持续交付软件更新,其架构使开发人员能够快速识别和修复代码中的错误。更新的快速集成促进了更快的开发和高质量软件的交付。

  • 提高代码质量:在编写代码之前编写测试用例使开发人员能够更好地理解所需的功能并编写结构良好的代码。此外,使用 TDD 方法可以更轻松地重构代码部分,并在不影响现有功能的情况下减少错误。

  • 耗时:TDD 在实现功能之前需要更多的时间和精力来编写测试用例,这可能会减慢资源有限和期限短的项目的开发过程。

  • 刚性:在实现代码之前编写测试的 TDD 方法是刚性的,因为它不适合需求不断变化的复杂项目。

TDD 实施的分步演示示例

让我们通过构建一个简单的应用程序看看 TDD 在实践中是如何工作的。

先决条件

要按照本教程进行操作,请确保您具备以下条件:

首先,通过在终端中运行以下命令在系统上创建项目目录:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>mkdir tdd-project
</code></span></span>

接下来,通过运行以下命令更改目录:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>cd tdd-project
</code></span></span>

在代码编辑器中打开项目,并在项目目录中运行以下命令以初始化新的 Node.js 项目:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>npm init
</code></span></span>

接下来,您需要安装一个测试框架,用于在您的项目中执行单元测试。根据用于创建应用程序的编程语言,可以使用多种测试框架。例如 通常用于 Java 应用程序、pytest用于 Python 应用程序nuint用于 .NET 应用程序、jest用于 JavaScript 应用程序等。由于我们使用的是 JavaScript,因此我们将在本教程中使用 Jest 框架。

要将 Jest 测试框架作为开发依赖项安装在项目目录中,只需运行以下命令:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>npm install jest --save-dev
</code></span></span>

安装成功后,jest 将被安装并添加到您的package.json文件中。用这个替换你的测试脚本:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">test</span><span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-text-color)">:</span> <span style="color:var(--syntax-string-color)">"</span><span style="color:var(--syntax-string-color)">jest</span><span style="color:var(--syntax-string-color)">"</span>
</code></span></span>

您的package.json文件应如下所示:

使用 TDD 方法构建应用程序要求您首先编写测试。在将包含测试的tdd 项目的根目录中创建一个名为sub.test.js的文件。Jest 使用一个 . test.js文件命名约定,因此请确保您的文件具有该扩展名。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值