交付流程 · 產物閱讀
MARKDOWNdocs/QUALITY-REQUIRED-CASES.md

必要案例檢查器

tools/check_required_cases.py 只讀核准案例清單與實際 JUnit,核對每案是否執行且通過。使用 Python 3.9+ 標準庫,不需 contract 設定;不執行測試、不授予 QA/發布核准。

用可跑範例開始

在 framework 根目錄執行:

bash
python3 examples/quality-workflow/run_demo.py
python3 tools/check_required_cases.py \
  --plan examples/quality-workflow/acceptance-plan.json --role be \
  --junit examples/quality-workflow/reports/baseline.xml --json

第一個命令產生教學正常/故障/復原報告;第二個只核對正常版。故障版報告應被 checker 拒絕,演練的預期紅燈不能當產品通過。

--plan 讀 acceptance-plan 的 schema_version 1 格式,必須指定 --role be|fe|integration。沒有該角色案例時拒絕,不以空集合通過。

直接提供必要清單

--required-cases 接受非空 JSON 陣列,精確對應 JUnit 的 classname/name:

json
[
  {"case_id": "BE-PAID-REJECT", "classname": "payment_api", "name": "reject_paid_order"}
]

清單須來自固定且核准的權威來源,不能從當次執行結果反向生成。相同 case ID 或相同 testcase 對照不可重複。

接進 CI

可跑教學 job 先啟動服務並跑驗收,再傳遞原 runner 的退出狀態:

sh
test_status=0
your-test-runner --junit artifacts/junit.xml || test_status=$?
python3 tools/check_required_cases.py \
  --required-cases approved-required-cases.json \
  --junit artifacts/junit.xml --runner-exit-code "$test_status" \
  --json > artifacts/required-case-result.json

your-test-runner 是產品接線位置,需替換。CI 保留最後非零狀態,並在成功/失敗時都保存原始報告與核對結果。固定測試、程式、環境版本及可信 CI 來源是外層流程的責任。

拒絕條件與界線

  • 必要案例缺漏、失敗、error、skip、not_run;runner 非零或其他案例失敗,均不可通過。

  • 空/重複/含糊清單、未知結果、損毀/缺失/超過 8 MiB 的報告,及 suite 計數矛盾均拒絕。

  • JSON 輸出 ok、逐案 cases、errors 與 runner_exit_code;無效輸入也回非零結果。

  • 不驗 AC 覆蓋、斷言充分性、核准權限、CI 來源或實際部署。這些由 完整工作流程 的審查與可信證據接線處理。

靜態唯讀副本 · 可直接開啟,不需伺服器;不改變核准或執行結果