【发布时间】:2014-02-13 19:13:28
【问题描述】:
我最近收到了来自管理层的请求,要求我为我们的软件测试运行的断言数量创建报告。他们想要这个,以便他们可以判断人们是否正在编写测试。我倾向于只是告诉他们“不,你不能拥有它,因为你不需要它”,但这似乎并不能满足他们。
部分问题在于我们的团队正在编写包含大量断言的长测试用例,并且他们想说他们已经测试了一些新功能,因为他们在现有测试用例中添加了更多断言。
所以我的问题是: 有没有人有一些好的、权威的(尽可能多的)资源或文章或书籍,甚至描述了如何将测试分成测试用例或为什么计数断言不好?
我的意思是计算每个测试的断言或断言来衡量人们是否正确测试与计算每个测试的代码行数一样有用。但他们就是不买。我尝试用 Google 搜索,但问题是 没有人费心计算断言,所以我不能说“这就是为什么这是一个坏主意”。
【问题讨论】:
-
只是我的看法:您会发现覆盖率是一个更有用的统计数据。我可以写一千个断言,只测试一行代码。
-
当然,我们目前不测量覆盖率(我们希望,但无需过多讨论,编写代码的语言使这非常困难)。我不是在寻找“覆盖率是一个更好的指标”,而是在寻找“为什么计算断言是一个糟糕的指标”。
-
一位同事在 junit 文档中指出了我在搜索中不知何故错过的这个页面:junit.sourceforge.net/doc/faq/faq.htm#tests_12 我不确定这是否足以算作这个问题的答案。
-
为什么不定期演示测试(冲刺结束、发布前、月末......),然后他们知道你是否编写测试。但对我来说,这听起来像是微观管理出了问题。他们应该对质量感兴趣,而不是你用来提高质量的工具(单元测试)。我可以推荐在 (pragprog.com) 上找到的实用单元测试书籍。
-
对该问题的进一步调查显示,团队编写的内部测试框架不会因断言失败而停止,这很疯狂。这在某种程度上解释了为什么他们试图在一种测试方法中填充如此多的断言,因为他们不介意是否有一些失败并认为他们仍在测试“某些东西”。但是这些测试非常脆弱,一旦失败就很难说出原因。 -_-
标签: unit-testing tdd xunit code-metrics