基于负面属性的测试

时间:2015-11-27 10:00:52

标签: tdd quickcheck fscheck fuzz-testing property-based-testing

当您可以表达简单且明确定义的属性时,基于属性的测试很有用。

在测试解析器的情况下,我也很幸运“负面属性”,例如通过为缩进敏感语言生成无效标识符或不匹配缩进。但是,“负面属性”是表达和测试的常见事物吗?这意味着编写生成专门伪造输入的生成器。

与解析器无关的负面属性的一些现实例子是什么?

1 个答案:

答案 0 :(得分:1)

我的问题基本相同。

我已经更详细地发布了它,以及到目前为止我的所有想法,关于如何实现这一点:

Pattern for generating negative Scalacheck scenarios: Using property based testing to test validation logic in Scala

对我们来说,现实世界"情况是我们有大型的数据绑定案例类,并且这些案例类具有验证逻辑(我们使用Wix Accord进行验证)。要彻底测试验证逻辑,我们需要创建一个对象,使其中一个属性无效,并查看validate(o)是否失败。然后重复对象上的每个属性。

我们还遇到特定属性需要无效的特定情况。例如,检查我们的系统是否正确处理无效ID。这更容易,我们可以使用forAll(someGen)并对其进行修改。实际上,只有v => val invalidV = v copy(id = "badID"),现在对于每个生成的属性,我都将其变异以获得错误的ID。当然,你可以变得更加漂亮,但是你明白了。

所有这一切都在我的另一篇文章中进行了总结......以及对最佳模式的公开征集。"希望得到一些好主意!