小型项目短期项目的TDD和单元测试?

时间:2012-03-30 08:48:56

标签: c# unit-testing tdd

TDD是否适用于最多4人的小型团队完成的小型和短期项目?这真的是一项有利可图的努力吗?

单元测试怎么样? TDD意味着单元测试,但相反没有。单元测试是否足够,在项目开发生命周期中不时完成,直到合理的代码覆盖?

5 个答案:

答案 0 :(得分:2)

对我来说,这不是归结为项目是小还是短。 TDD,正确完成,是关于能够快速运行一组测试,提供对代码的完全信任。还有很多关于TDD的文章也有助于推动项目的适当设计。

所以,你可以说TDD在小项目和短项目中是最好的,因为你最终只编写了使测试通过所需的代码,而不是其他任何东西。因此,降低成本。然后,当您稍后进行更改时,可以对测试和代码充满信心。

我要做的下一个小问题是许多项目从小而短。这些临时解决方案有可能成为发展的战略平台(如果成功)。

答案 1 :(得分:1)

最近我读了一篇名为If you are not doing TDD…的Szymon Pobiega的好文章。我真的很鼓励看看这个。这是因为我对TDD持怀疑态度并将其置于开发生命周期的良好习惯中,作为项目安全的最终解决方案,除了项目的性质。我喜欢这个片段:

  当您完全不了解其形状时,TDD最有用   代码。在这种情况下,你最好不要像你一样快速破解代码   能够。而不是每次做一个小步骤,每次验证   结果。理想情况下,做一对。您所做的每一步都可以实现   发现需要编写的更多测试。我喜欢丹的比喻   在他的演讲中使用:它就像游泳和走路一样   1.50米深的游泳池。您可以一直走路,确保每当您的一只脚在地上或者您可以游泳时   风险更大(没有接触地面),但会让你的行动更快。   TDD就像走路一样。

他引用了Dan North session from NDC 2012

答案 2 :(得分:0)

答案是肯定的!并且由于以下原因。 想象一下自己的情况。您和您的项目团队已经创建了一个很棒的应用程序,并决定将其投入生产。过了一会儿用户来找你说:嘿伙计们,我发现你的应用程序中有一个错误,你可以解决它吗?当然你说是修复错误,用户很高兴。只有一段时间后,他回来说,很好,你解决了问题,但现在做了一些工作,你不能修复吗?

如果您使用过TDD并且已经为应用程序进行了单元测试,那么情况将不会像这样。这是因为您对整个应用程序进行了测试。解决一个错误之后,您只需再次运行单元测试,看看您的“修复”是否会破坏您应用程序中的任何其他内容。

这个答案更多的是针对单元测试的使用。以下是关于TDD本身。

TDD让你作为一个人做的事情是考虑我将在下面编写什么代码(对象,类,函数等)。还有什么是我的代码的边缘if if / else语句我需要检查什么。如果您是自己或20人的项目团队,这并不重要。 TDD的事情是你的思维过程,而不是你项目中的其他人。

答案 3 :(得分:0)

如果您正在进行UnitTesting,那么采用TDD只需要一小步。但是你会从中受益更多。

仅举一例:TDD定义您首先实施测试。这意味着您在开始实施之前考虑要实现的目标。这样可以获得更好的代码。

答案 4 :(得分:0)

TDD和单元测试不是彼此的替代品。在每个项目中,您都应该测试代码,这是您进行单元测试和集成以及系统测试的地方。

然而,TDD是一种开发模式。像瀑布和其他开发方法一样,TDD也是一种方法。在TDD中,您有一些基本要求,您可以编写单元测试以确保实现和运行需求。但是当你编写单元测试时,你意识到为了达到主要要求,你需要实现更多的功能和类。因此,在这种情况下的单元测试使其他要求更加清晰。

假设您需要编写一个应用程序来打印运行该应用程序的计算机的名称。首先你写一个单元测试:

[Test]
public void ProducedMessage_IsCorrect()
{
    AreEqual(BusinessLibrary.ProduceMessage(), System.Environment.MachineName);
}

然后你意识到你需要实现ProduceMessage函数。你实现它就像它获得的那样简单,以便单元测试通过。你写这样的方法:

public string ProduceMessage()
{
    return "MyComputer";
}

然后你运行测试并通过。之后,您提交代码,团队的其他成员获取代码。当他们运行测试时,测试失败,因为您在代码中硬编码了计算机的名称。

因此,您团队中的一些明智成员会将代码更改为正确的形式,然后继续前进。

所有关于选择具有TDD经验的开发人员。我认为至少其中一些应该是经验丰富的TDD开发人员。