iop/agent-ops/rules/project/domain/testing/rules.md

4.8 KiB

testing

목적 / 책임

작업 완료 후 어떤 테스트와 E2E smoke 검증을 거쳐야 하는지 정리한다. 테스트 파일을 바꿨는지가 아니라, 변경 작업이 어떤 사용자 실행 파이프라인에 닿았는지를 기준으로 검증 범위를 정한다.

포함 경로

  • Makefile — 공식 test target과 향후 E2E smoke target을 선언하는 위치이다.
  • bin/edge.sh — 사용자가 edge console/server를 실행하는 shell entrypoint이며 E2E smoke의 검증 대상이다.
  • bin/node.sh — 사용자가 node를 edge에 연결하는 shell entrypoint이며 E2E smoke의 검증 대상이다.

제외 경로

  • apps/node/ — node 실행 구현의 소유자는 node 도메인이다. testing 도메인은 작업 후 검증 기준만 정의한다.
  • apps/edge/ — edge 실행 구현의 소유자는 edge 도메인이다. testing 도메인은 작업 후 검증 기준만 정의한다.
  • packages/proto/ — 공통 계약의 소유자는 platform-common 도메인이다. testing 도메인은 해당 변경 후 필요한 검증 기준만 정의한다.

주요 구성 요소

  • 대상 패키지 테스트 — 변경한 패키지와 인접한 패키지의 빠른 회귀 검증이다.
  • go test ./... — 저장소 전체 Go 테스트 회귀 검증이다.
  • bin/edge.sh + bin/node.sh E2E smoke — 사용자가 실행하는 entrypoint를 통해 edge-node 등록, console 입력, adapter 실행, event/message 출력을 빠르게 확인하는 검증이다.
  • full-cycle 실제 구동 — 비효율적이어도 관련 사용자 명령과 실행 cycle을 한 번씩 실제 entrypoint로 통과시키는 검증이다.
  • 실제 외부 CLI 검증 — claude, gemini, codex, opencode처럼 외부 CLI 설치와 계정/환경이 필요한 기준 profile을 실제 호출하는 검증이다.

유지할 패턴

  • 테스트는 테스트 파일 변경 여부가 아니라 작업 영향 범위로 결정한다.
  • 사용자 실행 파이프라인에 닿는 작업을 한 경우, 작업 완료 후 일반 Go 테스트, bin/edge.sh + bin/node.sh 기반 E2E smoke, full-cycle 실제 구동 흐름을 반드시 검증한다.
  • 사용자 실행 파이프라인에는 bin/**, apps/*/cmd/**, apps/*/internal/bootstrap/**, edge-node transport/service/registry, adapter 실행/stream/cancel/status 경로, configs/**, packages/config/**, 관련 protobuf 계약 변경이 포함된다.
  • 기본 E2E smoke는 mock adapter와 임시 설정/포트를 사용해 외부 CLI 의존성 없이 수행한다.
  • E2E smoke에서는 최소한 node 등록, /nodes 확인, console 메시지 전송, delta/message 출력, complete event를 확인한다.
  • full-cycle 실제 구동에서는 startup/register, foreground run, session 변경, background run, terminate-session, status, 관련 routing/cancel/timeout/persistent session cycle을 실제 entrypoint로 한 번씩 통과시킨다.
  • 상세 수행 절차와 기능별 체크리스트는 agent-ops/skills/project/e2e-smoke/SKILL.md를 따른다.
  • make test-e2e 같은 고정 명령이 생기면 그 명령을 우선 사용한다. 아직 고정 명령이 없으면 동일한 내용을 수동 smoke 절차로 검증하거나, 실행하지 못한 이유를 최종 보고에 명시한다.
  • 풀테스트에서는 실제 외부 CLI profile 검증을 필수로 수행한다. 환경, 계정, provider, 원격 endpoint 문제로 호출할 수 없거나 실패한 profile은 누락하지 말고 profile별 실패 또는 blocker로 보고한다.
  • 작업 최종 보고에는 실행한 테스트 명령, E2E smoke 수행 여부, full-cycle 실제 구동 수행 여부를 명시한다. 수행하지 못한 필수 검증은 이유와 남은 위험을 함께 적는다.

다른 도메인과의 경계

  • node: node는 adapter 실행과 edge 연결 구현을 소유한다. testing은 node 변경 후 어떤 검증을 거칠지 정한다.
  • edge: edge는 registry, service, transport, console 구현을 소유한다. testing은 edge 변경 후 사용자 실행 흐름을 어떻게 확인할지 정한다.
  • platform-common: platform-common은 config/proto 계약을 소유한다. testing은 해당 계약 변경이 edge-node 실행 흐름에 닿을 때 필요한 검증을 정한다.

금지 사항

  • 사용자 실행 파이프라인에 닿는 변경을 하고 유닛/패키지 테스트만으로 완료 처리하지 않는다.
  • 관련 작업 후 full-cycle 실제 구동을 비용이 크다는 이유만으로 생략하지 않는다.
  • 기본 E2E smoke를 외부 CLI 설치, 로그인, 네트워크 계정 상태에 의존하게 만들지 않는다.
  • E2E smoke를 위해 기본 configs/*.yaml을 임시값으로 오염시키지 않는다. 임시 설정 파일이나 환경 변수 override를 사용한다.
  • 필수 검증을 실행하지 못했는데 조용히 생략하지 않는다.