본문으로 건너뛰기

테스트 요구 사항

모든 동작 변경에는 정확성을 입증하고 디버깅 가능성을 유지하는 테스트가 포함되어야 합니다.

기본 기대 사항

대부분의 기능 작업의 경우 다음을 포함하는 테스트를 추가하거나 업데이트합니다.

  • 파이프라인 빌드 정확성(예상되는 조각/문자열 형식).
  • 파싱/검증 동작(캡스 협상 및 검증 실패).
  • 런타임 동작(run, 적용 가능한 경우 푸시/풀 및 종료 경로).
  • 진단 품질(PipelineReport가 실패 경로에서 얼마나 유용한지).

변경 유형별 필수 테스트 유형

새 노드 또는 노드 그룹

  • 결정적 조각 생성을 위한 단위 수준 검사.
  • 캡스 또는 연결 가정에 대한 검증/파싱 적용 범위.
  • 노드가 실제 체인에서 작동하는지 입증하는 최소 하나의 통합 경로.

런타임/파이프라인 오케스트레이션 변경

  • 예상되는 출력 동작에 대한 성공 경로 테스트.
  • 시간 초과, 플러그인 부재 또는 유효하지 않은 그래프 조건에 대한 실패 경로 테스트.
  • 상태 처리가 변경될 때의 종료/수명 주기 안전성 어설션.

공개 API 시그니처 변경

  • 변경된 공개 헤더/사용법을 사용하는 컴파일 타임 적용 범위를 추가하거나 업데이트합니다.
  • 비호환성 확장이 아닌 경우 기존 사용법이 여전히 컴파일되는지 확인합니다.
  • 승인된 호환성이 깨지는 변경 사항의 경우 대체 API 경로를 검증하는 마이그레이션 중심 테스트/예제를 포함합니다.

Python 바인딩 변경(python/, pyneat)

  • python/tests 내에서 pytest 적용 범위를 추가/업데이트합니다.
  • 상호 운용 계약(NumPy/PyTorch DLPack 경로, 복사 대 제로 복사 동작)을 포함합니다.
  • 설치된 휠 또는 편집 가능한 설치에 대한 최소 하나의 가져오기/스모크 테스트를 추가합니다.

진단 또는 관측 가능성 변경

  • 추가/변경된 보고서 필드에 대한 테스트.
  • 스트리밍 스레드에서 데이터가 업데이트될 때의 동시성 안전 동작.

회귀 및 결정성 정책

  • 버그 수정에는 회귀 테스트가 포함되어야 합니다.
  • 결정적 명명 및 안정적인 파이프라인 생성을 확인하는 테스트를 선호합니다.
  • 출력이 의도적으로 비결정적인 경우 그 이유를 문서화하고 어설션을 안정적인 불변량으로 제한합니다.

건너뛰기 정책

  • 건너뛰기 경로를 일반적인 제어 흐름이 아닌 예외로 처리합니다.
  • 엄격한 테스트(기본값)는 런타임/도구/픽스처가 누락되어 실행할 수 없는 경우 실패해야 합니다.
  • 명시적으로 long으로 표시된 테스트만 건너뛰기 의미(return 77)를 사용할 수 있으며, 해당 테스트는 주간 실행 주기에서 실행됩니다.
  • 새로운 테스트 추가 시 엄격한 경로에 skip_test(...)를 도입해서는 안 됩니다.

실용적인 명령

프로젝트 빌드 진입점을 사용합니다.

./build.sh --all

문서에 영향을 미치는 변경 사항의 경우, 다음 명령어도 실행하세요.

./build.sh --doc

지원되는 모든 빌드/테스트 모드는 구축하다를 참조하십시오.

기여자 확인 목록

PR을 열거나 병합하기 전에 다음 사항을 확인하십시오.

  • 추가/업데이트된 테스트가 변경된 동작과 일치하는지 확인합니다.
  • 기존 관련 테스트가 여전히 통과하는지 확인합니다.
  • 사용자에게 보이는 동작에 맞게 문서를 업데이트합니다.
  • API/아키텍처 변경 사항이 아키텍처에 반영되었는지 확인합니다.
  • 공개 API 변경 사항이 코딩 표준의 API 호환성 정책을 준수하는지 확인합니다.