【问题标题】:Negative Property-Based Tests基于负属性的测试
【发布时间】:2016-03-01 12:07:41
【问题描述】:

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

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

有哪些与解析器无关的负属性的真实例子?

【问题讨论】:

  • 很想听听您在过去一年(自发布以来)在负面属性测试方面的进展。

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


【解决方案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。你当然可以变得更漂亮,但你明白了。

所有这些都在我的另一篇文章中进行了总结......以及“最佳模式”的公开征集。希望能得到一些好的想法!

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2022-01-16
    • 2019-04-24
    • 2019-11-10
    • 2020-03-06
    • 2016-12-06
    • 2016-09-08
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多