【发布时间】:2016-06-22 20:29:47
【问题描述】:
据我了解,大多数属性测试工具都是在功能级别上运行的。给定一组参数,此类工具将生成随机输入并针对某些不变量进行测试输出。
我了解到 ScalaCheck 现在开始包含生成事件以测试全状态系统。但是,我找不到关于它的大量信息。这是否也在 *check 生态系统的其他部分(fscheck、quickcheck 和其他变体)中变得流行?
【问题讨论】:
-
我不明白你问的问题。基于属性的测试基于被测试的代码没有突变或副作用的假设。如果您的代码具有对功能至关重要的突变或副作用,则您需要一种不同的方法。这就是 scala check 中的状态测试框架的用途。至于您关于在其他框架中受欢迎程度的问题,我认为这只有主观答案,因此对于 SO 来说不是一个好问题
-
“这会变得流行吗”我的意思是我只是想知道其他语言中的类似框架是否与 scalacheck 的状态测试对应。不是最受欢迎的排名。由于基于事件的架构越来越流行,我很想知道自动随机测试生态系统是否会提出相应的解决方案。
-
如果您采用响应式函数式编程方法,事件就是简单的数据结构。将它们定义为记录类型,例如FsCheck 创建它们没有问题。
-
@MarkSeemann 在我看来,“事件”基础系统可以简单地建模为具有多种方法的有状态类。我了解 fscheck/等。可以使用随机输入多次调用单个函数,但它是否设计为使用随机输入以随机顺序调用类的整个公共接口,然后检查类的状态?
-
FsCheck 和 QuickCheck 不调用任何方法。它们生成数据,然后您编写使用该数据的代码。
标签: quickcheck scalacheck fscheck property-based-testing