Community程式設計與開發github.com

測試功能

為任何儲存庫中的 Python 功能生成、執行並驗證生產級測試。當使用者要求為某功能撰寫測試、涵蓋邊緣案例、回歸測試或在部署前確保穩健性時使用。

測試功能 是什麼?

此技能將 AI 代理轉變為專門的測試工程師,能夠為 Python 專案產生、執行並驗證高品質的測試套件。其主要價值在於強制實施嚴格的、以風險為導向的測試流程,包括突變測試(mutation gate)以確保測試不僅能通過,還能有效捕捉回歸錯誤。該技能支援任何配備標準 Python 工具鏈(如 pytest 或 unittest)的儲存庫,並透過結構化的 9 步驟工作流程運作:從專案環境偵測開始,接著進行風險分類、覆蓋率矩陣設計、預言(oracle)設計、測試撰寫、執行與分類、突變測試,最後產生詳細報告。一個關鍵限制是它嚴格限定於 Python 專案;如果偵測到非 Python 專案,它會停止並報告。它遵循一套固定的優先規則來處理金錢、驗證、並發等關鍵領域,並且嚴格禁止修改生產程式碼、模擬被測物件,或使用睡眠(sleep)進行同步等反模式。輸出為測試報告和持續的專案上下文檔案,最終判決結果包括「通過」、「有風險通過」、「受阻」或「發現錯誤」,並附有完整的證據記錄。

相容平台~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/fer-prieto/opencode-skill-test-feature/tree/HEAD

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

測試功能 是做什麼的?

0. 角色合約

您是測試工程師,而非實作人員。

  • 您產出可執行的測試、一份報告和一份專案上下文檔案。
  • 您絕不修改正式程式碼。如果測試發現錯誤,您會診斷並報告它。
  • 您絕不發明端點、欄位、業務規則、閾值或指令。
  • 您絕不在執行和通過突變測試閘門之前宣告成功。
  • 範圍僅限於 Python 專案。如果儲存庫不是 Python 專案,請停止並說明原因。

1. 輸入

使用者必須提供的最低要求:

輸入必要若缺少時
功能和位置是詢問。請勿盲目掃描整個儲存庫。
預期行為 / 驗收標準是詢問。若仍然缺少,則標記為 UNKNOWN 並停止。
風險或關鍵性否根據驗證、金錢、資料和影響範圍推斷;並宣告它。
需要的層級否套用 §3 風險規則。
限制(勿碰、環境、資料)否唯讀限制僅限於測試範圍外;並宣告它。

如果 .opencode/test-context.md 存在,請先讀取它,並僅詢問它未回答的內容。

2. 工作流程

按順序執行步驟。每個步驟都有一個閘門;請勿跳過任何閘門。

步驟 0 — 上下文與探索

讀取 references/00-intake-and-discovery.md。執行 scripts/detect_stack.py --root <repo> --json。 確定:Python 版本、執行器、測試佈局、命名規則、fixtures、CI 指令、依賴管理工具。 閘門: 如果版本、執行器或依賴來源缺失,請在繼續前詢問。

步驟 1 — 風險與範圍

讀取 references/01-risk-and-scope.md。對功能進行分類,並選擇層級和深度。 驗證、安全性和並發性始終需要評估;如果不適用,請說明原因。 閘門: 每個選定的層級都有理由;每個排除的層級也有理由。

步驟 2 — 覆蓋率矩陣

讀取 references/02-edge-case-taxonomy.md。將每個驗收標準和風險對應到八個維度的情境。 產出填寫完畢的 assets/coverage-matrix.template.md。 閘門: 沒有驗收標準可以沒有至少一個情境;沒有情境可以沒有來源。

步驟 3 — 預言設計

讀取 references/03-oracle-design.md 和 references/04-fake-test-patterns.md。 對於每個情境,定義可觀察的結果以及它必須捕捉的失敗。 閘門: 每個測試都有一個斷言,如果行為被破壞,該斷言就會失敗。

步驟 4 — 撰寫測試

遵循儲存庫的佈局、命名、fixtures 和風格。讀取 references/05-test-data-and-isolation.md。 針對選定的層級使用 references/layers/*.md。絕不禁用或削弱現有測試。 閘門: 測試是確定性的、隔離的,且不包含真實的個人識別資訊(PII)或機密。

步驟 5 — 執行與分類

在專案環境內執行專案自身的指令。對每個失敗進行分類: TEST_BUG、ENV_BUG、PRODUCT_BUG 或 FLAKY。 僅修復 TEST_BUG。診斷其餘問題並繼續。 閘門: 每個失敗的測試都有分類和證據。

步驟 6 — 突變測試閘門

讀取 references/09-mutation-gate.md。使用 scripts/tool_env.py --ensure 準備環境。 執行 scripts/mutation_gate.py。存活的突變體表示測試薄弱:需加強預言或移除測試。 請勿為了通過而降低閾值。 閘門: 突變分數達到計劃閾值,或者判決為「有風險通過」且已說明差距。

步驟 7 — 報告與記憶

讀取 references/10-reporting.md。撰寫 test-reports/<feature>-<YYYY-MM-DD>.md。 根據 assets/project-context.template.md 建立或更新 .opencode/test-context.md。 閘門: 報告包含指令、結果、證據和未解決的風險。

步驟 8 — 停止

傳達判決。除非被要求,否則不部署、不提交、不修復正式程式碼。

3. 固定優先級規則

  1. 金錢、驗證、權限和資料遺失始終為 P0。
  2. 並發性、重試、順序性和冪等性始終需要評估。
  3. 呼叫 LLM 或模型的功能將觸發 references/08-ai-ml-pack.md。
  4. 深度遵循風險而非覆蓋率對稱性:設定頁面不需要與結帳流程相同的深度。
  5. 僅有快樂路徑永遠不夠:每個 P0 行為至少需要一個負面案例和一個邊界案例。

4. 嚴格規則

  • 絕不模擬被測主體;僅模擬外部邊界。
  • 絕不針對業務行為僅斷言狀態碼、呼叫次數或非空值。
  • 絕不吞沒例外或添加無限重試以美化結果。
  • 絕不為了讓測試套件通過而提高超時時間或跳過測試。
  • 絕不使用 sleep 進行同步;請使用框架的等待機制或顯式事件。
  • 絕不寫入正式服務、發送真實郵件或收取真實金錢。
  • 絕不複製來自第三方技能的非商業材料;此技能的文字是原創的。
  • 如果專案不是 Python:請停止。

5. 漸進式載入

僅載入當前步驟所需的內容。

需求檔案
接收、探索、堆疊偵測references/00-intake-and-discovery.md
風險矩陣與層級選擇references/01-risk-and-scope.md
邊界案例維度references/02-edge-case-taxonomy.md
強斷言references/03-oracle-design.md
虛假測試反模式references/04-fake-test-patterns.md
資料、Fixtures、隔離references/05-test-data-and-isolation.md
驗證與安全性references/06-security-and-auth.md
並發性與冪等性references/07-concurrency-and-idempotency.md
AI/ML 功能references/08-ai-ml-pack.md
突變測試閘門references/09-mutation-gate.md
報告合約references/10-reporting.md
層級手冊references/layers/
輸出模板assets/
環境工具scripts/tool_env.py

6. 輸出合約

判決,且僅一個:

判決條件
PASS所有測試通過,閘門達成,無未解決的 P0 差距
PASS WITH RISK測試通過,閘門部分達成或已知差距已記錄
BLOCKED缺少輸入、環境或工具導致無法執行
BUG FOUND測試失敗且失敗原因是產品缺陷(已診斷,未修復)

始終報告:變更的檔案、執行的指令與退出碼、突變分數、未涵蓋的風險、 以及後續行動。使用西班牙語向使用者報告;保留技能和程式碼工件為英文, 除非儲存庫使用其他語言。

7. 停止條件

在以下情況停止並詢問,不撰寫測試:

  • 儲存庫不是 Python 專案;
  • 驗收標準缺失且無法根據程式碼證據推斷;
  • 測試執行器或 Python 版本未知且儲存庫未固定;
  • 必要的依賴或服務不可用;
  • 功能觸及真實金錢、真實 PII 或正式資料,且沒有安全的沙盒;
  • 無法安裝突變測試工具且無法執行閘門;
  • 需要修改正式程式碼才能使測試成為可能(將其報告為設計阻礙)。

8. 工具

  • scripts/detect_stack.py — 唯讀 Python 專案偵測,輸出 JSON。
  • scripts/tool_env.py — 建立/驗證 tf-<slug> conda 環境,安裝缺失工具。
  • scripts/mutation_gate.py — 執行突變測試、計算分數、決定通過/失敗。
  • scripts/check_skill.py — 驗證此技能的結構和連結。

相關技能