Unit testing 您是否对非生产代码进行单元测试?

Unit testing 您是否对非生产代码进行单元测试?,unit-testing,Unit Testing,我对以下场景特别感兴趣。假设您有一个编写生产代码的团队和一个编写自动测试的团队。编写自动测试的团队有一个专门的框架来编写自动测试。尽管框架未在生产中使用,测试团队是否应该为其框架编写单元测试?是的,如果只是为了测试框架是否产生了足够的测试覆盖率。是的 TDD让您在开发中占据优势,不仅仅是为了取悦客户。它允许您编写可测试、可重用和模块化的代码。我会对所有必须工作的东西进行单元测试,特别是如果你希望经常更改它(重构以添加新功能)。测试团队应该尽一切努力增加他们对框架所提供结果的信任 这包括测试、代码

我对以下场景特别感兴趣。假设您有一个编写生产代码的团队和一个编写自动测试的团队。编写自动测试的团队有一个专门的框架来编写自动测试。尽管框架未在生产中使用,测试团队是否应该为其框架编写单元测试?

是的,如果只是为了测试框架是否产生了足够的测试覆盖率。

是的


TDD让您在开发中占据优势,不仅仅是为了取悦客户。它允许您编写可测试、可重用和模块化的代码。我会对所有必须工作的东西进行单元测试,特别是如果你希望经常更改它(重构以添加新功能)。

测试团队应该尽一切努力增加他们对框架所提供结果的信任


这包括测试、代码审查、质量标准等,我一直处于这种情况,我所做的就是将生产代码的测试套件用作测试框架的测试套件。据推测,框架的所有特性都被实际使用了,因此如果测试失败而没有更改生产代码,那么测试框架中一定存在问题

它工作正常-运行这些测试比拥有一个专用的测试套件花费的时间要长得多,有时我不会运行所有测试,并且在生产构建服务器上出现问题。诊断这些问题所花费的时间比使用测试套件要长得多


总而言之,我从来没有对它感到满意,我真的建议为测试框架进行专门的测试。从测试编写团队的角度来看,测试框架是生产代码。如果测试框架被其他任何人使用,而你无法访问他们的测试套件……

这个问题让我想起了一个故事:很久以前,有一家公司。这家公司相信自动测试。这种信念是如此强烈,以至于创建了一个团队,其唯一目的就是编写这些自动测试。所有最热心的信徒都可以加入这个团体。大家都很高兴

后来有一天,它发现这个自动测试小组,尽管有它的任务,却不为自己的工作使用自动测试。石头是铸出来的,雅达雅达



我只是说。。。我认为任何测试框架都会有相当可靠的测试覆盖率。

你可以这样看待我的问题。但我认为基于这个论点决定测试非生产代码是幼稚的。维护测试最终需要花费金钱,我个人认为您应该只测试自动化框架,而不是自动化实验室的每一部分。另一方面,在生产代码中,您的目标是尽可能多地测试。这就是我提出这个问题的原因。我很激动,但我的观点是,同样的评估标准也可以适用。为什么我们要编写自动化测试,即使它们可能会增加15%的开发成本?最后,答案是因为它增加了我们对代码的信心。它不是黑白的——问题是我们应该再写一个测试吗?如果我们已经对代码有信心,或者信心不是那么重要,那么就没有必要编写测试。无论软件的消费者是商业客户、开发伙伴还是我的弟弟,我都会应用这一准则。