加载中...

QuickCheck 是基于性质的测试(Property-Based Testing)的开创性工具,由 Koen Claessen 与 John Hughes 于 1999 年为 Haskell 开发。与逐条编写输入输出断言的单元测试不同,开发者声明程序应满足的一般性质(如"列表反转两次等于自身"),QuickCheck 自动随机生成大量输入进行验证。
框架依据类型自动派生随机数据生成器,也允许自定义分布;发现使性质失败的输入后,通过收缩(shrinking)机制自动把反例化简到最小,便于定位缺陷。性质本质上是被全称量化的可执行规格。
QuickCheck 的思想被移植到几乎所有主流语言:Erlang 的 QuickCheck(商业版)与 PropEr、Python 的 Hypothesis、Scala 的 ScalaCheck、Rust 的 proptest 等。John Hughes 创办公司将其应用于电信、汽车软件与分布式数据库的工业测试。
性质测试善于发现人想不到的边界组合,与类型系统互补;难点在于总结出有价值的性质本身需要设计能力,生成器的覆盖质量也需经营。

登录 后参与讨论
暂无讨论,来发表第一条评论吧