工程开发
property-based-testing avatar

property-based-testing

为软件和智能合约提供属性基础测试 (PBT) 的自动化指导,以提升测试覆盖率并强化边缘案例检测。

简介

属性基础测试 (PBT) 技能为开发者和安全审计人员提供了一个综合框架,用以取代或增强传统的示例基础测试。它专注于标准单元测试难以涵盖的复杂逻辑,例如序列化程序、数据解析、加密算法以及智能合约的状态不变量。通过此技能,用户可以系统性地定义诸如往返 (Roundtrip)、幂等性 (Idempotence) 和交换律 (Commutativity) 等属性,确保软件在随机输入的广大状态空间中表现正确。

  • 自动检测适合使用 PBT 的高价值目标,包括编码/解码对、解析器、标准化器、验证器及算法转换。

  • 提供结构化的决策树,协助开发者根据当前任务(如设计新功能、重构测试性、解释测试失败)选择正确的 PBT 策略。

  • 包含丰富的属性目录(如 Roundtrip、Idempotence、Invariant、Oracle 和 No Exception),并附带具体公式与使用指引。

  • 提供常见 PBT 库(如 Hypothesis、fast-check、proptest 以及 Solidity 的 Echidna)的整合建议。

  • 具备属性强度阶层,引导开发者从基础的“无例外”测试迈向更严谨的“往返”与“不变量”验证。

  • 调用此技能时,请提供代码块的上下文信息,例如该代码是否为解析器、序列化器或智能合约函数,以便获取具体的属性建议。

  • 此技能适用于单元测试与组件测试;请避免将其用于集成测试,或带有外部网络调用、数据库写入等非确定性副作用的代码。

  • 在代码审查中使用提供的清单,识别那些相较于静态、硬编码示例,使用 PBT 能提供显著更好覆盖率的场景。

  • 若测试失败,此技能提供特定指导来分析失败原因,包括如何简化反例,以及区分实现错误与过于严格的属性定义。

仓库统计

Star 数
4,874
Fork 数
424
Open Issue 数
21
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 07:27
在 GitHub 查看