本文根據 trailofbits/skills 倉庫裏該技能的 SKILL.md 與倉庫 README 整理,資料核對於 2026-10-11。所在倉庫 trailofbits/skills 在 GitHub 約 7462 Star(同日數據)。技能內容會隨倉庫更新,以倉庫為準。
這個 Skill 做什麼
普通的單元測試斷言一個點:輸入 3,輸出 9。屬性測試斷言一條規則:對任意輸入,編碼再解碼都得到原值,然後讓生成器去找反例。它能發現人想不到的邊界情況,但寫不好就成了「看起來在測、其實什麼都沒斷言」。property-based-testing 教智能體把它寫對。description:編寫、評審和調試屬性測試——Hypothesis、fast-check、proptest、jqwik、rapid,以及用於 Solidity 不變量的 Echidna 或 Medusa;當測試應當覆蓋整個輸入域而不是手挑的幾個例子時使用,典型對象有編碼與解碼、序列化與反序列化、解析器、規範化器、校驗器、數值類型、比較器與排序、數據結構和合約狀態不變量。
技能開頭有一段很清醒的話:這種交換隻在代碼具有「代數形狀」時才划算——存在逆運算、不變量或可對照的參考實現;沒有這種形狀的代碼就該寫示例測試,並且如實這樣說是一個有效的結論。
SKILL.md 本身很短,重點是一份屬性目錄(常見的屬性類型及適用對象)和「屬性測試什麼都沒斷言的兩種方式」,其餘細節分在五份參考文件裏:怎樣寫生成器、怎樣解讀失敗(區分屬性寫錯了還是真的發現了缺陷)、各語言的庫、重構、評審。另有一節講怎樣給還沒有屬性測試的項目引入它。
怎麼安裝
property-based-testing 在 trailofbits/skills 裏屬於 property-based-testing 插件。Claude Code 先登記市場,再在選單裏選擇要裝的插件(命令來自倉庫 README):
text
/plugin marketplace add trailofbits/skills
/plugin menu
Codex 用 codex plugin marketplace add trailofbits/skills,再執行 codex plugin add property-based-testing@trailofbits。
倉庫整體介紹和其他安裝方式,詳見本站《trailofbits/skills 是什麼、怎麼安裝:Trail of Bits 的代碼安全審計 Skills(靜態分析、差異評審、供應鏈檢查)》。
怎麼用
- 「給這個 JSON 序列化模組加屬性測試」。
- 「Hypothesis 給出了一個縮減後的反例,幫我判斷是屬性寫錯了還是代碼有問題」。
- 「評審現有的屬性測試,哪些其實沒有斷言任何有意義的東西?」
適合誰 / 侷限
適合寫解析器、編解碼、金額計算、數據結構這類邏輯密集代碼的開發者。業務流程型、以讀寫數據庫和調接口為主的代碼通常沒有合適的屬性,技能自己也會這樣判斷;它不涉及二進制模糊測試,描述裏明確把那類工作排除在外。
注意事項
- 許可:CC BY-SA 4.0,改編後須以相同方式共享。
- 會執行測試命令;屬性測試運行時間比普通測試長。
- 發現反例後先最小化並寫成迴歸測試,再修復。
0 條評論
還沒有評論,來搶沙發~