測試需求
每次行為變更都應包含測試,以證明其正確性並保留除錯能力。
基本期望
對於大多數功能開發,新增或更新測試,以涵蓋:
- 管線建置的正確性(預期的片段/字串結構)。
- 解析/驗證行為(協商和驗證失敗)。
- 執行階段行為(
run,推送/拉取,以及適用的清理路徑)。 - 診斷品質(
PipelineReport在失敗路徑上的可用性)。
依變更類型所需測試
新節點或節點群組
- 對確定性片段產生進行單元級別檢查。
- 對協定或連結假設進行驗證/解析覆蓋。
- 至少有一個整合路徑,證明節點在實際鏈中可以正常工作。
執行階段/管線協調變更
- 對預期輸出行為進 行成功路徑測試。
- 對逾時、缺少外掛程式或無效圖條件進行失敗路徑測試。
- 當狀態處理方式發生變更時,進行清理/生命週期安全斷言。
公開 API 簽名變更
- 新增或更新編譯時的覆蓋範圍,以測試已變更的公開標頭/用法。
- 對於非破壞性擴展,驗證現有用法是否仍然可以編譯。
- 對於已批准的破壞性變更,請包含以遷移為中心的測試/範例,以驗證替代 API 路徑。
Python 繫結變更(python/,pyneat)
- 在
python/tests中新增/更新pytest覆蓋範圍。 - 涵蓋互通協定(NumPy/PyTorch DLPack 路徑、複製與零複製行為)。
- 至少新增一個針對已安裝的 wheel 或可編輯安裝進行的導入/煙霧測試。
診斷或可觀察性變更
- 對新增/變更的報告欄位進行測試。
- 當資料來自串流執行緒進行更新時,進行並行安全行為測試。
回歸和確定性原則
- 錯誤修復必須包含回歸測試。
- 優先使用斷言確定性命名和穩定管線產生的測試。
- 如果輸出有意為非確定性,請記錄原因,並將斷言限制為穩定的不變量。
跳過原則
- 將跳過路徑視為例外情況,而不是正常的控制流程。
- 嚴格測試(預設)在無法執行時(由於缺少執行階段/工具/測試環境)應失敗。
- 只有明確標記為
long的測試可以使用跳過語義(return 77),並且這些測試會在每週執行。 - 新增的測試不應在嚴格路徑中引入
skip_test(...)。
實用指令
使用專案建置的進入點:
./build.sh --all
對於會影響檔案內容的變更,請同時執行:
./build.sh --doc
請參閱 建立,以了解所有支援的建置/測試模式。
貢獻者檢查清單
在開啟或合併 PR 之前: