테스트 요구 사항
모든 동작 변경에는 정확성을 입증하고 디버깅 가능성을 유지하는 테스트가 포함되어야 합니다.
기본 기대 사항
대부분의 기능 작업의 경우 다음을 포함하는 테스트를 추가하거나 업데이트합니다.
- 파이프라인 빌드 정확성(예상되는 조각/문자열 형식).
- 파싱/검증 동작(캡스 협상 및 검증 실패).
- 런타임 동작(
run, 적용 가능한 경우 푸시/풀 및 종료 경로). - 진단 품질(
PipelineReport가 실패 경로에서 얼마나 유용한지).
변경 유형별 필수 테스트 유형
새 노드 또는 노드 그룹
- 결정적 조각 생성을 위한 단위 수준 검사.
- 캡스 또는 연결 가정에 대한 검증/파싱 적용 범위.
- 노드가 실제 체인에서 작동하는지 입증하는 최소 하나의 통합 경로.
런타임/파이프라인 오케스트레이션 변경
- 예상되는 출력 동작에 대한 성공 경로 테스트.
- 시간 초과, 플러그인 부재 또는 유효하지 않은 그래프 조건에 대한 실패 경로 테스트.
- 상태 처리가 변경될 때의 종료/수명 주기 안전성 어설션.
공개 API 시그니처 변경
- 변경된 공개 헤더/사용법을 사용하는 컴파일 타임 적용 범위를 추가하거나 업데이트합니다.
- 비호환성 확장이 아닌 경우 기존 사용법이 여전히 컴파일되는지 확인합니다.
- 승인된 호환성이 깨지는 변경 사항의 경우 대체 API 경로를 검증하는 마이그레이션 중심 테스트/예제를 포함합니다.
Python 바인딩 변경(python/, pyneat)
python/tests내에서pytest적용 범위를 추가/업데이트합니다.- 상호 운용 계약(NumPy/PyTorch DLPack 경로, 복사 대 제로 복사 동작)을 포함합니다.
- 설치된 휠 또는 편집 가능한 설치에 대한 최소 하나의 가져오기/스모크 테스트를 추가합니다.
진단 또는 관측 가능성 변경
- 추가/변경된 보고서 필드에 대한 테스트.
- 스트리밍 스레드에서 데이터가 업데이트될 때의 동시성 안전 동작.
회귀 및 결정성 정책
- 버그 수정에는 회귀 테스트가 포함되어야 합니다.
- 결정적 명명 및 안정적인 파이프라인 생성을 확인하는 테스트를 선호합니다.
- 출력이 의도적으로 비결정적인 경우 그 이유를 문서화하고 어설션을 안정적인 불변량으로 제한합니다.
건너뛰기 정책
- 건너뛰기 경로를 일반적인 제어 흐름이 아닌 예외로 처리합니다.
- 엄격한 테스트(기본값)는 런타임/도구/픽스처가 누락되어 실행할 수 없는 경우 실패해야 합니다.
- 명시적으로
long으로 표시된 테스트만 건너뛰기 의미(return 77)를 사용할 수 있으며, 해당 테스트는 주간 실행 주기에서 실행됩니다. - 새로운 테스트 추가 시 엄격한 경로에
skip_test(...)를 도입해서는 안 됩니다.
실용적인 명령
프로젝트 빌드 진입점을 사용합니다.
./build.sh --all
문서에 영향을 미치는 변경 사항의 경우, 다음 명령어도 실행하세요.
./build.sh --doc
지원되는 모든 빌드/테스트 모드는 구축하다를 참조하십시오.