Repository navigation
Test Guide
생성: 2026-09-28 · 결과 기준: 최근 실행 2026-09-16 · 대상 배포 버전:
web:0.5.2 infra:0.12.9 conn:0.12.18 wf:0.5.1 app:0.5.2 data:0.5.3 cost:0.5.2 obs:0.5.0
mc-web-console 기능 테스트의 전략, 테스트 케이스(TC) 작성 규칙, 실행 방법을 설명한다. 테스트는 Playwright(TypeScript)로 자동화했으며, TC 정의(registry)와 실행 결과를 조인해 Test Scenarios, Test Results, API Coverage 문서를 자동 생성한다.
mc-web-console 화면은 세 가지 방식으로 프레임워크와 통합된다. 방식마다 결함이 생기는 지점이 달라서 검증 방법도 다르다.
| 통합 유형 | 설명 | 주로 깨지는 지점 |
|---|---|---|
| native | 콘솔이 직접 구현한 화면 (Workloads, Cloud Resources, IAM 등) | 폼 입력 검증, API payload 매핑, 상태 표시 |
| iframe | 프레임워크 UI를 콘솔 안에 띄우는 화면 (Workflow, Cost, Monitoring 등) | 화면 로딩, 콘솔↔iframe 인증 핸드셰이크(postMessage) |
| proxy | 콘솔 API가 프레임워크 API로 중계하는 경로 | 라우팅, 상태코드, 권한 |
결함은 가능한 가장 낮은 계층에서 잡는다. 위 계층일수록 느리고 비용(실 CSP 자원)이 들기 때문이다.
| 계층 | 이름 | 브라우저 | 클라우드(CSP) | 검증 내용 | TC 수 |
|---|---|---|---|---|---|
| L0 | contract | 없음 | 사용 안 함 | 콘솔 API·proxy 라우팅 상태코드, 스키마, 권한 | {{N_L0}} |
| L1 | ui | 사용 | 응답 mock | native 폼·토스트의 정상/비정상 동작, iframe 로딩과 핸드셰이크 | {{N_L1}} |
| L2 | csp | 사용 | 실제 CSP | 리소스 실생성·제어·삭제, CSP × 기능 매트릭스 | {{N_L2}} |
| L3 | journey | 사용 | 선택 | 페르소나 여정(여러 화면을 가로지르는 업무 흐름), 회귀 겸 시연 | 여정 12건 |
L2는 비용이 드는 만큼 CSP Tier로 실행 폭과 주기를 나눈다.
| Tier | CSP 범위 | 주기 | 대상 |
|---|---|---|---|
| A | 8종 전수 (AWS, GCP, Azure, Alibaba, Tencent, NCP, NHN, KT) | 주 1회 | Infra/K8s Workload 생성·삭제, nodegroup, node 제어, disk |
| B | 대표 CSP | nightly | network, security group, image, spec |
| C | mock (L0/L1) | PR · nightly | IAM, workspace, cost 화면, workflow 편집 |
리소스 수명주기는 두 가지로 운영한다.
- Infra Workload — 재사용 풀: CSP별 상설 테스트 Infra를 suspend 상태로 두고, 테스트 시 resume → 종료 시 suspend한다. 생성·삭제 자체를 검증하는 TC만 매번 새로 만든다.
- K8s Workload — ephemeral: 테스트마다 생성하고 종료 시 삭제한다. 삭제 누락에 대비해 teardown → 전역 정리 → 주기적 잔존 자원 정리의 3중 방어선을 둔다.
4계층이 "어떤 방식으로 검증하는가"라면, 이 축은 "무엇을 어떤 단위로 묶는가"다.
| 단위 | 정의 | 예 |
|---|---|---|
| 기능 (TC) | 더 쪼갤 수 없는 단일 확인 단위. 기능마다 정상 1개 + 비정상 1개 이상 필수 | VPC 생성, VPC 생성 시 CIDR 누락 |
| 여정 (J, IV) | 여러 기능을 업무 흐름으로 이은 시나리오 | Infra 운영 여정(J5), 설치 후 통합 검증(IV1~IV8) |
| 테마 | 목적이 같은 여정의 묶음. 자체 판정 없이 소속 여정 결과를 집계 | 설치 후 통합 검증 |
TC ID: TC-{FW}-{FEATURE}-{NN} — FW는 IAM · INFRA · K8S · OBS · WF · COST · DATA · APP · CONSOLE. 여정은 J{N}, 설치검증 여정은 IV{N}.
TC 정의 항목 (registry):
| 항목 | 설명 |
|---|---|
| 제목 | 한 줄 요약 — 무엇을 하면 어떤 결과가 나와야 하는가 |
| 구분 | 정상 / 비정상 |
| 계층 | L0 ~ L3 |
| 사전 조건 | 로그인 · Workspace/Project 선택 · 실행 중 Infra 등 필요한 상태 |
| 절차 (steps) | 단계별 동작과 확인 지점. 자동화 코드의 test.step과 1:1로 대응해 실패 지점을 단계 수준으로 좁힌다 |
| 화면 / 검증 API | 기능이 있는 화면과, 이 TC가 검증하는 프레임워크 API(operationId) |
상황 케이스 도출 기준 — 기능 하나를 등재할 때 아래 차원을 검토해 해당하는 것마다 TC를 만든다.
| 차원 | 질문 |
|---|---|
| 진입 가드 | Workspace/Project·권한 없이 진입하면? |
| 자동 동작 | 전제가 충족되면 목록이 자동 조회되는가? |
| 빈 데이터 | 0건일 때 화면이 정상인가? |
| API 실패 | 백엔드 5xx·timeout 시 화면이 깨지지 않는가? |
| 입력 검증 | 필수값 누락·형식 오류 시 오류 표시 + API 미호출인가? |
| 권한 경계 | 하위 역할에서 버튼 미노출 또는 거부되는가? |
| 중복·연타 | 같은 동작을 연속 실행하면 요청이 1회만 나가는가? |
| 상태 충돌 | 대상이 이미 다른 상태(예: Suspended)면 오류 처리되는가? |
결과 판정:
| 기호 | 의미 |
|---|---|
| ✅ PASS | 통과 |
| ❌ FAIL | 실패 — 제품 결함 또는 테스트 결함 조사 필요 |
| 🚧 BLOCKED | 알려진 외부 결함(업스트림 이슈)으로 차단. 이슈마다 재확인 기한을 두어 기한이 지나면 다시 실행된다 |
| ⏭️ SKIP | 환경 전제 미충족 (예: 멀티 CSP 자원이 등록되지 않은 환경) |
| ⬜ 미실행 | 자동화는 있으나 최근 실행 결과 없음 |
| 📝 미구현 | TC 정의만 있고 자동화 미작성 (백로그) |
- 기능 개발 시작 시 TC 정의(정상 1 + 비정상 1)와 인수 테스트를 먼저 추가한다.
- 기능 PR 본문에 TC ID를 명기한다. 예:
Acceptance: TC-K8S-NODEGROUP-ADD-01 - 해당 TC만 실행해 통과를 확인한 뒤 머지한다.
- 머지 후 인수 태그를 회귀 태그로 승격해 테스트 자산으로 편입한다.
정상/비정상 TC 동시 등재는 CI(registry lint)가 강제한다.
테스트 코드는 mcmp-qa 저장소(현재 내부 저장소)에서 관리한다. 실행 환경은 Node.js 20+와 Playwright(Chromium)이고, 대상 콘솔과 연동 프레임워크가 기동된 상태여야 한다.
npm ci
npx playwright install chromium
cp .env.example .env # 대상 서버·계정 입력
npm run test:smoke # L0 + L1 @smoke — PR 게이트
npm run test:contract # L0
npm run test:ui # L1
npm run test:csp -- --grep "@csp:aws" # L2, CSP 지정
npm run test:journey -- --grep J5 # L3 여정
npm run coverage # 결과 문서 재생성| 트리거 | 실행 범위 |
|---|---|
| PR | L0 + L1 @smoke (실 CSP 없음) |
| nightly | L1 @regression + L2 Tier B + 잔존 자원 정리 + 결과 문서 재생성 |
| weekly | L2 Tier A 8종 CSP 전수 + 시연 영상 재생산 |
환경변수 (값은 각 환경에서 지정):
| 변수 | 용도 |
|---|---|
BASE_URL |
대상 mc-web-console 주소 |
ADMIN_ID, ADMIN_PASSWORD
|
플랫폼 관리자 계정 |
OPERATOR_ID, OPERATOR_PASSWORD, VIEWER_ID, VIEWER_PASSWORD
|
역할별 페르소나 계정 |
BILLVIEWER_ID · APPOPERATOR_ID · WFOPERATOR_ID · MONVIEWER_ID 등 (*_PASSWORD 쌍) |
도메인별 viewer/operator 페르소나 계정 |
TEST_WORKSPACE, TEST_PROJECT
|
기본 Workspace/Project |
TUMBLEBUG_URL, TUMBLEBUG_AUTH
|
L2 상태 교차검증용 mc-infra-manager API |
DEMO_LIVE_CSP |
시연 모드에서 실 CSP 사용 시 CSP 지정 |
| 문서 | 내용 |
|---|---|
| Test Scenarios | 영역별 TC 정의(절차 포함), 여정·설치검증 Step |
| Test Results | 전체/영역별 집계, CSP 매트릭스, 알려진 이슈, TC별 최근 결과·실패 Step |
| API Coverage | 프레임워크별 API 검증 커버리지 |
| MC-Web-Console Features | 화면·기능·API 정의와 검증 TC 연결 |
모든 수치는 실행 결과에서 자동 생성되며, 각 문서 상단에 결과 기준일과 대상 배포 버전을 표기한다.