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

您如何说服其他人编写单元测试?[闭门]

  •  11
  • tddmonkey  · 技术社区  · 16 年前

    我已经被测试感染了很长一段时间了,但似乎我工作的大多数开发人员要么从未尝试过它,要么出于这样或那样的原因拒绝了它,他们的论点通常是它会增加开发的开销,或者他们不需要麻烦。

    最让我困扰的是,当我对他们的代码进行修改时,我很难对其进行测试,因为我必须应用重构以使其可测试,有时不得不这样做 很多

    我想知道的是,你会用什么论据来说服其他开发人员开始编写单元测试?我介绍的大多数开发人员都非常了解它,看到了它的好处并继续使用它。这似乎总是最重要的 好的

    你如何说服其他杂色船员?我不是在寻找一个测试好处的列表

    13 回复  |  直到 11 年前
        1
  •  7
  •   S.Lott    16 年前

    质量不言而喻。如果你比其他人都成功,这就是你需要说的。

        2
  •  7
  •   myplacedk    16 年前

    然后,您就可以开始一种文化,其中“未测试”是糟糕编码的标志,“失败”是正在进行的工作的标志,“通过”是完成代码的标志。

    当然,您不需要100%的测试覆盖率。但一个区域的覆盖率为1%,另一个区域的覆盖率为30%,您有一个衡量哪个区域最有可能在生产中失败的指标。

        3
  •  7
  •   Kjetil Klaussen    16 年前

    我是一名顾问,因此我经常需要解决在组织中实施TDD的问题。幸运的是,当公司雇用我时,往往是因为我在某些领域的专业知识,因此在吸引人们注意方面,我可能会有一点优势。或者可能只是因为作为一个局外人,我更容易进入一个新的团队,并说“嗨!我在其他项目上尝试过TDD,我 知道 这是有效的!“或者可能是我的说服力/固执?:)不管怎样,我经常发现说服开发人员开始编写测试并不困难。但我发现困难的是,教他们如何编写好的单元测试。正如你在问题中指出的那样,坚持正道。

    blogged about it here ,但本质是坐下来做一些结对编程。在进行结对编程时,我首先开始编写单元测试。通过这种方式,我向他们展示了测试框架是如何工作的,我是如何构造测试的,并且经常使用模拟。单元测试应该是简单的,所以所有的测试应该是相当容易理解的,即使对于初级开发人员也是如此。要解释的最糟糕的部分通常是模拟,但使用易于阅读的模拟框架,如 Moq 帮助很大。然后,当测试完成时(没有编译或通过),我将键盘交给我的同事,以便他能够实现该功能。我只是告诉她/他;“让它变成绿色!然后我们继续下一个测试;我编写测试,我旁边的‘即将被测试感染的开发人员’编写功能。

        4
  •  4
  •   philant    16 年前

    以身作则 . 如果你能得到证据,证明在单元测试代码上的回归比其他地方要少。

    获得QA和管理层的认可,以便您的流程要求进行单元测试。

    其他人开始单元测试:提供帮助,提供一个框架以便他们可以轻松开始,运行一个介绍性的演示。

        5
  •  3
  •   Rob Wells    16 年前

    编辑: 为了给我上面有趣的评论增添一些内容,如果没有测试他们的工作,人们怎么知道他们是否真的完成了呢?

    请注意,如果开发代码的测试评估中不允许有时间,那么您将有一场说服他人的战斗。

    编码工作和测试工作之间的一对一分割似乎是一个不错的数字。

    干杯

    抢劫

        6
  •  3
  •   Warrior    16 年前

    如果一个人写了更多的测试,并产生了好的结果,那么就赞美他,向其他人展示最好的测试,并要求他们产生与此相同或更好的结果。

        7
  •  3
  •   HTTP 410    16 年前

    如果没有一个或多个痛点,人(和过程)是不会改变的。因此,您需要找到重要的痛点,并演示单元测试如何帮助解决这些痛点。

    如果您找不到任何明显的痛点,那么单元测试可能不会为您当前的流程增加很多价值。

    正如Steve Lott所暗示的,交付比其他团队成员更好的结果也会有所帮助。但如果没有这些痛点,我的经验是人们不会改变。

        8
  •  2
  •   Michael Borgwardt    16 年前

    有两种方法:说服项目经理单元测试可以提高质量并节省时间,然后让他强制进行单元测试。

    或者在一个重要的发布日期之前等待一次开发危机,每个人都必须加班和周末来完成最后的功能并消除最后的bug,结果发现他们刚刚引入了更多的bug。然后指出,通过适当的单元测试,它们不必像那样工作。

    单元测试可以显示为不可或缺的另一种情况是,当一个发行版实际交付时,由于最后一分钟的更改而包含了一个严重的bug。

        9
  •  1
  •   Joe Ratzer    16 年前

    例如,在编写和审查单元测试之前,不能签入任何内容。

        10
  •  1
  •   Community Bayu Bramantya    7 年前

    也许reefnet_alex的回答可以帮助你: Is Unit Testing worth the effort?

    我想是福勒说的: “经常运行的不完善测试是 比完美的测试要好得多 把这个解释为给我 我的代码覆盖的其余部分是 不幸的是,它不完整。

        11
  •  1
  •   shank    16 年前

    您提到您的经理正在进行单元测试。如果是这样的话,那他(她)为什么不强制执行呢?你的工作不是让其他人跟随或教导他们,事实上,如果你试图强迫他们,其他开发人员通常会怨恨你。为了让您的开发伙伴编写单元测试,经理必须强调这一点 强烈地 . 它可能会结束,重点的一部分是单元测试实现的教育,你可能会成为教育者,这很好,但是管理它就是一切。

    如果您所处的环境是由团队决定实现的风格,那么您就有更多的发言权来决定团队的动态应该如何。如果您处于这种环境中,而团队不想在您强调单元测试的同时强调单元测试,那么您可能在错误的团队/公司。

        12
  •  1
  •   Tim    16 年前

    缓慢而稳定——它不会在一夜之间改变。

    一旦我意识到,在我工作的一个地方,同行评议的接受度大大提高了。我的团队只是这么做了,不再试图让其他人这么做。最终,人们开始问s我们是如何取得一些成功的。那就容易多了。

        13
  •  0
  •   noswonky    16 年前

    我们有一个测试框架,其中包括在任何人提交更改时自动运行测试套件。如果有人提交了未通过测试的代码,整个团队都会收到包含错误的电子邮件。

    这导致引入的bug很快被修复。