代码之家  ›  专栏  ›  技术社区  ›  chadmyers

与TDD的对抗/幼稚配对:效果如何?

  •  4
  • chadmyers  · 技术社区  · 16 年前

    我的一个朋友在解释他们如何在工作场所与TDD打乒乓球,他说他们采取了“敌对”的方式。也就是说,当测试编写人员将键盘交给实现人员时,实现人员试图做最简单(有时是错误的事情)来通过测试。

    例如,如果他们正在测试getname()方法,并且测试检查“sally”,则getname方法的实现将只是:

    public string GetName(){
        return "Sally";
    }
    

    当然,这将(天真地)通过测试。

    他解释说,这有助于消除检查特定屏蔽值的简单测试,而不是测试组件的实际行为或预期状态。它也有助于推动更多测试的创建,最终更好的设计和更少的错误。

    听起来不错,但在与他进行的一小段时间内,似乎要花更长的时间来完成一轮测试,而不是其他测试,我觉得没有获得很多额外的价值。

    你使用这种方法吗,如果是,你看到它的回报了吗?

    4 回复  |  直到 13 年前
        1
  •  0
  •   Carl Manaster    13 年前

    这是基于团队的个性。每个团队都有其成员的个性。你必须小心,不要以一种优越的态度来实践被动的攻击性实现。一些开发人员对诸如

    return "Sally";

    这种挫折会导致一个失败的团队。我是其中的一个受挫,并没有看到它的回报。我认为更好的方法是更多的口头交流,就如何更好地实施测试提出建议。

        2
  •  2
  •   Craig Angus karan    16 年前

    它可能非常有效。

    它迫使您更多地考虑必须编写什么测试才能让其他程序员编写所需的正确功能。

    你经常通过键盘一块一块地建立代码

    这可能很累,也很费时,但我发现这很罕见,我必须回来修复任何像这样编写的代码中的错误。

        3
  •  1
  •   Heath Borders    16 年前

    我用过这种方法。它不适用于所有对;有些人只是天生抗拒,不会给它一个诚实的机会。但是,它可以帮助您正确地执行TDD和XP。您想尝试缓慢地向代码库添加特性。您不想编写一个需要大量代码才能满足的大型单片测试。你需要一些简单的测试。您还需要确保定期在两对之间来回传递键盘,以便两对都能使用。有了敌对的配对,你们两个都能做到。简单的测试导致简单的实现,代码构建缓慢,并且这两个人都参与了整个过程。

        4
  •  0
  •   adrianh    16 年前

    我有时喜欢——但不要一直使用那种风格。有时可以很好地改变速度。我觉得我不想一直使用这种风格。

    不过,我发现对于初学者来说,介绍测试如何驱动实现是一个很有用的工具。

    推荐文章