您建议从TDD迁移到BDD的步骤是什么?

时间:2009-01-20 18:07:12

标签: unit-testing tdd bdd

如果您想将开发过程从测试驱动开发转移到Behavior-Driven Development您将采取或推荐的路径?

您可能面临的挑战是什么?随着范式的改变,移动开发过程本身将是一项艰巨的任务,思维过程和项目执行的前景发生变化。

有没有人真正体验到这种转变顺利进行(嗯...可能不是那么顺利)?

或者是否有人试图实现这一转变?

我知道这可能不适用于每一件事。但如果有人需要朝着这个方向迈进,那么合乎逻辑的步骤是什么。

我从以下SO帖子中只有关于BDD的基本信息。 Primary differnce between TDD and BDD

我正在寻找的关键点是:

  • 需要什么样的开发人员培训?
  • SDLC流程是否有任何重大变化?
  • 您推荐哪些BDD工具(.net)?
  • 良好的BDD资源(.net)

提前致谢。

编辑:

关于.NET的BDD Framework,我在SO中看到了这篇文章 Most Mature BDD Framework for .NET

4 个答案:

答案 0 :(得分:5)

当我开始研究BDD时,我调查了所有框架(对于.net)并最终没有使用它们。主要原因是我觉得社区还没有确定语法和最佳实践,所以我继续使用NUnit和基于Ben Scheirman的blog post的基类。这非常好,因为BDD不是关于工具,而是使测试干净且易于理解,这对于像nunit这样的普通工具来说是完全可能的。

与我的旧单元测试相比,新风格更具可读性,并且更加注重命名和行为。我们打印方法名称并与业务人员讨论该系统并不是那么远。

Scott Bellware的一些额外阅读:Behavior-Driven Development

考试考试:

public class WhenAddingLineItemToEmptyOrder : BDDBase
{
    Order order;

    [SetUp]
    public void Arrange()
    {
        order = new Order();
    }

    public void Act() // called by BDDBase
    {
        LintItem item = new LineItem();
        item.Quantity = 1;
        item.Price = 10;
        order.AddLineItem(item);
    }

    [Test]
    public void TotalPriceShouldBeUpdated()
    {
        Assert.AreEqual(10, order.TotalPrice);
    }

    [Test]
    public void OrderCanBeCheckedOut()
    {
        Assert.IsTrue(order.CanBeCheckedOut)
    }
}

答案 1 :(得分:3)

据我所知...... BDD是一种看待TDD的新方式。这更像是一种精神转变,而不是一项新技术。

我的意思是说你可以在技术上使用单元测试工具来做BDD

答案 2 :(得分:0)

行为驱动开发是一种现代敏捷工具,使您的公司能够重新获得开发人员的核心竞争力,以便找到更好的沟通方式,增加管理愿景的交叉,从而使您能够从根本上有效地创造价值。您内在市场地位的新水平。
来自测试驱动开发的思维模式转换体现了一种范式转变,包括深度工作流分析,通过最先进的敏捷方法的持续反馈,以及对潜在行为场景转换矩阵的仔细关注。

答案 3 :(得分:0)

您可能想听Hanselminutes Show # 146 - Test Driven Development is Design - The Last Word on TDD

Scott Bellware最有趣的事情是:“测试驱动开发就是设计”

为他“开启”的书:Test-Driven Development in Microsoft® .NET(对于.NET开发人员,请听播客的上下文)