工程開發
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 查看