Test Guide - MZC-CSC/mc-web-console GitHub Wiki

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 ๋ฌธ์„œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•œ๋‹ค.

1. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ

mc-web-console ํ™”๋ฉด์€ ์„ธ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ†ตํ•ฉ๋œ๋‹ค. ๋ฐฉ์‹๋งˆ๋‹ค ๊ฒฐํ•จ์ด ์ƒ๊ธฐ๋Š” ์ง€์ ์ด ๋‹ฌ๋ผ์„œ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•๋„ ๋‹ค๋ฅด๋‹ค.

ํ†ตํ•ฉ ์œ ํ˜• ์„ค๋ช… ์ฃผ๋กœ ๊นจ์ง€๋Š” ์ง€์ 
native ์ฝ˜์†”์ด ์ง์ ‘ ๊ตฌํ˜„ํ•œ ํ™”๋ฉด (Workloads, Cloud Resources, IAM ๋“ฑ) ํผ ์ž…๋ ฅ ๊ฒ€์ฆ, API payload ๋งคํ•‘, ์ƒํƒœ ํ‘œ์‹œ
iframe ํ”„๋ ˆ์ž„์›Œํฌ UI๋ฅผ ์ฝ˜์†” ์•ˆ์— ๋„์šฐ๋Š” ํ™”๋ฉด (Workflow, Cost, Monitoring ๋“ฑ) ํ™”๋ฉด ๋กœ๋”ฉ, ์ฝ˜์†”โ†”iframe ์ธ์ฆ ํ•ธ๋“œ์…ฐ์ดํฌ(postMessage)
proxy ์ฝ˜์†” API๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ API๋กœ ์ค‘๊ณ„ํ•˜๋Š” ๊ฒฝ๋กœ ๋ผ์šฐํŒ…, ์ƒํƒœ์ฝ”๋“œ, ๊ถŒํ•œ

2. 4๊ณ„์ธต ํ…Œ์ŠคํŠธ ์ „๋žต

๊ฒฐํ•จ์€ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณ„์ธต์—์„œ ์žก๋Š”๋‹ค. ์œ„ ๊ณ„์ธต์ผ์ˆ˜๋ก ๋А๋ฆฌ๊ณ  ๋น„์šฉ(์‹ค 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์ค‘ ๋ฐฉ์–ด์„ ์„ ๋‘”๋‹ค.

3. ๊ธฐ๋Šฅ โ†’ ์—ฌ์ • โ†’ ํ…Œ๋งˆ

4๊ณ„์ธต์ด "์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š”๊ฐ€"๋ผ๋ฉด, ์ด ์ถ•์€ "๋ฌด์—‡์„ ์–ด๋–ค ๋‹จ์œ„๋กœ ๋ฌถ๋Š”๊ฐ€"๋‹ค.

๋‹จ์œ„ ์ •์˜ ์˜ˆ
๊ธฐ๋Šฅ (TC) ๋” ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๋‹จ์ผ ํ™•์ธ ๋‹จ์œ„. ๊ธฐ๋Šฅ๋งˆ๋‹ค ์ •์ƒ 1๊ฐœ + ๋น„์ •์ƒ 1๊ฐœ ์ด์ƒ ํ•„์ˆ˜ VPC ์ƒ์„ฑ, VPC ์ƒ์„ฑ ์‹œ CIDR ๋ˆ„๋ฝ
์—ฌ์ • (J, IV) ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์—…๋ฌด ํ๋ฆ„์œผ๋กœ ์ด์€ ์‹œ๋‚˜๋ฆฌ์˜ค Infra ์šด์˜ ์—ฌ์ •(J5), ์„ค์น˜ ํ›„ ํ†ตํ•ฉ ๊ฒ€์ฆ(IV1~IV8)
ํ…Œ๋งˆ ๋ชฉ์ ์ด ๊ฐ™์€ ์—ฌ์ •์˜ ๋ฌถ์Œ. ์ž์ฒด ํŒ์ • ์—†์ด ์†Œ์† ์—ฌ์ • ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ ์„ค์น˜ ํ›„ ํ†ตํ•ฉ ๊ฒ€์ฆ

4. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ๊ทœ์น™

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 ์ •์˜๋งŒ ์žˆ๊ณ  ์ž๋™ํ™” ๋ฏธ์ž‘์„ฑ (๋ฐฑ๋กœ๊ทธ)

5. ์‹ ๊ทœ ๊ธฐ๋Šฅ ์ธ์ˆ˜ ์ ˆ์ฐจ (Acceptance)

  1. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ์ž‘ ์‹œ TC ์ •์˜(์ •์ƒ 1 + ๋น„์ •์ƒ 1)์™€ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ถ”๊ฐ€ํ•œ๋‹ค.
  2. ๊ธฐ๋Šฅ PR ๋ณธ๋ฌธ์— TC ID๋ฅผ ๋ช…๊ธฐํ•œ๋‹ค. ์˜ˆ: Acceptance: TC-K8S-NODEGROUP-ADD-01
  3. ํ•ด๋‹น TC๋งŒ ์‹คํ–‰ํ•ด ํ†ต๊ณผ๋ฅผ ํ™•์ธํ•œ ๋’ค ๋จธ์ง€ํ•œ๋‹ค.
  4. ๋จธ์ง€ ํ›„ ์ธ์ˆ˜ ํƒœ๊ทธ๋ฅผ ํšŒ๊ท€ ํƒœ๊ทธ๋กœ ์Šน๊ฒฉํ•ด ํ…Œ์ŠคํŠธ ์ž์‚ฐ์œผ๋กœ ํŽธ์ž…ํ•œ๋‹ค.

์ •์ƒ/๋น„์ •์ƒ TC ๋™์‹œ ๋“ฑ์žฌ๋Š” CI(registry lint)๊ฐ€ ๊ฐ•์ œํ•œ๋‹ค.

6. ์‹คํ–‰ ๋ฐฉ๋ฒ•

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” 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 ์ง€์ •

7. ๊ฒฐ๊ณผ ๋ฌธ์„œ

๋ฌธ์„œ ๋‚ด์šฉ
Test Scenarios ์˜์—ญ๋ณ„ TC ์ •์˜(์ ˆ์ฐจ ํฌํ•จ), ์—ฌ์ •ยท์„ค์น˜๊ฒ€์ฆ Step
Test Results ์ „์ฒด/์˜์—ญ๋ณ„ ์ง‘๊ณ„, CSP ๋งคํŠธ๋ฆญ์Šค, ์•Œ๋ ค์ง„ ์ด์Šˆ, TC๋ณ„ ์ตœ๊ทผ ๊ฒฐ๊ณผยท์‹คํŒจ Step
API Coverage ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ API ๊ฒ€์ฆ ์ปค๋ฒ„๋ฆฌ์ง€
MC-Web-Console Features ํ™”๋ฉดยท๊ธฐ๋ŠฅยทAPI ์ •์˜์™€ ๊ฒ€์ฆ TC ์—ฐ๊ฒฐ

๋ชจ๋“  ์ˆ˜์น˜๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ์—์„œ ์ž๋™ ์ƒ์„ฑ๋˜๋ฉฐ, ๊ฐ ๋ฌธ์„œ ์ƒ๋‹จ์— ๊ฒฐ๊ณผ ๊ธฐ์ค€์ผ๊ณผ ๋Œ€์ƒ ๋ฐฐํฌ ๋ฒ„์ „์„ ํ‘œ๊ธฐํ•œ๋‹ค.