我很好奇当人们进行TDD时,测试代码与生产代码的比率是合理的/典型值。看一个组件,我有530行测试代码,用于130行生产代码。另一个组件有360行测试代码,用于360行生产代码。因此,单元测试需要大约3倍到5倍的代码。这是针对Javascript代码的。我没有太多经过测试的C#代码,但我觉得在另一个项目中,我看的测试代码是生产代码的2倍到3倍。
在我看来,假设测试足够,该值越低,就会反映出更高质量的测试。纯粹的猜测,我只是想知道其他人看到的比例。
我知道代码行是一个松散的度量标准,但由于我为测试和生产编写相同的样式(相同的间距格式,相同的注释等),因此值是可比较的。
答案 0 :(得分:4)
这实际上取决于事物的考虑因素,但根据我的经验(是的,我确实在某些项目上测量了这一点),我看到比例从2:1到5:1(这是测试代码的课程)。另请查看C2维基上的ProductionCodeVsUnitTestsRatio和UnitTestToCodeRatio页。
答案 1 :(得分:3)
您提到您使用相同的样式进行单元测试。就将您的测试视为生产代码而言,这是很好的,但您真的需要大量的测试代码注释吗?您是否在命名测试方法,以便描述测试所声称的内容?例如,使用'GivenXWhenYThenZ'函数命名,那么如果没有大的注释部分,它应该非常清楚测试的作用。
你在重构你的测试吗?将任何重复的设置等移动到单独的方法中?
您是否保持您的单元测试简单,因此每次测试只能断言一件事?
你是否过度测试了getter / setter这样的东西?
答案 2 :(得分:0)
这些数字听起来很正常。 我编写的最长单元测试超过1500行,它只测试了大约300行代码。
答案 3 :(得分:0)
不同的语言和测试框架将大不相同。例如,BDD框架比TestUnit样式代码多“DRYer”。此外,在几个项目中,我最终只通过几行Java来提供非常大的数据集 - 这些数据集测试了数千行代码 - 所以我的比例将会变得非常棘手。
我只看了我最近的三个项目(中等大小的轨道),测试比率的代码是1:2.3,1:1.6和1:1.9 ...所以你的数字听起来像是相似的。 (我刚刚跑过rake stats
- 我之前从未真正看过它们。)
无论如何,警告标志着你有太多的测试:
答案 4 :(得分:0)
我个人使用断言比率。有些东西可能需要更多的模型和设置代码来测试。我觉得X线的测试代码到Y行的prod代码可能不是很有用。代码覆盖工具可能是查看它的最佳方式。我在最近的两个项目中发现,我的代码每10行生产代码有1个断言。有没有其他人得到类似的价值观?