加载中...

基于属性的测试(Property-Based Testing, PBT)不再枚举具体的输入输出示例,而是声明代码在任意合法输入下都应成立的「属性」(如「列表排序后长度不变」「序列化再反序列化应得到原值」),由测试框架自动生成成百上千组随机输入进行验证。
该方法由 Koen Claessen 与 John Hughes 于 2000 年前后在 Haskell 的 QuickCheck 库中开创,此后被移植到几乎所有主流语言:Python 的 Hypothesis、Java 的 jqwik、Scala 的 ScalaCheck、JavaScript 的 fast-check 等。
优点是能探索人工想不到的边界组合,尤其擅长测试编解码、解析器、数据结构等有清晰不变量的代码;缺点是提炼「好属性」需要思维转换,随机性也要求失败用例可复现(记录种子)。

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