工程开发
property-based-testing avatar

property-based-testing

为软件及智能合约开发提供基于属性的测试 (PBT) 指导,以提高代码可靠性并挖掘边缘案例漏洞。

简介

此技能为将基于属性的测试 (PBT) 整合至开发工作流程中提供系统化框架。它专为需要验证序列化、数据解析、复杂算法以及智能合约状态不变量等关键代码逻辑的软件工程师与安全研究人员设计。通过从示例测试转向基于属性的测试,用户可利用自动化输入产生来识别传统手动测试套件经常忽略的边缘案例。本技能指导您选择合适的属性(如往返测试、幂等性、交换律和结合律),以验证跨多种语言与协议的功能正确性。

  • 自动侦测高价值测试模式,包含序列化对(编码/解码)、解析器、标准化器以及自定义数据结构操作。

  • 全面的属性目录,具备针对往返测试、基于预言机的验证,以及 Solidity 或 Vyper 合约中的状态不变量检查的正式定义与使用情境。

  • 与流行的 PBT 函式库(如 Hypothesis、fast-check、proptest 和 Echidna)整合,以简化自动化测试生成器的实现。

  • 主动决策支持,协助判断何时 PBT 为最佳方案,以及何时示例测试已足够应付当前任务。

  • 针对包含混合 I/O 或缺乏明确逆向操作的代码库,提供重构指导以提升可测试性。

  • 当实现序列化逻辑(例如 toJSON/fromJSON)、协议解析器或安全性敏感的智能合约不变量时,请启用此技能。

  • 遵循提供的决策树以引导从测试产生、功能设计到解读失败日志及选择函式库的任务。

  • 遵守强度阶层(无异常 → 类型保存 → 不变量 → 幂等性 → 往返测试)以确保测试提供最大覆盖率。

  • 避免将此技能用于简单的 CRUD 操作、集成测试,或带有无法隔离之非确定性副作用的代码。

  • 优先处理高价值目标,例如加密函数、标准化例程,以及去中心化应用程序中的状态变更入口点。

仓库统计

Star 数
4,857
Fork 数
421
Open Issue 数
29
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月28日 13:08
在 GitHub 查看