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

9

我对以下情况特别感兴趣。假设您有一个编写生产代码的团队和一个编写自动化测试的团队。编写自动化测试的团队有一个专门用于编写自动化测试的框架。即使该框架未用于生产中,测试团队是否应编写该框架的单元测试?

5个回答

4

太好了!

TDD(测试驱动开发)能够帮助你在开发中获得优势,它不仅仅是为了取悦客户。它能够让你编写可测试的、可重复使用的和模块化的代码。如果你希望经常进行更改(重构以添加新功能),那么我会对所有必须正常工作的东西进行单元测试。


4
我曾经遇到过这种情况,我的解决方法是将生产代码的测试套件用作测试框架的测试套件。假设框架的所有功能都被实际使用了,因此如果测试失败而没有更改生产代码,则测试框架必定存在问题。
这种方法还算可以——运行这些测试所需的时间比专门有一个测试-测试套件要长得多,有时我不会运行所有测试,导致在生产构建服务器上出现问题。诊断此类问题比使用测试-测试套件要花费更多的时间。
总的来说,我从未感到舒适,真的建议为测试框架设置专门的测试。从编写测试的团队的角度来看,测试框架就是生产代码。如果测试框架被其他人使用,而你无法访问他们的测试套件...

2

测试团队应该尽一切努力来增强他们对测试框架结果的信任。

这包括测试、代码审查、质量标准等。


1

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


0
这个问题让我想起了一个故事:从前有一家公司,他们坚信自动化测试的重要性。这种信仰是如此强烈,以至于他们成立了一个专门编写自动化测试的小组。只有最狂热的信徒才能加入这个小组。大家都非常高兴!
然而有一天,人们发现这个自动化测试小组,尽管使命是编写自动化测试,但却没有在自己的工作中使用自动化测试。于是就有了一些争议。

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接