美文网首页
代码单元测试三

代码单元测试三

作者: supremecsp | 来源:发表于2022-03-03 09:36 被阅读0次

TDD
TDD (Test Drvien Development)测试驱动开发,TDD 的节奏:红 - 绿 - 重构


红表示写了一个新的测试,测试还没有通过的状态;绿表示写了功能代码,测试通过的状态;而重构就是在完成基本功能之后,调整代码的过程。

先写测试,然后写代码完成功能,在第一步和第二步上,测试先行开发和测试驱动开发是一样的。二者的差别在于,测试驱动开发并没有就此打住,它还有一个更重要的环节:重构(refactoring)。

所以我们说,测试先行开发和测试驱动开发的差异就在重构上。

在测试驱动开发中,重构与测试是相辅相成的:没有测试,修改代码只能是提心吊胆;没有重构,代码的混乱程度会逐步增加,测试也会变得越来越不好写。
重构就是一个消除代码坏味道的过程。一旦你有了测试,你就可以大胆地重构了,因为任何修改错误,测试都会替你捕获到。

TDD真正动手做开发的第一步是任务分解,把一个规模很大的需求拆分成若干小任务。面对一个具体的小任务,我们才有动手写测试的基础。测试驱动开发要从任务分解开始。

为了写测试,首先“驱动”着我们把需求分解成一个一个的任务,然后会“驱动”着我们给出一个可测试的设计,而在具体的写代码阶段,又会“驱动”着我们不断改进写出来的代码。把这些内容结合起来看,我们真的是在用测试“驱动”着开发

BDD
BDD(Behavior Driven Development)行为驱动开发,BDD是从业务视角出发的,这种出发点很大程度受到领域驱动设计DDD的影响。在 BDD 的话语体系中,“测试”的概念就由“行为”所代替,所以,这种做法称之为行为驱动开发。

今天最流行的 BDD 框架应该是 Cucumber,下面是一个 BDD 的示例

Scenario: List todo item
  Given todo item "foo" is added
  And todo item "bar" is added
  When list todo items
  Then todo item "foo" should be contained
  And todo item "bar" should be contained

从这个例子我们不难看出,BDD 的测试用例有很强的可读性。即便我们不熟悉技术,单凭这段文字,我们也能看出这个用例想表达的含义。这也就是我们前面说 BDD 测试用例更贴近业务的原因。它希望成为业务人员和技术团队之间沟通的桥梁,所以,它的表述方式更贴近于业务。

这里的核心点就是它的描述格式:“Given…When…Then”。Given 表示一个假设前提,When 表示具体的操作,Then 则对应着这个用例要验证的结果。

想写好 BDD 的测试用例,关键点在用业务视角描述。具体的案例可以看看https://github.com/supremecsp/geektime-todo

或者其他博客:https://cloud.tencent.com/developer/article/1478850

文章来源:极客时间《程序员的测试课》第17,18节

相关文章

  • 简洁代码--单元测试

    代码整洁之道笔记 [TOC] 单元测试 测试驱动开发 TDD三定律 在编写不能通过的单元测试前,不能编写生产代码。...

  • 2022-10-29-测试驱动

    TDD 的三项法则 先写单元测试代码,然后再编写被测试代码。 一个单元测试失败,就停止编写测试代码,即保证每一次都...

  • 需“软件质量工作总结-2”

    1、初步完成 1)独立输出异常类单元测试代码 2)单元测试代码总输出异常的行号 3)异常类单元测试代码永久抛出异常

  • 代码单元测试三

    TDDTDD (Test Drvien Development)测试驱动开发,TDD 的节奏:红 - 绿 - 重构...

  • 代码整洁之道 9、10、11

    单元测试 9.1 TDD三定律 在编写不能通过的单元测试前,不可编写生产代码 只可编写刚好无法通过的单元测试,不能...

  • 理解单元测试

    单元测试 在Java中单元测试指代码单元的测试用例,代码单元指类中的方法。单元测试是用以保证代码的逻辑正确性,测试...

  • 关于单元测试

    什么是单元测试: 单元测试从本质上讲也是代码,与普通代码的区别是,它是验证代码正...

  • 单元测试

    1、什么是单元测试 单元测试是一种通过代码检测代码的开发手段,常用于敏捷开发和测试驱动开发; 单元测试主要针对业务...

  • Junit单元测试入门

    什么叫单元测试 单元测试可以提高代码质量与开发效率。 main单元测试与junit单元测试的比较 传统的main方...

  • 尽量避免bug的一些方法

    与产品经理和有经验的测试多沟通(需求阶段,代码设计阶段) 代码开发阶段-- 必须写单元测试并且同步维护单元测试代码...

网友评论

      本文标题:代码单元测试三

      本文链接:https://www.haomeiwen.com/subject/nzherrtx.html