2011-04-27 52 views
1

当阅读question关于使用随机种子多次测试Java程序时,单词测试引发了单元测试的关联,但这可能不是那种测试。测试框架是否存在允许失败的百分比?

在我看来,在单元测试中引入随机性会被认为是不好的做法,但是后来我开始考虑一个(小)失败百分比可能是现在可以接受的情况。

例如,对于n> 3,代码未能通过单位测试每10^n一次,并且逐渐希望n在没有测试变红,也许是黄色的情况下转到无穷大。

另一个例子可能是系统范围的测试,大部分时候事情都是正确的,但是你仍然想限制/知道他们可能出错的频率。

所以我的问题是,是否有任何框架(全谱测试)在那里可以说服一个巨大的/过多的重复测试失败的百分比?

+1

这可能不是你的问题的答案,但我想你可能想看看的是[基于性质的测试](http://blog.jessitron.com/2013/04/property-based-testing- what-is-it.html),可以生成大量的测试,然后返回失败的测试用例。 – GKalnytskyi 2016-02-03 03:58:34

+0

@GKalnytskyi感谢您的输入!这个链接让我记得大学教授的一个周五下午的话题,它提到了基于属性测试的问题,获得了输入权,而不是炸毁JVM。一个很好的解决方案输入到接受的答案。 – Gressie 2016-02-03 17:49:38

回答

2

你可以“说服”大多数测试框架,允许通过不使用框架直接执行“测试”而只是通过执行普通的旧条件(例如:if语句)并记录失败百分比来允许部分失败。然后使用框架来声明此百分比低于您的阈值。

如果你的测试是确定性的(通常被认为是一件好事),那么另一种方法是测试当前的行为,即使它错了,但要评论不正确的断言(通常用“正确的”答案应该)。如果这些测试失败,您可以查看评论。如果代码已经变得“正确”,那么更好,更新该断言。如果不是,那么决定行为的改变比旧行为好还是差,并据此采取行动。这种方法可以让你随着时间的推移“拧紧螺丝”。

+0

谢谢,让百分比的框架测试是一个好主意!这至少应该让人们以正确的心态去解决类似的问题,如果不足以完全解决问题的话。 – Gressie 2011-04-27 06:35:35