4 KiB
4 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.shE2E smoke — 사용자가 실행하는 entrypoint를 통해 edge-node 등록, console 입력, adapter 실행, event/message 출력을 확인하는 검증이다.- real CLI opt-in 검증 —
claude,gemini,codex,opencode,cline처럼 외부 CLI 설치와 계정/환경이 필요한 검증이다.
유지할 패턴
- 테스트는 테스트 파일 변경 여부가 아니라 작업 영향 범위로 결정한다.
- 사용자 실행 파이프라인에 닿는 작업을 한 경우, 작업 완료 후 일반 Go 테스트와
bin/edge.sh+bin/node.sh기반 E2E smoke 흐름을 반드시 검증한다. - 사용자 실행 파이프라인에는
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를 확인한다. make test-e2e같은 고정 명령이 생기면 그 명령을 우선 사용한다. 아직 고정 명령이 없으면 동일한 내용을 수동 smoke 절차로 검증하거나, 실행하지 못한 이유를 최종 보고에 명시한다.- 실제 외부 CLI profile 검증은 사용자가 명시했거나 환경이 준비된 경우에만 opt-in으로 수행한다.
- 작업 최종 보고에는 실행한 테스트 명령과 E2E smoke 수행 여부를 명시한다. 수행하지 못한 필수 검증은 이유와 남은 위험을 함께 적는다.
다른 도메인과의 경계
- node: node는 adapter 실행과 edge 연결 구현을 소유한다. testing은 node 변경 후 어떤 검증을 거칠지 정한다.
- edge: edge는 registry, service, transport, console 구현을 소유한다. testing은 edge 변경 후 사용자 실행 흐름을 어떻게 확인할지 정한다.
- platform-common: platform-common은 config/proto 계약을 소유한다. testing은 해당 계약 변경이 edge-node 실행 흐름에 닿을 때 필요한 검증을 정한다.
금지 사항
- 사용자 실행 파이프라인에 닿는 변경을 하고 유닛/패키지 테스트만으로 완료 처리하지 않는다.
- 기본 E2E smoke를 외부 CLI 설치, 로그인, 네트워크 계정 상태에 의존하게 만들지 않는다.
- E2E smoke를 위해 기본
configs/*.yaml을 임시값으로 오염시키지 않는다. 임시 설정 파일이나 환경 변수 override를 사용한다. - 필수 검증을 실행하지 못했는데 조용히 생략하지 않는다.