跳至主要内容

測試需求

每次行為變更都應包含測試,以證明其正確性並保留除錯能力。

基本期望

對於大多數功能開發,新增或更新測試,以涵蓋:

  • 管線建置的正確性(預期的片段/字串結構)。
  • 解析/驗證行為(協商和驗證失敗)。
  • 執行階段行為(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 之前:

  • 新增/更新的測試與變更的行為相符。
  • 既有的相關測試仍然通過。
  • 已更新使用者可見行為的說明檔案。
  • API/架構變更已反映在 架構 中。
  • 公開 API 變更符合 程式碼規範 中 API 相容性原則。