【发布时间】:2011-04-02 01:00:20
【问题描述】:
我们公司正试图通过对自动化单元测试强制执行最小功能覆盖来提高软件质量。这已经是一个很好的起点,至少可以编写一些测试并使它们自动化(尽管最好进行分支或决策覆盖)。
我主要关心的是在使用此政策后将要编写的测试结果。我经常看到这样的规则导致大量的空测试(即没有断言)或一些维护噩梦类型的集成测试。我发现以下与主题相关的 SO 问题,但这些问题更多地集中在覆盖率上:
What is a reasonable code coverage % for unit tests (and why)?
相反,我想获得帮助或见解,我们如何才能避免糟糕的测试质量。所以这里有几个最糟糕的单元测试禁忌,以及我已经想到的避免它们的方法:
1) 空测试
- 也对测试代码进行代码审查
- 当我们使用测试框架时,断言是通过使用固件宏来完成的。也许我们可以编写一些工具来计算被测类的每个方法调用的断言比率。还不知道,什么才是足够好的比例。
2) 集成测试
- 再次审核
- 也许是一些代码分析工具来检查测试代码的依赖关系 生产代码。测试班应该 有很少量 对其他类的依赖(除了 到一个正在测试)的 经过测试的系统。
有很多团队,我并不完全相信团队内部的审查在所有情况下都足够了。因此,我会对自动化质量保证的方法更感兴趣。
TIA,卢特库
【问题讨论】:
-
有什么问题?您是在问是否应该审查测试?
-
最后一句是重点。我想知道是否可以使用任何工具来避免质量不佳的单元测试。但基本上任何关于这方面的一般知识都会受到赞赏。
-
如果您知道如何让团队中的其他人审查测试代码,那么请发布...
-
最好的答案是您明确禁止的答案:代码审查。 (实际上,还有一个更好的答案,那就是结对编程——您不仅可以获得即时代码审查,而且如果您每天或两天轮换结对,您还可以非常有效地传播知识。)
-
“我不完全相信团队内部审查在所有情况下都足够了” 真的吗?为什么不?它适用于大多数人。为什么它对你不起作用?你有证据吗?
标签: unit-testing code-coverage