GitLab 테스트 전략
빠른 피드백 가장 관련성 높은 테스트를 먼저 실행하여 속도를 우선시하십시오 — 빠르게 실패하고, 빠르게 수정하십시오. 점진적 테스트 좁게 시작하고 넓게 확장하십시오. 리소스 효율성 모든 테스트는 존재 이유를 가져야 합니다.
핵심 원칙#
빠른 피드백 가장 관련성 높은 테스트를 먼저 실행하여 속도를 우선시하십시오 — 빠르게 실패하고, 빠르게 수정하십시오.
점진적 테스트 좁게 시작하고 넓게 확장하십시오. 점진적인 커버리지를 통해 신뢰를 쌓으십시오.
리소스 효율성 모든 테스트는 존재 이유를 가져야 합니다. 중복 없음, 낭비 없음.
명확한 소유권 모든 테스트 스위트에는 소유자가 필요합니다. 정의되지 않은 책임은 쇠퇴로 이어집니다.
테스트 안정성 테스트가 머지, 배포 또는 릴리스를 안정적으로 차단할 수 없다면 존재해서는 안 됩니다. 수정하거나 삭제하십시오.
테스트 스위트 배치 가이드라인#
| 테스트 유형 | 목적 | 실행 시기 | 차단 |
|---|---|---|---|
| 단위 테스트 | 개별 구성 요소를 격리하여 검증 | 모든 MR 파이프라인(1단계에서는 예측, 2단계 이상에서는 전체 스위트) | 예 |
| 통합 테스트 | 구성 요소 간 상호 작용 확인 | 2단계 이상 MR, 안정 브랜치, 배포 | 2단계 이상에서 예 |
| 시스템/기능 테스트 | UI를 통해 단일 기능의 기능을 검증 | 2단계 이상 MR, 안정 브랜치 | 2단계 이상에서 예 |
| 엔드투엔드(E2E) 테스트 | 전체 중요 사용자 여정 검증 | • 스모크: 배포 파이프라인, 기능 플래그 전환 • 전체: 3단계 MR, 예약된 파이프라인 |
3단계에서 예, 스모크 테스트는 배포 차단 |
파이프라인 유형 요구사항#
머지 요청 파이프라인#
| 단계 | 프론트엔드 변경 | 백엔드 변경 | 데이터베이스 변경 |
|---|---|---|---|
| 1단계 | Jest 예측만 | RSpec 예측만 | 마이그레이션 테스트 + 예측 |
| 2단계 | 전체 Jest 스위트 + 선택적 E2E | 전체 RSpec 단위/통합 + 선택적 E2E | 전체 테스트 스위트 |
| 3단계 | 전체 Jest + E2E | 전체 RSpec + E2E | 전체 스위트 + E2E |
배포 파이프라인#
| 단계 | 필요한 테스트 | 차단 |
|---|---|---|
| 스테이징 | E2E 스모크 스위트 | ✅ |
| 카나리 | E2E 스모크 스위트 | ✅ |
| 프로덕션 | 배포 후 스모크 | ❌ |
안정/보안 브랜치#
| 파이프라인 유형 | 프론트엔드 | 백엔드 | 데이터베이스 | E2E |
|---|---|---|---|---|
| 백포트 MR | 전체 Jest 스위트 | 전체 RSpec 단위/통합 | 마이그레이션, DB 스키마 확인 | Omnibus 및 GDK에서 전체 스위트 |
| 안정/보안 브랜치(병합 후) | Jest 단위/통합 | RSpec 단위/통합/시스템 | 마이그레이션 및 백그라운드 마이그레이션 테스트 | 없음 |
개발 워크플로#
새 테스트 추가#
테스트 유형 선택 가능한 가장 낮은 수준에서 시작하십시오: 단위 → 통합 → 시스템 → E2E.
커버리지 평가 새 테스트를 작성하기 전에 기존 테스트를 검색하십시오. 같은 것을 두 번 테스트하지 마십시오.
스위트 배치 올바른 스위트 및 단계에 테스트를 맞추십시오. 확립된 패턴을 따르십시오.
기본적으로 차단 새 테스트는 _기본적으로 차단_합니다. 비차단 테스트는 예외이지 규칙이 아닙니다.
파이프라인에서 테스트 실행 수정#
왼쪽으로 이동 가능하면 파이프라인에서 테스트를 더 일찍 이동하십시오. 더 빠른 피드백은 시간을 절약합니다.
차단 상태 유지 테스트가 올바른 단계에서 차단되면 계속 차단됩니다. 강등에는 강력한 정당성이 필요합니다.
영향 문서화 테스트 실행 패턴에 대한 모든 변경에는 영향 평가가 필요합니다. 무음 수정 없음.
유지보수 및 모니터링#
팀은 테스트 스위트 건강을 유지하기 위해 정기적인 관행을 수립해야 합니다:
불안정하고 격리된 테스트 정기적으로 검토하고 즉시 수정하거나 제거하십시오. 자세한 내용은 비정상 테스트를 참조하십시오.
테스트 스위트 건강 주기적으로 테스트 스위트 성능을 평가하고 중복 커버리지를 식별하십시오.
