9

如果您想将您的开发过程从测试驱动开发转移到行为驱动开发,您会采取或推荐什么路径?

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

有没有人有过让这种转变顺利进行的真实经验(嗯……可能不是那么顺利)?

或者任何人试图做出这种转变?

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

我从以下 SO 帖子中只有关于 BDD 的基本信息。 TDD 和 BDD 之间的主要区别

我正在寻找的关键点是:

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

提前致谢。

编辑:

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

4

4 回答 4

5

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

与我的旧单元测试相比,新样式更具可读性,并且更加关注命名和行为。我们距离打印出方法名称并与业务人员讨论该系统不远了。

Scott Bellware 的一些附加读物:行为驱动开发

测试示例:

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)
    }
}
于 2009-02-09T19:31:24.300 回答
3

据我了解... BDD 是一种看待 TDD 的新方法。这更像是一种心理转变,而不是新技术。

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

于 2009-01-20T18:36:59.503 回答
0

行为驱动开发是一种现代敏捷工具,使您的公司能够重新评估开发人员的核心能力,以便找到更好的沟通方式,增加管理愿景的交叉,这将使您能够在一个全新的水平上有效地创造价值您的内在市场地位。
测试驱动开发的思维方式转变体现了范式转变,包括深入的工作流分析、通过最先进的敏捷方法不断反馈,以及对底层行为场景转换矩阵的仔细关注。

于 2009-01-20T19:33:09.017 回答
0

您可能想收听Hanselminutes Show #146 - 测试驱动的开发就是设计 - TDD 的最后一句话

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

让他“打开”它的书:Microsoft® .NE​​T 中的测试驱动开发(对于 .NET 开发人员,请收听播客了解上下文)

于 2009-01-20T19:50:31.447 回答