02
04

์ œ๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค
 

1. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ๊ธฐ์ดˆ

  • ํ…Œ์ŠคํŠธ ๋ชฉ์ : ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฐํ•จ์„ ์ฐพ์•„๋‚ด๊ณ  ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•จ.
  • ํ…Œ์ŠคํŠธ ์›์น™
    • ๊ฒฐํ•จ์ด ์กด์žฌํ•จ์„ ์ฆ๋ช…ํ•  ์ˆ˜๋Š” ์žˆ์–ด๋„, ๊ฒฐํ•จ์ด ์—†์Œ์„ ์ฆ๋ช…ํ•  ์ˆ˜๋Š” ์—†์Œ
    • ์กฐ๊ธฐ ํ…Œ์ŠคํŒ…์ด ์ค‘์š”ํ•จ
    • ๊ฒฐํ•จ ์ง‘์ค‘(ํŒŒ๋ ˆํ†  ๋ฒ•์น™: 80%์˜ ๊ฒฐํ•จ์ด 20%์˜ ๋ชจ๋“ˆ์—์„œ ๋ฐœ๊ฒฌ๋จ)
    • ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค(๋™์ผํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›€)

2. ํ…Œ์ŠคํŠธ ์œ ํ˜• ๋ฐ ๊ธฐ๋ฒ•

(1) ํ…Œ์ŠคํŠธ ์ˆ˜์ค€

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test): ๊ฐœ๋ณ„ ๋ชจ๋“ˆ์ด๋‚˜ ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ํ™•์ธ (JUnit, Mockito)
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Test): ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๋™๋˜๋Š”์ง€ ํ™•์ธ
  • ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ (System Test): ์ „์ฒด ์‹œ์Šคํ…œ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์ฆ
  • ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ (Acceptance Test): ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ

(2) ํ…Œ์ŠคํŠธ ์ข…๋ฅ˜

  • ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ: ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ
  • ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ: ์„ฑ๋Šฅ, ๋ณด์•ˆ, ์ ‘๊ทผ์„ฑ ๋“ฑ ๊ธฐ๋Šฅ ์ด์™ธ์˜ ์š”์†Œ ๊ฒ€์ฆ
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Test): ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํ™•์ธ
  • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ (Load Test): ์ผ์ • ์ˆ˜์ค€์˜ ํŠธ๋ž˜ํ”ฝ์—์„œ ์‹œ์Šคํ…œ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ
  • ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (Stress Test): ์ตœ๋Œ€ ๋ถ€ํ•˜ ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜ ์—ฌ๋ถ€ ํ™•์ธ
  • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Test): SQL Injection, XSS ๋“ฑ ๋ณด์•ˆ ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธ

(3) ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•

  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ: ๋‚ด๋ถ€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ (๊ตฌํ˜„ ๋กœ์ง ๊ธฐ๋ฐ˜)
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ: ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๋งŒ ๋ณด๊ณ  ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธ (์‚ฌ์šฉ์ž ๊ด€์ )
  • ๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning): ์ž…๋ ฅ๊ฐ’์„ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ…Œ์ŠคํŠธ
  • ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis): ๊ฒฝ๊ณ„๊ฐ’(์ตœ๋Œ€/์ตœ์†Œ๊ฐ’) ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ
  • ๊ฒฐ์ • ํ…Œ์ด๋ธ” (Decision Table): ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์˜ ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ ๋ถ„์„

3. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์™€ ๋„๊ตฌ

  • ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ํ•„์š”์„ฑ: ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ธ์  ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ
  • ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: JUnit, TestNG, PyTest
    • UI ํ…Œ์ŠคํŠธ: Selenium, Appium
    • API ํ…Œ์ŠคํŠธ: Postman, RestAssured
    • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ: JMeter, Locust

4. ๊ฒฐํ•จ ๊ด€๋ฆฌ ๋ฐ QA ํ”„๋กœ์„ธ์Šค

  • ๊ฒฐํ•จ(๋ฒ„๊ทธ) ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค
    1. ๊ฒฐํ•จ ๋ฐœ๊ฒฌ (Defect Detection)
    2. ๊ฒฐํ•จ ๋“ฑ๋ก (Defect Logging) – Jira, Redmine ๋“ฑ์˜ ๋„๊ตฌ ์‚ฌ์šฉ
    3. ๊ฒฐํ•จ ๋ถ„์„ (Defect Analysis) – ์‹ฌ๊ฐ๋„(Severity) ๋ฐ ์šฐ์„ ์ˆœ์œ„(Priority) ์„ค์ •
    4. ๊ฒฐํ•จ ์ˆ˜์ • (Defect Fixing)
    5. ๊ฒฐํ•จ ์žฌํ…Œ์ŠคํŠธ (Retesting)
    6. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing)
    7. ๊ฒฐํ•จ ์ข…๋ฃŒ (Defect Closure)
  • ํ…Œ์ŠคํŠธ ๋ฌธ์„œ ์ž‘์„ฑ
    • ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ (Test Plan)
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค (Test Case)
    • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ (Test Report)

5. ์• ์ž์ผ(Agile)๊ณผ QA

  • ์• ์ž์ผ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ: ์Šคํฌ๋Ÿผ(Scrum), ์นธ๋ฐ˜(Kanban) ๋“ฑ
  • ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD: Test-Driven Development)
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ ํ›„ ์ฝ”๋“œ ๊ฐœ๋ฐœ
  • ํ–‰๋™ ์ฃผ๋„ ๊ฐœ๋ฐœ (BDD: Behavior-Driven Development)
    • ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ (Cucumber, Gherkin ์‚ฌ์šฉ)

6. ๊ธฐ๋ณธ์ ์ธ SQL ๋ฐ API ํ…Œ์ŠคํŠธ

  • SQL ๊ธฐ์ดˆ
    • SELECT, JOIN, GROUP BY, WHERE, ORDER BY ๋“ฑ
    • ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์„ ์œ„ํ•ด SQL ์ฟผ๋ฆฌ ํ™œ์šฉ
  • API ํ…Œ์ŠคํŠธ
    • HTTP ์š”์ฒญ(GET, POST, PUT, DELETE) ์ดํ•ด
    • JSON, XML ํ˜•์‹ ํŒŒ์•…
    • Postman์„ ์ด์šฉํ•œ API ํ…Œ์ŠคํŠธ

7. CI/CD ๋ฐ DevOps ๊ฐœ๋…

  • CI/CD (Continuous Integration/Continuous Deployment)
    • Jenkins, GitHub Actions, GitLab CI/CD ํ™œ์šฉ
  • DevOps์™€ QA
    • QA๊ฐ€ ์ง€์†์ ์ธ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ์ž๋™ํ™”์— ๊ธฐ์—ฌํ•ด์•ผ ํ•จ

1. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ์˜ ๊ฐœ๋…

(1) ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ๋ž€?

  • ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •.
  • ๊ฒฐํ•จ(Bug)์„ ๋ฐœ๊ฒฌํ•˜๊ณ , ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ™œ๋™.
  • ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋Š” ๋ชฉ์ .

(2) ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ์›์น™ (ISTQB ๊ธฐ์ค€)

  1. ํ…Œ์ŠคํŒ…์€ ๊ฒฐํ•จ์ด ์กด์žฌํ•จ์„ ๋ฐํž ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ฒฐํ•จ์ด ์—†์Œ์„ ์ฆ๋ช…ํ•  ์ˆ˜๋Š” ์—†์Œ.
  2. ์™„๋ฒฝํ•œ ํ…Œ์ŠคํŒ…์€ ๋ถˆ๊ฐ€๋Šฅํ•จ.
  3. ์ดˆ๊ธฐ ํ…Œ์ŠคํŒ…์ด ์ค‘์š”ํ•จ. (SDLC ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„ํ–‰๋ ์ˆ˜๋ก ๋น„์šฉ์ด ์ ˆ๊ฐ๋จ)
  4. ๊ฒฐํ•จ ์ง‘์ค‘์˜ ๋ฒ•์น™ (Pareto Principle). (80%์˜ ๊ฒฐํ•จ์€ 20%์˜ ๋ชจ๋“ˆ์—์„œ ๋ฐœ๊ฒฌ๋จ)
  5. ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค (Pesticide Paradox). (๋™์ผํ•œ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ์‹œ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›€)
  6. ํ…Œ์ŠคํŒ…์€ ์ •ํ™ฉ(Context) ์˜์กด์ ์ž„. (๋„๋ฉ”์ธ๋ณ„๋กœ ํ…Œ์ŠคํŠธ ์ „๋žต์ด ๋‹ค๋ฆ„)
  7. ์˜ค๋ฅ˜ ๋ถ€์žฌ์˜ ๊ถค๋ณ€ (Absence-of-Errors Fallacy). (์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋งž์ง€ ์•Š์œผ๋ฉด ๊ฒฐํ•จ์ด ์—†์–ด๋„ ํ’ˆ์งˆ์ด ๋‚ฎ์Œ)

2. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ƒ๋ช…์ฃผ๊ธฐ(SDLC)์™€ QA์˜ ์—ญํ• 

(1) SDLC(Software Development Life Cycle) ๋‹จ๊ณ„

  1. ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ (Requirements Analysis)
  2. ์„ค๊ณ„ (Design)
  3. ๊ตฌํ˜„ (Development)
  4. ํ…Œ์ŠคํŠธ (Testing)
  5. ๋ฐฐํฌ (Deployment)
  6. ์œ ์ง€๋ณด์ˆ˜ (Maintenance)

(2) V-๋ชจ๋ธ๊ณผ QA

  • V-๋ชจ๋ธ์€ SDLC ๋‹จ๊ณ„๋ณ„๋กœ ๋Œ€์‘ํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ™œ๋™์ด ์กด์žฌํ•จ.
  • ์ขŒ์ธก(๊ฐœ๋ฐœ)๊ณผ ์šฐ์ธก(ํ…Œ์ŠคํŠธ)์ด ๋Œ€์‘๋จ.
    • ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ → ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
    • ์‹œ์Šคํ…œ ์„ค๊ณ„ → ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ
    • ์ƒ์„ธ ์„ค๊ณ„ → ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
    • ๊ตฌํ˜„ → ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

3. ํ…Œ์ŠคํŠธ ์ˆ˜์ค€(Test Levels)

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ…Œ์ŠคํŠธ๋Š” ๊ณ„์ธต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ 4๊ฐ€์ง€ ์ฃผ์š” ์ˆ˜์ค€์ด ์žˆ์Œ.

(1) ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test)

  • ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„(ํ•จ์ˆ˜, ๋ชจ๋“ˆ)๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ…Œ์ŠคํŠธ.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๋ฐฉ์‹ ์‚ฌ์šฉ.
  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ(JUnit, PyTest ๋“ฑ) ํ™œ์šฉ ๊ฐ€๋Šฅ.

(2) ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Test)

  • ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ๊ฒฐํ•ฉ๋  ๋•Œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ.
  • Big Bang, Top-Down, Bottom-Up ๋“ฑ์˜ ๋ฐฉ์‹์ด ์žˆ์Œ.
  • Stub, Driver ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๋ชจ์‚ฌํ•จ.

(3) ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ (System Test)

  • ์ „์ฒด ์‹œ์Šคํ…œ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ๊ฒ€์ฆ.
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ์ค‘์‹ฌ.
  • ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ, ๋ณด์•ˆ ๋“ฑ ์—ฌ๋Ÿฌ ์ธก๋ฉด์„ ํ…Œ์ŠคํŠธํ•จ.

(4) ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ (Acceptance Test)

  • ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์‹œ์Šคํ…œ์ด ๊ธฐ๋Œ€๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
  • ์•ŒํŒŒ ํ…Œ์ŠคํŠธ (๋‚ด๋ถ€ ์‚ฌ์šฉ์ž ํ…Œ์ŠคํŠธ), ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ (์™ธ๋ถ€ ์‚ฌ์šฉ์ž ํ…Œ์ŠคํŠธ).

4. ํ…Œ์ŠคํŠธ ์œ ํ˜•(Test Types)

ํ…Œ์ŠคํŠธ๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์  ํ…Œ์ŠคํŠธ์™€ ๋น„๊ธฐ๋Šฅ์  ํ…Œ์ŠคํŠธ๋กœ ๋‚˜๋‰จ.

(1) ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ (Functional Testing)

  • ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• ์‚ฌ์šฉ.
  • ์˜ˆ: ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ํ™•์ธ ๋“ฑ.

(2) ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ (Non-Functional Testing)

  • ์„ฑ๋Šฅ, ๋ณด์•ˆ, ์‚ฌ์šฉ์„ฑ ๋“ฑ ๊ธฐ๋Šฅ ์ด์™ธ์˜ ์š”์†Œ๋ฅผ ๊ฒ€์ฆ.
  • ์ฃผ์š” ์œ ํ˜•:
    • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test): ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ํ…Œ์ŠคํŠธ
    • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ (Load Test): ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ๋•Œ ์„ฑ๋Šฅ ํ™•์ธ
    • ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (Stress Test): ์‹œ์Šคํ…œ์ด ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ์˜ ๋ฐ˜์‘ ํ™•์ธ
    • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Test): SQL Injection, XSS ๋“ฑ ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ฒ€์ฆ

(3) ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing)

  • ์ฝ”๋“œ ์ˆ˜์ • ์ดํ›„ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ(JUnit, Selenium ๋“ฑ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต ์ˆ˜ํ–‰.

5. ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• (Testing Techniques)

ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์€ ํฌ๊ฒŒ ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ(White-box Testing) ์™€ ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ(Black-box Testing) ๋กœ ๊ตฌ๋ถ„๋จ.

(1) ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ

  • ๋‚ด๋ถ€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
  • ์ œ์–ด ํ๋ฆ„(Flow Control), ์กฐ๊ฑด๋ฌธ, ๋ฃจํ”„ ๊ฒ€์‚ฌ ๋“ฑ์„ ํฌํ•จ.
  • ๊ธฐ๋ฒ•: ๋ฌธ์žฅ(Statement) ์ปค๋ฒ„๋ฆฌ์ง€, ๋ถ„๊ธฐ(Branch) ์ปค๋ฒ„๋ฆฌ์ง€, ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€.

(2) ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ

  • ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
  • ๊ธฐ๋ฒ•:
    • ๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning): ์œ ์‚ฌํ•œ ์ž…๋ ฅ๊ฐ’์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ…Œ์ŠคํŠธ.
    • ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis): ์ตœ์†Œ/์ตœ๋Œ€๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ.
    • ๊ฒฐ์ • ํ…Œ์ด๋ธ” (Decision Table Testing): ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์กฐํ•ฉ์„ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ.
    • ์ƒํƒœ ์ „์ด(State Transition Testing): ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ.

6. ๊ฒฐํ•จ ๊ด€๋ฆฌ์™€ QA ํ”„๋กœ์„ธ์Šค

(1) ๊ฒฐํ•จ(๋ฒ„๊ทธ) ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค

  1. ๊ฒฐํ•จ ๋ฐœ๊ฒฌ (Defect Detection)
  2. ๊ฒฐํ•จ ๋“ฑ๋ก (Defect Logging) - Jira, Redmine ๋“ฑ์˜ ๋„๊ตฌ ํ™œ์šฉ
  3. ๊ฒฐํ•จ ๋ถ„์„ (Defect Analysis) - ์‹ฌ๊ฐ๋„(Severity) ๋ฐ ์šฐ์„ ์ˆœ์œ„(Priority) ์„ค์ •
  4. ๊ฒฐํ•จ ์ˆ˜์ • (Defect Fixing)
  5. ๊ฒฐํ•จ ์žฌํ…Œ์ŠคํŠธ (Retesting)
  6. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing)
  7. ๊ฒฐํ•จ ์ข…๋ฃŒ (Defect Closure)

(2) ํ…Œ์ŠคํŠธ ๋ฌธ์„œ

  • ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ(Test Plan): ํ…Œ์ŠคํŠธ ๋ฒ”์œ„, ์ „๋žต, ์ผ์ • ๋“ฑ์„ ์ •์˜.
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test Case): ์ž…๋ ฅ๊ฐ’, ์˜ˆ์ƒ ๊ฒฐ๊ณผ, ์ˆ˜ํ–‰ ์ ˆ์ฐจ ๋“ฑ์„ ์ •์˜.
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ(Test Report): ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ์š”์•ฝ.

7. ์• ์ž์ผ(Agile) ๊ฐœ๋ฐœ๊ณผ QA

  • ์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก ์—์„œ๋Š” ์งง์€ ์ฃผ๊ธฐ์˜ ๊ฐœ๋ฐœ๊ณผ ์ง€์†์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•จ.
  • ์Šคํฌ๋Ÿผ(Scrum)
    • ์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ & ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต.
    • QA๋Š” ๊ฐœ๋ฐœํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์ง€์†์ ์ธ ํ’ˆ์งˆ ๋ณด์žฅ.
  • TDD (Test-Driven Development, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋จผ์ € ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ ์ง„ํ–‰.
  • BDD (Behavior-Driven Development, ํ–‰๋™ ์ฃผ๋„ ๊ฐœ๋ฐœ)
    • ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (Gherkin ์–ธ์–ด, Cucumber ์‚ฌ์šฉ).

8. ์ •์  ํ…Œ์ŠคํŠธ(Static Testing)์™€ ๋™์  ํ…Œ์ŠคํŠธ(Dynamic Testing)

์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ๋Š” ์‹คํ–‰ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ •์  ํ…Œ์ŠคํŠธ์™€ ๋™์  ํ…Œ์ŠคํŠธ๋กœ ๊ตฌ๋ถ„๋จ.

(1) ์ •์  ํ…Œ์ŠคํŠธ (Static Testing)

  • ์†Œํ”„ํŠธ์›จ์–ด ์‹คํ–‰ ์—†์ด ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•.
  • ์ฃผ๋กœ ๋ฌธ์„œ, ์ฝ”๋“œ, ์•„ํ‚คํ…์ฒ˜ ๋ฆฌ๋ทฐ ๋“ฑ์„ ํ†ตํ•ด ๊ฒฐํ•จ์„ ์‹๋ณ„.
  • ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•
    • ๋ฆฌ๋ทฐ(Review): ์š”๊ตฌ์‚ฌํ•ญ, ์ฝ”๋“œ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋“ฑ์„ ๊ฒ€ํ† .
    • ์›Œํฌ์Šค๋ฃจ(Walkthrough): ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑ์ž๊ฐ€ ์„ค๋ช…ํ•˜๊ณ  ๋™๋ฃŒ๋“ค์ด ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต.
    • ์ธ์ŠคํŽ™์…˜(Inspection): ๊ณต์‹์ ์ธ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ธฐ๋ก.
    • ์ •์  ๋ถ„์„(Static Analysis): ์ž๋™ํ™” ๋„๊ตฌ(SonarQube, PMD)๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„.

(2) ๋™์  ํ…Œ์ŠคํŠธ (Dynamic Testing)

  • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ์™€ ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จ.
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ, ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ ๋“ฑ์ด ๋ชจ๋‘ ๋™์  ํ…Œ์ŠคํŠธ์— ํ•ด๋‹น.

9. ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ (Test Coverage)

  • ํ…Œ์ŠคํŠธ์˜ ์™„์ „์„ฑ์„ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ.
  • ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ํ…Œ์ŠคํŠธ๋˜์—ˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€.
  • ์ผ๋ฐ˜์ ์ธ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์œ ํ˜•
    1. ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€(Statement Coverage): ์‹คํ–‰๋œ ์ฝ”๋“œ ๋ผ์ธ์˜ ๋น„์œจ.
    2. ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€(Branch Coverage): if, switch ๋“ฑ์˜ ๋ถ„๊ธฐ๊ฐ€ ํ…Œ์ŠคํŠธ๋œ ๋น„์œจ.
    3. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€(Condition Coverage): ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์ด ์ฐธ/๊ฑฐ์ง“์œผ๋กœ ์‹คํ–‰๋œ ๋น„์œจ.
    4. MC/DC (Modified Condition/Decision Coverage): ๋ชจ๋“  ๊ฐœ๋ณ„ ์กฐ๊ฑด์ด ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋˜๋Š”์ง€ ํ™•์ธ.
    5. ๊ฒฝ๋กœ ์ปค๋ฒ„๋ฆฌ์ง€(Path Coverage): ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธ.

10. ๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ (Risk-Based Testing)

  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ„ํ—˜๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ๋น„์ฆˆ๋‹ˆ์Šค ์˜ํ–ฅ๋„ ๋ฐ ๊ฒฐํ•จ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰.
  • ๋ฆฌ์Šคํฌ ๋ถ„์„ ์š”์†Œ
    1. ๊ฒฐํ•จ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ(Probability)
    2. ๊ฒฐํ•จ์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ(Impact)
    3. ํšŒ๋ณต ๊ฐ€๋Šฅ์„ฑ(Recoverability)

11. ํ…Œ์ŠคํŠธ ์˜ค๋ผํด (Test Oracle)

  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋จ.
  • ๋Œ€ํ‘œ์ ์ธ ์˜ค๋ผํด ์œ ํ˜•
    1. ์ฐธ ์˜ค๋ผํด(True Oracle): ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ์ •ํ™•ํ•œ ์˜ˆ์ƒ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณต.
    2. ์ƒ˜ํ”Œ๋ง ์˜ค๋ผํด(Sampling Oracle): ์ผ๋ถ€ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ์˜ˆ์ƒ ๊ฒฐ๊ณผ ์ œ๊ณต.
    3. ํœด๋ฆฌ์Šคํ‹ฑ ์˜ค๋ผํด(Heuristic Oracle): ๊ธฐ์กด ๋™์ž‘๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ฒฐํ•จ ์—ฌ๋ถ€ ํŒ๋‹จ.
    4. ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ ์˜ค๋ผํด(Consistency Oracle): ๋™์ผํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์ผ๊ด€๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธ.

12. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing)

  • ์‚ฌ์ „์— ์ •ํ•ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด, ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ๋ฐ”ํƒ•์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ถˆ๋ช…ํ™•ํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํšจ๊ณผ์ .
  • ์žฅ์ : ์œ ์—ฐ์„ฑ, ์ƒˆ๋กœ์šด ๊ฒฐํ•จ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€.
  • ๋‹จ์ : ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์žฌํ˜„์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.

13. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing) ์ „๋žต

  • ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ ์—†์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ „๋žต
    1. ์™„์ „ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Complete Regression Testing): ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰.
    2. ์„ ํƒ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Selective Regression Testing): ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๊ณผ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋ถ€๋ถ„๋งŒ ํ…Œ์ŠคํŠธ.
    3. ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ์žฌ์‚ฌ์šฉ(Test Suite Reuse): ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์žฌ์‚ฌ์šฉ.

14. ํ…Œ์ŠคํŒ… ์„ฑ์ˆ™๋„ ๋ชจ๋ธ (Testing Maturity Models, TMMi)

  • ์กฐ์ง์˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค ์„ฑ์ˆ™๋„๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ชจ๋ธ.
  • CMMI(Capability Maturity Model Integration)์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋….
  • TMMi์˜ 5๋‹จ๊ณ„
    1. ์ดˆ๊ธฐ(Initial): ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒด๊ณ„ํ™”๋˜์ง€ ์•Š์Œ.
    2. ๊ด€๋ฆฌ(Managed): ๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ•.
    3. ์ •์˜(Defined): ํ‘œ์ค€ํ™”๋œ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค ์ ์šฉ.
    4. ์ธก์ •(Measured): ํ…Œ์ŠคํŠธ ์„ฑ๊ณผ๋ฅผ ์ธก์ •ํ•˜๊ณ  ๋ถ„์„.
    5. ์ตœ์ ํ™”(Optimized): ์ง€์†์ ์ธ ๊ฐœ์„  ๋ฐ ์ž๋™ํ™” ๋„์ž….

15. ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ์†์„ฑ (Software Quality Attributes)

  • ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ์ค€.
  • ISO/IEC 25010 ๊ธฐ์ค€ ์ฃผ์š” ํ’ˆ์งˆ ์†์„ฑ
    1. ๊ธฐ๋Šฅ์„ฑ(Functionality): ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ์—ฌ๋ถ€.
    2. ์‹ ๋ขฐ์„ฑ(Reliability): ์‹œ์Šคํ…œ์ด ์˜ค๋ฅ˜ ์—†์ด ์ง€์†์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ.
    3. ์„ฑ๋Šฅ ํšจ์œจ์„ฑ(Performance Efficiency): ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰.
    4. ์‚ฌ์šฉ์„ฑ(Usability): ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ UI/UX.
    5. ๋ณด์•ˆ(Security): ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๋ฐ ์ ‘๊ทผ ์ œ์–ด.
    6. ํ˜ธํ™˜์„ฑ(Compatibility): ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๋™์„ฑ.
    7. ์œ ์ง€๋ณด์ˆ˜์„ฑ(Maintainability): ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ฐœ์„  ์šฉ์ด์„ฑ.
    8. ์ด์‹์„ฑ(Portability): ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ ์—ฌ๋ถ€.

16. ๊ฒฐํ•จ์˜ ์‹ฌ๊ฐ๋„(Severity)์™€ ์šฐ์„ ์ˆœ์œ„(Priority)

  • ์‹ฌ๊ฐ๋„(Severity): ๊ฒฐํ•จ์ด ์‹œ์Šคํ…œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์˜ ์ •๋„.
    • Critical (์น˜๋ช…์ ): ์‹œ์Šคํ…œ ๋‹ค์šด, ๋ฐ์ดํ„ฐ ์†์‹ค.
    • Major (์ค‘๋Œ€ํ•จ): ์ฃผ์š” ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ.
    • Minor (๊ฒฝ๋ฏธํ•จ): ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋น„์ •์ƒ์ ์ด๋‚˜, ๋Œ€์ฒด ๊ฐ€๋Šฅ.
    • Trivial (์‚ฌ์†Œํ•จ): UI ์˜ค๋ฅ˜, ์˜คํƒ€ ๋“ฑ.
  • ์šฐ์„ ์ˆœ์œ„(Priority): ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์‹œ๊ธ‰์„ฑ.
    • High (๋†’์Œ): ์ฆ‰์‹œ ์ˆ˜์ • ํ•„์š”.
    • Medium (๋ณดํ†ต): ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๊นŒ์ง€ ํ•ด๊ฒฐ ํ•„์š”.
    • Low (๋‚ฎ์Œ): ์žฅ๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.

17. ํŽ˜์ด์ฆˆ ์ปจํ…Œ์ธ๋จผํŠธ (Phase Containment)

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ๊ฐ ๋‹จ๊ณ„์—์„œ ๊ฒฐํ•จ์„ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ฐœ๋….
  • ๊ฒฐํ•จ ์ˆ˜์ • ๋น„์šฉ์€ ๋Šฆ์„์ˆ˜๋ก ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.
  • "์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ(Early Testing)" ์›์น™๊ณผ ์—ฐ๊ฒฐ๋จ

18. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ๋ชจ๋ธ

ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ์ •์˜ํ•œ ์—ฌ๋Ÿฌ ๋ชจ๋ธ์ด ์žˆ์Œ.

(1) V-๋ชจ๋ธ (V-Model)

  • SDLC์™€ ํ…Œ์ŠคํŠธ ํ™œ๋™์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋ธ.
  • ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋งˆ๋‹ค ๋Œ€์‘ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๊ฐ€ ์กด์žฌ.
  • ๋‹จ์ : ์ดˆ๊ธฐ ์„ค๊ณ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ๋น„์šฉ์ด ํผ.
๊ฐœ๋ฐœ ๋‹จ๊ณ„๋Œ€์‘ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„
์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ (Acceptance Testing)
์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ (System Testing)
์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Testing)
๋ชจ๋“ˆ ์„ค๊ณ„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Testing)

(2) ์• ์ž์ผ ํ…Œ์ŠคํŒ… (Agile Testing)

  • ์• ์ž์ผ ๊ฐœ๋ฐœ ๋ฐฉ์‹(Scrum, Kanban ๋“ฑ)๊ณผ ํ•จ๊ป˜ ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ ๋ฐฉ์‹.
  • ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ(Sprint)๋งˆ๋‹ค ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
  • TDD (Test-Driven Development), BDD (Behavior-Driven Development) ๊ธฐ๋ฒ•๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ.

(3) ์ŠคํŒŒ์ด๋Ÿด ๋ชจ๋ธ (Spiral Model)

  • ์œ„ํ—˜ ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ชจ๋ธ.
  • ์ ์ง„์ ์œผ๋กœ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰.

19. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (Test Automation)

๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ QA ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฐœ๋….

(1) ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์žฅ์ 

  • ํ…Œ์ŠคํŠธ ์†๋„ ํ–ฅ์ƒ (์ˆ˜๋™ ํ…Œ์ŠคํŠธ ๋Œ€๋น„ ๋น ๋ฆ„).
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Test)์— ์šฉ์ด.
  • ์ผ๊ด€๋œ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ (์‚ฌ๋žŒ์˜ ์‹ค์ˆ˜ ๋ฐฉ์ง€).

(2) ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ

ํ…Œ์ŠคํŠธ ์˜์—ญ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ
๋‹จ์œ„ ํ…Œ์ŠคํŠธ JUnit (Java), PyTest (Python), NUnit (C#)
UI ํ…Œ์ŠคํŠธ Selenium, Cypress, Appium
API ํ…Œ์ŠคํŠธ Postman, RestAssured
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ JMeter, Gatling, Locust
๋ณด์•ˆ ํ…Œ์ŠคํŠธ OWASP ZAP, Burp Suite

(3) ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ํ”„๋ ˆ์ž„์›Œํฌ

  • ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ (Keyword-Driven Testing): ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์—†์ด ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ (e.g., Robot Framework).
  • ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ (Data-Driven Testing): ๋‹ค์–‘ํ•œ ์ž…๋ ฅ๊ฐ’์„ ์ด์šฉํ•ด ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‹คํ–‰.
  • ๋ชจ๋ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ (Model-Based Testing): ์‹œ์Šคํ…œ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์ž๋™ ์ƒ์„ฑ.

20. ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐํ•จ ์œ ํ˜• (Types of Software Defects)

์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐํ•จ ์œ ํ˜•์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„.

๊ฒฐํ•จ ์œ ํ˜•์„ค๋ช…
๊ธฐ๋Šฅ ๊ฒฐํ•จ (Functional Defect) ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ง€ ์•Š๋Š” ๋™์ž‘ ๋ฐœ์ƒ
์„ฑ๋Šฅ ๊ฒฐํ•จ (Performance Defect) ์†๋„, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ
๋ณด์•ˆ ๊ฒฐํ•จ (Security Defect) ๋ฐ์ดํ„ฐ ๋…ธ์ถœ, ์ทจ์•ฝ์  ๊ณต๊ฒฉ ๊ฐ€๋Šฅ์„ฑ
UI/UX ๊ฒฐํ•จ (UI/UX Defect) UI ์š”์†Œ ์ •๋ ฌ ์˜ค๋ฅ˜, ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ
๋…ผ๋ฆฌ ๊ฒฐํ•จ (Logical Defect) ์ž˜๋ชป๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋˜๋Š” ๊ณ„์‚ฐ ์˜ค๋ฅ˜
ํ˜ธํ™˜์„ฑ ๊ฒฐํ•จ (Compatibility Defect) OS, ๋ธŒ๋ผ์šฐ์ €, ๋””๋ฐ”์ด์Šค ๊ฐ„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
๋‹ค๊ตญ์–ด ๊ฒฐํ•จ (Localization Defect) ์–ธ์–ด๋ณ„ UI ๊นจ์ง, ๋ฒˆ์—ญ ์˜ค๋ฅ˜

21. ๊ฒฐํ•จ ์ถ”์  (Defect Tracking) ๋ฐ ๋ฒ„๊ทธ ๋ผ์ดํ”„์‚ฌ์ดํด

ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ์€ ํŠน์ •ํ•œ ํ๋ฆ„์„ ๋”ฐ๋ผ ์ถ”์ ๋จ.

(1) ๊ฒฐํ•จ ๋ผ์ดํ”„์‚ฌ์ดํด (Bug Lifecycle)

  1. New (์‹ ๊ทœ): ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜์–ด ๋“ฑ๋ก๋จ.
  2. Assigned (ํ• ๋‹น๋จ): ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ •ํ•  ๋‹ด๋‹น์ž๋กœ ์ง€์ •๋จ.
  3. In Progress (์ˆ˜์ • ์ค‘): ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•˜๋Š” ๋‹จ๊ณ„.
  4. Fixed (์ˆ˜์ • ์™„๋ฃŒ): ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋จ.
  5. Retest (์žฌํ…Œ์ŠคํŠธ): QA๊ฐ€ ์ˆ˜์ •๋œ ์ฝ”๋“œ ํ…Œ์ŠคํŠธ.
  6. Closed (์ข…๋ฃŒ๋จ): ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋˜์—ˆ๊ณ , ๋‹ค์‹œ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ.
  7. Reopen (์žฌ์˜คํ”ˆ๋จ): ์ˆ˜์ •์ด ๋ถˆ์™„์ „ํ•˜์—ฌ ๋‹ค์‹œ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ฒฝ์šฐ.

(2) ๊ฒฐํ•จ ์‹ฌ๊ฐ๋„(Severity)์™€ ์šฐ์„ ์ˆœ์œ„(Priority)

  • ์‹ฌ๊ฐ๋„(Severity): ์‹œ์Šคํ…œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ.
  • ์šฐ์„ ์ˆœ์œ„(Priority): ํ•ด๊ฒฐ ์‹œ๊ธ‰์„ฑ.

22. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ด€๋ฆฌ (Test Environment Management)

ํ…Œ์ŠคํŠธ๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜๋ ค๋ฉด ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•จ.

(1) ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์˜ ์š”์†Œ

  • ํ•˜๋“œ์›จ์–ด (์„œ๋ฒ„, ๋„คํŠธ์›Œํฌ)
  • ์†Œํ”„ํŠธ์›จ์–ด (OS, DB, API)
  • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ (์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ์œ ์‚ฌํ•œ ํ…Œ์ŠคํŠธ์šฉ ๋ฐ์ดํ„ฐ)
  • ๋ชจ์˜ ์‹œ์Šคํ…œ (Stub, Mock, Virtualization ์‚ฌ์šฉ)

(2) ๊ฐ€์ƒํ™” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ

  • Docker: ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•.
  • VMware: ๊ฐ€์ƒ ๋จธ์‹ ์„ ํ™œ์šฉํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ.
  • Cloud-based Testing: AWS, Google Cloud ๋“ฑ์„ ํ™œ์šฉํ•œ ์›๊ฒฉ ํ…Œ์ŠคํŠธ.

23. ์ง€์†์  ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ (CI/CD)์™€ QA

QA๋Š” DevOps์™€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ด€๋จ.

(1) ์ง€์†์  ํ†ตํ•ฉ (CI - Continuous Integration)

  • ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
  • ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ: Jenkins, GitHub Actions, GitLab CI/CD

(2) ์ง€์†์  ๋ฐฐํฌ (CD - Continuous Deployment)

  • ์ฝ”๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ํ”„๋กœ์„ธ์Šค.
  • ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ .

(3) QA ์—ญํ• 

  • CI/CD ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
  • ๋ฐฐํฌ ์ „ํ›„ ํ’ˆ์งˆ ๊ฒ€์ฆ.

24. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ (Test Data Management, TDM)

ํ…Œ์ŠคํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•จ.

(1) ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์œ ํ˜•

  • ์‹ค์ œ ๋ฐ์ดํ„ฐ (Production Data): ์‹คํ™˜๊ฒฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ต๋ช…ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ.
  • ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ (Sample Data): ์†Œ๊ทœ๋ชจ ํ…Œ์ŠคํŠธ์šฉ ๊ฐ€๊ณต ๋ฐ์ดํ„ฐ.
  • ๋ชจ์˜ ๋ฐ์ดํ„ฐ (Synthetic Data): ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑํ•œ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ.

(2) ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ต๋ช…ํ™” ๊ธฐ๋ฒ•

  • ๋งˆ์Šคํ‚น(Masking): ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ ค์„œ ์‚ฌ์šฉ (e.g., 123-45-6789 → 123-XX-XXXX).
  • ์•”ํ˜ธํ™”(Encryption): ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ›„ ํ…Œ์ŠคํŠธ.
  • ๋žœ๋คํ™”(Randomization): ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๋ณ€๊ฒฝ.

25. AI ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๋ฐ ์ตœ์‹  ํŠธ๋ Œ๋“œ

AI ๊ธฐ์ˆ ์ด QA์— ์ ‘๋ชฉ๋˜๋ฉด์„œ ์ง€๋Šฅํ˜• ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๊ฐ€ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Œ.

(1) AI ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”

  • ๋จธ์‹ ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•œ ์ž๋™ ๊ฒฐํ•จ ํƒ์ง€.
  • ์Šค๋งˆํŠธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ƒ์„ฑ.
  • ์ž์œจ์ ์ธ UI ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.

(2) ์ฃผ์š” AI ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • Applitools: ์‹œ๊ฐ์  UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”.
  • Testim: AI ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ.
  • Mabl: ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ UI ํ…Œ์ŠคํŠธ.


26. ๊ฒฐํ•จ ์˜ˆ๋ฐฉ ๊ธฐ๋ฒ• (Defect Prevention Techniques)

QA์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฒฐํ•จ์„ ์‚ฌ์ „์— ์˜ˆ๋ฐฉํ•˜๋Š” ๊ฒƒ์ž„.

(1) ๊ฒฐํ•จ ์˜ˆ๋ฐฉ์ด ์ค‘์š”ํ•œ ์ด์œ 

  • ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๊ฒฐํ•จ์„ ๋ฐฉ์ง€ํ•˜๋ฉด ๋น„์šฉ์ด ์ ˆ๊ฐ๋จ (๋‚˜์ค‘์— ์ˆ˜์ •ํ• ์ˆ˜๋ก ๋น„์šฉ ์ฆ๊ฐ€).
  • ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ๊ฒฐํ•จ์ด ์ค„์–ด๋“ค๋ฉด ์ œํ’ˆ ํ’ˆ์งˆ์ด ๋†’์•„์ง.
  • ์ง€์†์ ์ธ ๊ฐœ์„ (CQI, Continuous Quality Improvement)์— ๋„์›€.

(2) ๊ฒฐํ•จ ์˜ˆ๋ฐฉ ๋ฐฉ๋ฒ•

  1. ์ฝ”๋”ฉ ํ‘œ์ค€ ์ค€์ˆ˜
    • ์ผ๊ด€๋œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ์œ ์ง€ (Lint, Checkstyle ๊ฐ™์€ ๋„๊ตฌ ํ™œ์šฉ).
  2. ์ •์  ๋ถ„์„ ๋„๊ตฌ ํ™œ์šฉ
    • SonarQube, PMD, FindBugs ๊ฐ™์€ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์ž๋™ ์ ๊ฒ€.
  3. ๋ฆฌ๋ทฐ ๋ฐ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ(Code Review), ์›Œํฌ์Šค๋ฃจ(Walkthrough), ์ธ์ŠคํŽ™์…˜(Inspection)์„ ํ†ตํ•ด ์˜ค๋ฅ˜ ์‚ฌ์ „ ๋ฐœ๊ฒฌ.
  4. ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD, Test-Driven Development)
    • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ , ๊ทธ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ.
  5. ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (CI/CD ์ ์šฉ)
    • ์ง€์†์  ํ†ตํ•ฉ(CI) ๊ณผ์ •์—์„œ ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐํ•จ์„ ์กฐ๊ธฐ์— ๊ฐ์ง€.

27. ํ…Œ์ŠคํŠธ ์„ค๊ณ„ ๊ธฐ๋ฒ• (Test Design Techniques)

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•.

(1) ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• (Specification-Based Testing)

  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์š”๊ตฌ์‚ฌํ•ญ(์ŠคํŽ™)์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„.
  • ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•:
    1. ๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning)
      • ์ž…๋ ฅ๊ฐ’์„ ์—ฌ๋Ÿฌ ๋ฒ”์œ„๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋ฒ”์œ„์—์„œ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ํ…Œ์ŠคํŠธ.
      • ์˜ˆ: 1~100๊นŒ์ง€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, 0(์ž˜๋ชป๋œ ๊ฐ’), 50(์ •์ƒ ๊ฐ’), 101(์ž˜๋ชป๋œ ๊ฐ’)๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋จ.
    2. ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis)
      • ๊ฐ€์žฅ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” **๊ฒฝ๊ณ„ ๊ฐ’(์ตœ์†Œ, ์ตœ๋Œ€)**์„ ์ง‘์ค‘์ ์œผ๋กœ ํ…Œ์ŠคํŠธ.
      • ์˜ˆ: 1~100๊นŒ์ง€ ์ž…๋ ฅ ๊ฐ€๋Šฅ → 0, 1, 100, 101์„ ํ…Œ์ŠคํŠธ.
    3. ๊ฒฐ์ • ํ…Œ์ด๋ธ” ํ…Œ์ŠคํŠธ (Decision Table Testing)
      • ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์กฐํ•ฉ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„.
      • ์˜ˆ: ๋กœ๊ทธ์ธ ์‹œ "์•„์ด๋”” + ๋น„๋ฐ€๋ฒˆํ˜ธ"๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ์„ฑ๊ณต → 4๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜ ํ…Œ์ŠคํŠธ.
    4. ์ƒํƒœ ์ „์ด ํ…Œ์ŠคํŠธ (State Transition Testing)
      • ์‹œ์Šคํ…œ์ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
      • ์˜ˆ: ATM์—์„œ "์นด๋“œ ์‚ฝ์ž… → PIN ์ž…๋ ฅ → ์ถœ๊ธˆ ์š”์ฒญ → ์ถœ๊ธˆ ์™„๋ฃŒ" ํ๋ฆ„ ํ…Œ์ŠคํŠธ.

(2) ๊ฒฝํ—˜ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• (Experience-Based Testing)

  • ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ํ™œ์šฉํ•œ ํ…Œ์ŠคํŠธ.
  • ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•:
    1. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing): ์ฆ‰ํฅ์ ์œผ๋กœ ์‹œ์Šคํ…œ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌ.
    2. ์—๋Ÿฌ ์ถ”์ • ๊ธฐ๋ฒ• (Error Guessing): ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฐํ•จ ์œ ํ˜•์„ ์˜ˆ์ƒํ•˜์—ฌ ํ…Œ์ŠคํŠธ.
    3. ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ: ๊ณผ๊ฑฐ์˜ ๊ฒฐํ•จ ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ํ…Œ์ŠคํŠธ.

28. QA Metrics (์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ์ง€ํ‘œ)

QA์—์„œ ํ…Œ์ŠคํŠธ์˜ ํšจ๊ณผ๋ฅผ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ.

(1) ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ (Test Coverage)

  • ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ ์ค‘ ๋ช‡ %๊ฐ€ ํ…Œ์ŠคํŠธ๋˜์—ˆ๋Š”์ง€๋ฅผ ์ธก์ •.
  • ์ฝ”๋“œ์˜ ์‹คํ–‰ ๋นˆ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•จ.
  • ์ฃผ์š” ์ปค๋ฒ„๋ฆฌ์ง€ ์œ ํ˜•:
    1. ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage): ์ „์ฒด ์ฝ”๋“œ ์ค‘ ์‹คํ–‰๋œ ์ฝ”๋“œ ๋ผ์ธ์˜ ๋น„์œจ.
    2. ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€ (Branch Coverage): ๋ชจ๋“  if-else ๋ถ„๊ธฐ๊ฐ€ ํ…Œ์ŠคํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
    3. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage): ๊ฐœ๋ณ„ ์กฐ๊ฑด์ด ์ฐธ/๊ฑฐ์ง“์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.

(2) ๊ฒฐํ•จ ๋ฐ€๋„ (Defect Density)

  • ์ฝ”๋“œ 1,000๋ผ์ธ(LOC)๋‹น ๊ฒฐํ•จ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ธก์ •.
  • ๊ณต์‹: ๊ฒฐํ•จ๋ฐ€๋„=๋ฐœ๊ฒฌ๋œ๊ฒฐํ•จ์ˆ˜์ฝ”๋“œ๋ผ์ธ์ˆ˜×1000๊ฒฐํ•จ ๋ฐ€๋„ = \frac{๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ ์ˆ˜}{์ฝ”๋“œ ๋ผ์ธ ์ˆ˜} \times 1000
  • ๊ฒฐํ•จ ๋ฐ€๋„๊ฐ€ ๋†’์€ ๋ชจ๋“ˆ์€ ์ง‘์ค‘ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ.

(3) ํ…Œ์ŠคํŠธ ํšจ๊ณผ์„ฑ (Test Effectiveness)

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ์ ์œผ๋กœ ๊ฒฐํ•จ์„ ์ฐพ์•˜๋Š”์ง€ ํ‰๊ฐ€.
  • ๊ณต์‹: ํ…Œ์ŠคํŠธํšจ๊ณผ์„ฑ=๋ฐœ๊ฒฌ๋œ๊ฒฐํ•จ์ˆ˜์ด๊ฒฐํ•จ์ˆ˜×100%ํ…Œ์ŠคํŠธ ํšจ๊ณผ์„ฑ = \frac{๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ ์ˆ˜}{์ด ๊ฒฐํ•จ ์ˆ˜} \times 100\%

29. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ (Test Environment Isolation)

QA ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•.

(1) ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ์˜ ํ•„์š”์„ฑ

  • ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์กฐ๋˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€.
  • ์šด์˜ ์‹œ์Šคํ…œ๊ณผ ๋ถ„๋ฆฌ๋œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•˜์—ฌ ์•ˆ์ •์„ฑ ํ™•๋ณด.

(2) ๊ฒฉ๋ฆฌ ๋ฐฉ๋ฒ•

  1. ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ ์‚ฌ์šฉ (Virtual Machines, Docker)
    • Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•.
  2. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ
    • ์šด์˜ ๋ฐ์ดํ„ฐ์™€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ.
  3. Mocking & Stubbing ํ™œ์šฉ
    • ์‹ค์ œ ์‹œ์Šคํ…œ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ , ๊ฐ€์งœ(Mock) ์‘๋‹ต์„ ์‚ฌ์šฉ.

30. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Testing)

์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ํ…Œ์ŠคํŠธ.

(1) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์œ ํ˜•

์œ ํ˜•์„ค๋ช…
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ (Load Testing) ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†ํ•  ๋•Œ ์„ฑ๋Šฅ ์ธก์ •
์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (Stress Testing) ์‹œ์Šคํ…œ์˜ ์ตœ๋Œ€ ํ•œ๊ณ„๋ฅผ ํ…Œ์ŠคํŠธ
๋‚ด๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ (Endurance Testing) ์žฅ๊ธฐ๊ฐ„ ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ ์œ ์ง€ ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ
์ŠคํŒŒ์ดํฌ ํ…Œ์ŠคํŠธ (Spike Testing) ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์— ๋Œ€ํ•œ ๋ฐ˜์‘ ํ™•์ธ
ํ™•์žฅ์„ฑ ํ…Œ์ŠคํŠธ (Scalability Testing) ์‹œ์Šคํ…œ์ด ํ™•์žฅ๋  ๋•Œ ์„ฑ๋Šฅ ์œ ์ง€ ์—ฌ๋ถ€ ํ™•์ธ

(2) ์ฃผ์š” ์„ฑ๋Šฅ ์ง€ํ‘œ

  • ์‘๋‹ต ์‹œ๊ฐ„ (Response Time): ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.
  • ์ฒ˜๋ฆฌ๋Ÿ‰ (Throughput): ์ดˆ๋‹น ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์š”์ฒญ ์ˆ˜.
  • CPU/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ์‹œ์Šคํ…œ์˜ ๋ฆฌ์†Œ์Šค ์†Œ๋น„๋Ÿ‰.

(3) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • JMeter: ๋ถ€ํ•˜ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”.
  • Gatling: ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์ œ๊ณต.
  • Locust: Python ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

31. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Testing)

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํƒ์ง€ํ•˜๋Š” ํ…Œ์ŠคํŠธ.

(1) ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ์œ ํ˜•

์œ ํ˜•์„ค๋ช…
์นจํˆฌ ํ…Œ์ŠคํŠธ (Penetration Testing) ํ•ด์ปค์ฒ˜๋Ÿผ ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉํ•˜์—ฌ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ
์ทจ์•ฝ์  ๊ฒ€์‚ฌ (Vulnerability Scanning) OWASP Top 10 ๊ธฐ๋ฐ˜ ์ž๋™ํ™” ๋ณด์•ˆ ์Šค์บ”
๊ถŒํ•œ ํ…Œ์ŠคํŠธ (Access Control Testing) ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ฐ ์ ‘๊ทผ ์ œ์–ด ํ…Œ์ŠคํŠธ
๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ „์†ก ๊ณผ์ •์—์„œ ์•”ํ˜ธํ™” ํ™•์ธ

(2) ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • OWASP ZAP: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • Burp Suite: ๋„คํŠธ์›Œํฌ ๋ฐ API ์ทจ์•ฝ์  ๋ถ„์„.
  • SQLMap: SQL Injection ์ž๋™ํ™” ๋„๊ตฌ.

32. QA์™€ SQA (Software Quality Assurance)์˜ ์ฐจ์ด

QA์™€ SQA๋Š” ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ ๋ณด์ด์ง€๋งŒ, ํฌ๊ด„์ ์ธ ๋ฒ”์œ„์™€ ์—ญํ• ์ด ๋‹ค๋ฆ„.

(1) QA (Quality Assurance, ํ’ˆ์งˆ ๋ณด์ฆ)

  • ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ผ์ •ํ•œ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํ™œ๋™.
  • ํ…Œ์ŠคํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ , ๊ฒฐํ•จ ์˜ˆ๋ฐฉ, ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์ „๋žต ํฌํ•จ.
  • ์˜ˆ: ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ˆ˜๋ฆฝ, ๊ฒฐํ•จ ๊ด€๋ฆฌ, ํ’ˆ์งˆ ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ .

(2) SQA (Software Quality Assurance, ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ๋ณด์ฆ)

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ „์ฒด ๊ณผ์ •์—์„œ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ™œ๋™.
  • QA๋ณด๋‹ค ๋” ๋„“์€ ๊ฐœ๋…์œผ๋กœ, ํ…Œ์ŠคํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ , ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋“ฑ ํฌํ•จ.
  • ์˜ˆ: ์ฝ”๋“œ ํ’ˆ์งˆ ์ธก์ •, ๊ฐœ๋ฐœ ํ‘œ์ค€ ์ˆ˜๋ฆฝ, ํ”„๋กœ์„ธ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง.

๐Ÿ’ก QA๋Š” ์ฃผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ํ’ˆ์งˆ ๊ฒ€์ฆ ์—ญํ• ์„ ํ•˜๊ณ , SQA๋Š” ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๋Š” ์ „๋ฐ˜์ ์ธ ์ฒด๊ณ„๋ฅผ ์ˆ˜๋ฆฝํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


33. Shift-Left Testing (์‹œํ”„ํŠธ ๋ ˆํ”„ํŠธ ํ…Œ์ŠคํŒ…)

(1) ๊ฐœ๋…

  • ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ๋ฐœ ๋ผ์ดํ”„์‚ฌ์ดํด์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„(Left)์— ์ง‘์ค‘ํ•˜๋Š” ๊ฐœ๋….
  • ๊ณผ๊ฑฐ์—๋Š” ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ, ์ดˆ๊ธฐ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ฒฐํ•จ์„ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜์—ฌ ์ˆ˜์ • ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

(2) Shift-Left Testing์˜ ์ฃผ์š” ์ „๋žต

  1. TDD (Test-Driven Development, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)
    • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ , ๊ทธ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹.
    • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ๊ฒฐํ•จ์„ ์‚ฌ์ „์— ๋ฐฉ์ง€.
  2. ์ •์  ๋ถ„์„ (Static Code Analysis)
    • SonarQube, ESLint ๊ฐ™์€ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋กœ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์กฐ๊ธฐ์— ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌ.
  3. CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
    • ์ง€์†์  ํ†ตํ•ฉ(CI) ๊ณผ์ •์—์„œ ์œ ๋‹› ํ…Œ์ŠคํŠธ(Unit Test)์™€ ์ •์  ์ฝ”๋“œ ๋ถ„์„์„ ์ž๋™์œผ๋กœ ์‹คํ–‰.

๐Ÿ’ก Shift-Left Testing์„ ์ ์šฉํ•˜๋ฉด ๊ฒฐํ•จ ์ˆ˜์ • ๋น„์šฉ์„ 30~50% ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋จ.


34. QA์—์„œ ํ™œ์šฉ๋˜๋Š” AI ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹

์ตœ๊ทผ QA์—์„œ๋„ AI ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋ฐ ํ’ˆ์งˆ ๋ถ„์„์ด ํ™œ๋ฐœํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Œ.

(1) AI ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๊ธฐ๋ฒ•

  1. Self-healing ํ…Œ์ŠคํŠธ
    • AI๊ฐ€ UI ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•จ.
    • Selenium, Testim ๊ฐ™์€ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ.
  2. ์˜ˆ์ธก ๋ถ„์„ (Predictive Analytics)
    • ๋จธ์‹ ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์šฐ์„ ์ˆœ์œ„ ์ž๋™ ์„ ์ •.
    • ๊ณผ๊ฑฐ ๊ฒฐํ•จ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜์—ฌ ๊ฒฐํ•จ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ ๋ถ€๋ถ„ ์˜ˆ์ธก.
  3. Visual Testing (์‹œ๊ฐ์  ํ…Œ์ŠคํŠธ)
    • AI๊ฐ€ UI์˜ ์‹œ๊ฐ์  ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ UI ์˜ค๋ฅ˜๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์Œ.
    • Applitools ๊ฐ™์€ ๋„๊ตฌ์—์„œ ์ œ๊ณต.

๐Ÿ’ก AI ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋Š” QA์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ๋กœ ๋– ์˜ค๋ฅด๊ณ  ์žˆ์Œ.


35. QA์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ (Database Testing)

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.

(1) ์ฃผ์š” ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ

  1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ํ…Œ์ŠคํŠธ
    • ACID (Atomicity, Consistency, Isolation, Durability) ์›์น™์ด ์ž˜ ์ง€์ผœ์ง€๋Š”์ง€ ํ™•์ธ.
    • ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ์—†๋Š”์ง€ ๊ฒ€์ฆ.
  2. SQL ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ
    • ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด DB ์‘๋‹ต ์‹œ๊ฐ„์ด ์ ์ ˆํ•œ์ง€ ํ™•์ธ.
    • Index, Query Plan ๋ถ„์„ ๋“ฑ์„ ํ™œ์šฉ.
  3. ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ…Œ์ŠคํŠธ
    • ์ƒˆ๋กœ์šด DB๋กœ ๋ฐ์ดํ„ฐ ์ด์ „ ์‹œ, ์†์‹ค ์—†์ด ์ •ํ™•ํ•˜๊ฒŒ ์ด๋™ํ–ˆ๋Š”์ง€ ํ™•์ธ.

(2) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • SQLUnit: SQL ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ.
  • DbFit: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ BDD ํ”„๋ ˆ์ž„์›Œํฌ.
  • JDBCUnit: Java ๊ธฐ๋ฐ˜์˜ DB ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ๋Š” ํŠนํžˆ ๊ธˆ์œต, ์˜๋ฃŒ ๋“ฑ ๋ฐ์ดํ„ฐ ์ •ํ™•์„ฑ์ด ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ์—์„œ ํ•„์ˆ˜์ ์ธ QA ํ™œ๋™์ž„.


36. QA์—์„œ A/B ํ…Œ์ŠคํŠธ (A/B Testing)

A/B ํ…Œ์ŠคํŠธ๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฒ„์ „์„ ๋น„๊ตํ•˜์—ฌ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ฐพ๋Š” ์‹คํ—˜์  ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•.

(1) A/B ํ…Œ์ŠคํŠธ ๊ณผ์ •

  1. ๊ฐ€์„ค ์„ค์ •
    • ์˜ˆ: "๋ฒ„ํŠผ ์ƒ‰์ƒ์„ ํŒŒ๋ž€์ƒ‰์—์„œ ์ดˆ๋ก์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ํด๋ฆญ๋ฅ ์ด ์ฆ๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค."
  2. ๊ทธ๋ฃน ๋ถ„ํ• 
    • A ๊ทธ๋ฃน(๊ธฐ์กด UI), B ๊ทธ๋ฃน(๋ณ€๊ฒฝ๋œ UI)์œผ๋กœ ๋‚˜๋ˆ„์–ด ํŠธ๋ž˜ํ”ฝ์„ ๋ฐฐ๋ถ„.
  3. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
    • ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„.
  4. ๊ฒฐ๊ณผ ๋ถ„์„
    • ํด๋ฆญ๋ฅ (CTR), ์ „ํ™˜์œจ(Conversion Rate) ๋“ฑ์„ ์ธก์ •ํ•˜์—ฌ ์ตœ์ ์˜ UI ์„ ํƒ.

๐Ÿ’ก A/B ํ…Œ์ŠคํŠธ๋Š” ์›น์‚ฌ์ดํŠธ, ๋ชจ๋ฐ”์ผ ์•ฑ์˜ UX ๊ฐœ์„  ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์„ฑ๊ณผ ์ตœ์ ํ™”์— ๋งค์šฐ ์ค‘์š”ํ•œ ๊ธฐ๋ฒ•.


37. QA์—์„œ ๋กœ๊ทธ ๋ถ„์„ (Log Analysis)

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ถ”์ ํ•˜๋Š” QA ๊ธฐ๋ฒ•.

(1) ๋กœ๊ทธ ๋ถ„์„์˜ ํ•„์š”์„ฑ

  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ ๊ฒฐํ•จ์„ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ.
  • ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ˆ์™ธ(Exception), ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๋ฅผ ์‚ฌ์ „์— ๊ฐ์ง€.

(2) ๋กœ๊ทธ ๋ถ„์„ ๋„๊ตฌ

  • ELK Stack (Elasticsearch, Logstash, Kibana): ๋กœ๊ทธ ์ˆ˜์ง‘, ๊ฒ€์ƒ‰, ์‹œ๊ฐํ™” ๋„๊ตฌ.
  • Splunk: ๋จธ์‹ ๋Ÿฌ๋‹์„ ํ™œ์šฉํ•œ ๋กœ๊ทธ ๋ถ„์„ ๋ฐ ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง.
  • Graylog: ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ์ œ๊ณต.

๐Ÿ’ก ๋กœ๊ทธ ๋ถ„์„์„ QA ํ”„๋กœ์„ธ์Šค์— ํฌํ•จํ•˜๋ฉด ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์ด ๋Œ€ํญ ํ–ฅ์ƒ๋จ.


38. QA์—์„œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง (Application Monitoring)

์šด์˜ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์‹œํ•˜๋Š” ํ™œ๋™.

(1) ์ฃผ์š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ

  1. ์‘๋‹ต ์‹œ๊ฐ„(Response Time)
    • API, DB ์ฟผ๋ฆฌ, UI ๋ฐ˜์‘ ์†๋„๋ฅผ ์ธก์ •.
  2. CPU/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
    • ์‹œ์Šคํ…œ ๊ณผ๋ถ€ํ•˜ ์—ฌ๋ถ€๋ฅผ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง.
  3. ์˜ค๋ฅ˜ ๋ฐœ์ƒ๋ฅ  (Error Rate)
    • HTTP 500, 404 ๋“ฑ ์˜ค๋ฅ˜ ๋น„์œจ์„ ์ธก์ •.

(2) ๋Œ€ํ‘œ์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

  • New Relic: ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง.
  • AppDynamics: ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜ ์ถ”์  ๋ฐ ์˜ค๋ฅ˜ ๊ฐ์ง€.
  • Datadog: ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง.

๐Ÿ’ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ†ตํ•ด ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋„ ์ง€์†์ ์ธ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ.


1. Shift-Left Testing (์‹œํ”„ํŠธ ๋ ˆํ”„ํŠธ ํ…Œ์ŠคํŒ…) - ์™œ ์ค‘์š”ํ•œ๊ฐ€?

Shift-Left Testing์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ „๋žต์ด๋‹ค.
๊ณผ๊ฑฐ์—๋Š” ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ QA ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ๊ฒฐํ•จ ์ˆ˜์ • ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ , ์ผ์ •์ด ์ง€์—ฐ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
Shift-Left Testing์„ ์ ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ์กฐ๊ธฐ์— ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐํ•จ์„ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ • ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Œ.

(1) ์™œ Shift-Left Testing์ด ์ค‘์š”ํ•œ๊ฐ€?

  • ์ดˆ๊ธฐ ๊ฒฐํ•จ ๋ฐœ๊ฒฌ → ์ˆ˜์ • ๋น„์šฉ ์ ˆ๊ฐ
    • ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•˜๋Š” ๋น„์šฉ์€ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค 5~10๋ฐฐ ๋น„์‹ธ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น„์šฉ ํšจ์œจ์ ์ด๋‹ค.
  • ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์˜ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ
    • Shift-Left Testing์„ ์ ์šฉํ•˜๋ฉด, ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„ํ–‰๋˜๋ฏ€๋กœ ๋‚˜์ค‘์— ์ „์ฒด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„์ž…๊ณผ ์‹œ๋„ˆ์ง€ ํšจ๊ณผ
    • TDD (ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ), CI/CD ๋“ฑ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด ๋” ํšจ์œจ์ ์ธ ํ’ˆ์งˆ ๋ณด์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(2) Shift-Left Testing์˜ ์ฃผ์š” ๊ธฐ๋ฒ•

โ‘  TDD (Test-Driven Development, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ , ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๋จผ์ € ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ฏ€๋กœ, ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฒฐํ•จ์ด ์ค„์–ด๋“ค๊ณ , ์ฝ”๋“œ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋œ๋‹ค.
  • TDD์˜ ๋‹จ๊ณ„:
    1. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ: ์‹คํŒจํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ.
    2. ํ…Œ์ŠคํŠธ ์‹คํ–‰: ๋‹น์—ฐํžˆ ์‹คํŒจํ•จ.
    3. ์ฝ”๋“œ ์ž‘์„ฑ: ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋„๋ก ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ์ž‘์„ฑ.
    4. ๋ฆฌํŒฉํ† ๋ง: ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ ๋ฐ ์ตœ์ ํ™”.
    5. ๋ฐ˜๋ณต.

โ‘ก ์ •์  ์ฝ”๋“œ ๋ถ„์„ (Static Code Analysis)

  • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๊ฒฐํ•จ์„ ํƒ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ๋Œ€ํ‘œ์ ์ธ ์ •์  ๋ถ„์„ ๋„๊ตฌ:
    • SonarQube: ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ๋ณด์•ˆ ์ ๊ฒ€.
    • Checkstyle, PMD: Java ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฒ€์‚ฌ.
    • ESLint: JavaScript ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ฐ ์˜ค๋ฅ˜ ๋ถ„์„.

โ‘ข CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ์˜ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ

  • ์ฝ”๋“œ๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹.
  • ์ฃผ์š” CI/CD ๋„๊ตฌ:
    • Jenkins
    • GitHub Actions
    • GitLab CI/CD
    • Azure DevOps

๐Ÿ’ก ๊ฒฐ๋ก : Shift-Left Testing์„ ์ ์šฉํ•˜๋ฉด ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๊ฒฐํ•จ์„ ์ฐพ์•„๋‚ด๊ณ , ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ํ’ˆ์งˆ์ด ๋Œ€ํญ ํ–ฅ์ƒ๋œ๋‹ค.


2. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (Test Automation) - ์‹ค๋ฌด์—์„œ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”๊ฐ€?

ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋Š” ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ QA ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

(1) ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • QA ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ
    • ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , QA ํŒ€์€ ๋” ์ค‘์š”ํ•œ ํ…Œ์ŠคํŠธ(ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ ๋“ฑ)์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ํšจ์œจ์„ฑ ์ฆ๊ฐ€
    • ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Test) ๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ž๋™ํ™”๋œ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋ช‡ ๋ถ„ ์•ˆ์— ์‹คํ–‰ ๊ฐ€๋Šฅ.
  • ํ…Œ์ŠคํŠธ ์ผ๊ด€์„ฑ ์œ ์ง€
    • ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ๋žŒ์˜ ์‹ค์ˆ˜(์˜คํƒ€, ์‹ค์ˆ˜๋กœ ํ…Œ์ŠคํŠธ ์Šคํ… ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋“ฑ) ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
    • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ํ•ญ์ƒ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์‹ ๋ขฐ์„ฑ์ด ๋†’๋‹ค.

(2) ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ์™€ ์‚ฌ์šฉ ์‚ฌ๋ก€

โ‘  ์œ ๋‹› ํ…Œ์ŠคํŠธ (Unit Testing)

  • ๊ฐœ๋ณ„ ๋ชจ๋“ˆ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • ์ฃผ์š” ๋„๊ตฌ:
    • Java → JUnit, TestNG
    • Python → PyTest, unittest
    • JavaScript → Jest, Mocha

โ‘ก UI ํ…Œ์ŠคํŠธ (End-to-End Test)

  • ์›น/๋ชจ๋ฐ”์ผ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”.
  • ์ฃผ์š” ๋„๊ตฌ:
    • Selenium (์›น UI ์ž๋™ํ™”)
    • Cypress (์›น ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ†ตํ•ฉ์ด ์‰ฌ์šด UI ์ž๋™ํ™” ๋„๊ตฌ)
    • Appium (๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ)

โ‘ข API ํ…Œ์ŠคํŠธ (API Testing)

  • REST API ๋ฐ GraphQL API๋ฅผ ์ž๋™ํ™” ํ…Œ์ŠคํŠธํ•˜๋Š” ๋„๊ตฌ.
  • ์ฃผ์š” ๋„๊ตฌ:
    • Postman (API ์š”์ฒญ ์ž๋™ํ™” ๋ฐ ์Šคํฌ๋ฆฝํŒ… ๊ฐ€๋Šฅ)
    • RestAssured (Java ๊ธฐ๋ฐ˜ API ํ…Œ์ŠคํŠธ)
    • SoapUI (SOAP, REST API ํ…Œ์ŠคํŠธ)

๐Ÿ’ก ๊ฒฐ๋ก : ์‹ค๋ฌด์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์ ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•˜๊ณ , ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


3. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Testing) - ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฐ€?

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์ด ํŠน์ •ํ•œ ๋ถ€ํ•˜(ํŠธ๋ž˜ํ”ฝ, ์‚ฌ์šฉ๋Ÿ‰)์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค.

(1) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š”์ง€ ํ™•์ธ ํ•„์š”.
  • ํŠธ๋ž˜ํ”ฝ์ด ๊ธ‰์ฆํ•˜๋ฉด ์‘๋‹ต ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์ด ๋‹ค์šด๋  ์œ„ํ—˜์ด ์žˆ์Œ.
  • ์„ฑ๋Šฅ ์ด์Šˆ๋Š” ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ.

(2) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์œ ํ˜•

ํ…Œ์ŠคํŠธ ์œ ํ˜•์„ค๋ช…
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ (Load Testing) ์ •์ƒ์ ์ธ ์‚ฌ์šฉ๋Ÿ‰์—์„œ์˜ ์„ฑ๋Šฅ ์ธก์ •
์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (Stress Testing) ์ตœ๋Œ€ ๋ถ€ํ•˜๋ฅผ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ์‹œ์Šคํ…œ ๋ฐ˜์‘ ํ™•์ธ
๋‚ด๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ (Endurance Testing) ์žฅ์‹œ๊ฐ„ ๋™์•ˆ ์‹œ์Šคํ…œ์ด ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ
์ŠคํŒŒ์ดํฌ ํ…Œ์ŠคํŠธ (Spike Testing) ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ์‹œ ์‹œ์Šคํ…œ ๋ฐ˜์‘ ํ…Œ์ŠคํŠธ

(3) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • JMeter → ๋ถ€ํ•˜ ๋ฐ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ž๋™ํ™”.
  • Gatling → ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ถ„์„.
  • Locust → Python ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

(4) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ

  1. ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ ์ •์˜
    • "์ตœ๋Œ€ 10,000๋ช…์˜ ๋™์‹œ ์ ‘์†์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?"
  2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์ค€๋น„
    • ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑ.
  3. ๋ถ€ํ•˜ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ
    • ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ง„ํ–‰.
  4. ๊ฒฐ๊ณผ ๋ถ„์„
    • ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„, CPU ์‚ฌ์šฉ๋Ÿ‰, ์—๋Ÿฌ์œจ ๋ถ„์„.

๐Ÿ’ก ๊ฒฐ๋ก : ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์—๋„ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€๋น„ ๊ฐ€๋Šฅ.


โœ… ์ •๋ฆฌ: ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  QA ๊ฐœ๋…

  1. Shift-Left Testing → ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋น„์šฉ ์ ˆ๊ฐ.
  2. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” → ์ˆ˜์ž‘์—… ํ…Œ์ŠคํŠธ๋ฅผ ์ค„์ด๊ณ , ๋น ๋ฅด๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” QA ์ˆ˜ํ–‰.
  3. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ → ์‹œ์Šคํ…œ์ด ๋ถ€ํ•˜์—๋„ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆ.

4. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing)

ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€, ๋ฒ„๊ทธ ์ˆ˜์ •, ์„ฑ๋Šฅ ๊ฐœ์„  ๋“ฑ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ณผ์ •์—์„œ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์˜๋„์น˜ ์•Š๊ฒŒ ์†์ƒ๋  ์ˆ˜ ์žˆ๋‹ค.

(1) ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ์ฝ”๋“œ ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ ๊ฒ€์ฆ: ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋Š์ž„์—†์ด ์ง„ํ™”ํ•˜๋ฉฐ, ๊ทธ ๊ณผ์ •์—์„œ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.
  • ๊ฒฐํ•จ ๋ฐฉ์ง€: ์ƒˆ๋กœ์šด ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ์ฝ”๋“œ์™€ ์ถฉ๋Œํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€.
  • ๊ณ ๊ฐ ๋งŒ์กฑ๋„ ํ–ฅ์ƒ: ์•ˆ์ •์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์ œ๊ณต์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ .

(2) ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ์ „๋žต

  1. ์„ ํƒ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Selective Regression Testing)
    • ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๊ณผ ๊ทธ์™€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ด€๋œ ๋ถ€๋ถ„๋งŒ์„ ์ง‘์ค‘์ ์œผ๋กœ ํ…Œ์ŠคํŠธ.
  2. ์™„์ „ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Complete Regression Testing)
    • ์ „์ฒด ์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŠธ. ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜๋ฏ€๋กœ ์ค‘์š” ๋ฆด๋ฆฌ์Šค ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ.
  3. ์ž๋™ํ™”๋œ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ
    • ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ์ •๊ธฐ์ ์œผ๋กœ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰.
    • ์ฃผ๊ธฐ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์œ ์ง€.

(3) ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • Selenium: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์— ์ ํ•ฉ.
  • TestNG, JUnit: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์— ์‚ฌ์šฉ.
  • Cypress: ์ตœ์‹  ํ”„๋ŸฐํŠธ์—”๋“œ ๊ธฐ์ˆ ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ์ข‹์€ ๋„๊ตฌ.

๐Ÿ’ก ๊ฒฐ๋ก : ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ ์ ˆํžˆ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๋ถˆ์•ˆ์ •์„ฑ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต์ ์ธ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.


5. QA์—์„œ์˜ ๊ฒฐํ•จ ๊ด€๋ฆฌ (Defect Management)

๊ฒฐํ•จ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค๋Š” ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ(๋ฒ„๊ทธ)์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ๋ก, ์ถ”์ , ์ˆ˜์ •ํ•˜๋Š” ์ผ๋ จ์˜ ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค.

(1) ๊ฒฐํ•จ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ

  • ๊ฒฐํ•จ ์ถ”์  ๋ฐ ์ˆ˜์ •: ๋ชจ๋“  ๊ฒฐํ•จ์„ ์ถ”์ ํ•˜์—ฌ ํ•ด๋‹น ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๊ด€๋ฆฌ.
  • ํ’ˆ์งˆ ๊ฐœ์„ : ๊ฒฐํ•จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ฒฐํ•จ ๋ฐœ์ƒ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ , ์žฌ๋ฐœ ๋ฐฉ์ง€ ์ „๋žต์„ ์ˆ˜๋ฆฝ.
  • ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ ๊ฐ„์˜ ์›ํ™œํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜: QA์™€ ๊ฐœ๋ฐœํŒ€ ๊ฐ„์— ๋ช…ํ™•ํ•œ ๊ฒฐํ•จ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‹ ์†ํ•œ ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•จ.

(2) ๊ฒฐํ•จ ๋ผ์ดํ”„์‚ฌ์ดํด (Bug Lifecycle)

  1. ๊ฒฐํ•จ ๋ฐœ๊ฒฌ (New): ํ…Œ์ŠคํŠธ ์ค‘ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜์–ด ๋“ฑ๋ก.
  2. ํ• ๋‹น (Assigned): ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒฐํ•จ์ด ํ• ๋‹น.
  3. ์ˆ˜์ • ์ค‘ (In Progress): ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐํ•จ์„ ์ˆ˜์ •.
  4. ์ˆ˜์ • ์™„๋ฃŒ (Fixed): ์ˆ˜์ •์ด ์™„๋ฃŒ๋œ ์ƒํƒœ.
  5. ์žฌํ…Œ์ŠคํŠธ (Retesting): QA๊ฐ€ ์ˆ˜์ •๋œ ๊ฒฐํ•จ์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธ.
  6. ์ข…๋ฃŒ (Closed): ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋˜์—ˆ๊ณ , ๋ฌธ์ œ๊ฐ€ ์žฌ๋ฐœํ•˜์ง€ ์•Š์Œ.
  7. ์žฌ์˜คํ”ˆ (Reopened): ๊ฒฐํ•จ์ด ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธ๋ฅผ ์š”๊ตฌ.

(3) ๊ฒฐํ•จ ๊ด€๋ฆฌ ๋„๊ตฌ

  • Jira: ๊ฒฐํ•จ ๊ด€๋ฆฌ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ. ์ด์Šˆ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.
  • Bugzilla: ๊ฒฐํ•จ ์ถ”์ ์— ํŠนํ™”๋œ ๋„๊ตฌ๋กœ, ๊ฒฐํ•จ ์ƒํƒœ์™€ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ธํžˆ ๊ธฐ๋ก ๊ฐ€๋Šฅ.
  • Redmine: ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ๊ฒฐํ•จ ์ถ”์  ๊ธฐ๋Šฅ์„ ๋™์‹œ์— ์ œ๊ณต.

๐Ÿ’ก ๊ฒฐ๋ก : ๊ฒฐํ•จ ๊ด€๋ฆฌ๋Š” ํšจ์œจ์ ์ธ QA ํ”„๋กœ์„ธ์Šค์˜ ํ•ต์‹ฌ์ด๋‹ค. ๊ฒฐํ•จ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์ถ”์ ํ•จ์œผ๋กœ์จ, ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ์ถœ์‹œ ํ›„ ์˜ค๋ฅ˜๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.


6. API ํ…Œ์ŠคํŠธ (API Testing)

API ํ…Œ์ŠคํŠธ๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ์ƒํ˜ธ์ž‘์šฉ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋Œ€๋ถ€๋ถ„ REST API, GraphQL API ๋“ฑ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฏ€๋กœ, API ํ…Œ์ŠคํŠธ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

(1) API ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ ๊ฒ€์ฆ: UI๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฐฑ์—”๋“œ์˜ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
  • ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ: UI ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋„ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ: API๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๊ฒ€์ฆ.

(2) ์ฃผ์š” ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ

  1. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ: API๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
  2. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ: ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ๋“ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ํ™•์ธ.
  3. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ: API์˜ ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ธก์ •.
  4. ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ: ์ž˜๋ชป๋œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธ.

(3) API ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • Postman: HTTP ์š”์ฒญ์„ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
  • RestAssured: Java ๊ธฐ๋ฐ˜์˜ REST API ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • SoapUI: SOAP ๋ฐ REST API์˜ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์™€ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ.

๐Ÿ’ก ๊ฒฐ๋ก : API ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์™€ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ •ํ™•ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.


7. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Testing)

๋ณด์•ˆ ํ…Œ์ŠคํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ณด์•ˆ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ํŠนํžˆ, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ๋Š” ๋ณด์•ˆ์ด ๋งค์šฐ ์ค‘์š”ํ•œ ์ด์Šˆ์ด๋‹ค.

(1) ๋ณด์•ˆ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ: ๊ฐœ์ธ์ •๋ณด๋‚˜ ๊ธฐ๋ฐ€ ์ •๋ณด๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธ.
  • ์ทจ์•ฝ์  ํƒ์ง€: ์‹œ์Šคํ…œ์ด ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜์ง€ ์•Š์€์ง€ ํ™•์ธ.
  • ๊ทœ์ œ ์ค€์ˆ˜: GDPR, HIPAA ๋“ฑ ๋ฒ•์  ๊ทœ์ œ์— ๋”ฐ๋ฅธ ๋ณด์•ˆ ์š”๊ฑด ์ถฉ์กฑ.

(2) ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ์œ ํ˜•

  1. ์นจํˆฌ ํ…Œ์ŠคํŠธ (Penetration Testing): ์‹ค์ œ ํ•ด์ปค์ฒ˜๋Ÿผ ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ.
  2. ์ทจ์•ฝ์  ์Šค์บ๋‹ (Vulnerability Scanning): ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ ์„ ์Šค์บ”.
  3. SQL Injection ํ…Œ์ŠคํŠธ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ๋ฒ•์ ์ธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ.
  4. XSS (Cross-Site Scripting) ํ…Œ์ŠคํŠธ: ์›น ํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ.

(3) ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • OWASP ZAP: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•˜๊ณ  ํ…Œ์ŠคํŠธ.
  • Burp Suite: ์›น ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์— ํŠนํ™”๋œ ๋„๊ตฌ๋กœ, ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›.
  • Nmap: ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์Šค์บ๋‹ ๋„๊ตฌ.

๐Ÿ’ก ๊ฒฐ๋ก : ๋ณด์•ˆ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ์•ˆ์ „์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋Œ€์‘๋ ฅ์„ ๋†’์ด๊ณ , ๋ฒ•์  ๊ทœ์ œ๋ฅผ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


8. ํ…Œ์ŠคํŠธ ์ „๋žต (Test Strategy)

ํ…Œ์ŠคํŠธ ์ „๋žต(Test Strategy)์€ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์—์„œ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ณ ์ˆ˜์ค€์˜ ๊ณ„ํš์ด๋‹ค.
์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ ๊ณ„ํš(Test Plan)๋ณด๋‹ค ๋” ํฌ๊ด„์ ์ธ ๊ฐœ๋…์œผ๋กœ, ์กฐ์ง ์ „์ฒด ๋˜๋Š” ํŠน์ • ํ”„๋กœ์ ํŠธ์˜ ํ…Œ์ŠคํŠธ ๋ฐฉํ–ฅ์„ฑ์„ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

(1) ํ…Œ์ŠคํŠธ ์ „๋žต์„ ์ˆ˜๋ฆฝํ•˜๋Š” ์ด์œ 

  • ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถ˜ ํ…Œ์ŠคํŠธ ๋ฐฉํ–ฅ์„ฑ์„ ์„ค์ •.
  • ํ”„๋กœ์ ํŠธ์˜ ํ’ˆ์งˆ ๋ชฉํ‘œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์„ ์„ ์ •.
  • ์ œํ•œ๋œ ์ž์›(์‹œ๊ฐ„, ์ธ๋ ฅ, ์˜ˆ์‚ฐ) ๋‚ด์—์„œ ์ตœ์ ์˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •.

(2) ํ…Œ์ŠคํŠธ ์ „๋žต์˜ ์ฃผ์š” ์š”์†Œ

  1. ํ…Œ์ŠคํŠธ ๋ฒ”์œ„ (Scope of Testing)
    • ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ธ๊ฐ€?
    • ์ฃผ์š” ํ…Œ์ŠคํŠธ ์œ ํ˜•(๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋“ฑ)์„ ์ •์˜.
  2. ํ…Œ์ŠคํŠธ ์ ‘๊ทผ ๋ฐฉ์‹ (Testing Approach)
    • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ vs ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ.
    • ์ˆ˜๋™ ํ…Œ์ŠคํŠธ vs ์ž๋™ํ™” ํ…Œ์ŠคํŠธ.
    • ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ vs ๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ.
  3. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ (Test Environment)
    • ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•.
    • ๊ฐ€์ƒํ™”, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์‚ฌ์šฉ ์—ฌ๋ถ€.
  4. ํ…Œ์ŠคํŠธ ๋„๊ตฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ
    • Selenium, JUnit, Postman ๋“ฑ ์‚ฌ์šฉํ•  ๋„๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜.
  5. ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€ (Exit Criteria)
    • "๋ฒ„๊ทธ๊ฐ€ X๊ฐœ ์ดํ•˜์ผ ๋•Œ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ"์™€ ๊ฐ™์€ ๊ธฐ์ค€์„ ์„ค์ •.

๐Ÿ’ก ๊ฒฐ๋ก : ํ…Œ์ŠคํŠธ ์ „๋žต์„ ์ˆ˜๋ฆฝํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ค„์ด๊ณ , ํ”„๋กœ์ ํŠธ ์ผ์ • ๋‚ด์—์„œ ์ตœ์ƒ์˜ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.


9. ๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ (Risk-Based Testing)

๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„๊ณผ ๊ฒฐํ•จ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ถ€๋ถ„์„ ์šฐ์„ ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ „๋žต์ด๋‹ค.

(1) ๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ๋ชจ๋“  ๊ธฐ๋Šฅ์„ 100% ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•จ → ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด์•ผ ํ•จ.
  • ํ”„๋กœ์ ํŠธ ์ผ์ •์ด ์ด‰๋ฐ•ํ•  ๋•Œ, ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜์—ฌ ํ’ˆ์งˆ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Œ.

(2) ๋ฆฌ์Šคํฌ ๋ถ„์„ ๋ฐฉ๋ฒ•

  1. ๋น„์ฆˆ๋‹ˆ์Šค ์ค‘์š”๋„(Business Impact) ํ‰๊ฐ€
    • ํŠน์ • ๊ธฐ๋Šฅ์ด ๋น„์ฆˆ๋‹ˆ์Šค์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์–ผ๋งˆ๋‚˜ ํฐ์ง€ ํ‰๊ฐ€.
    • ์˜ˆ: ๊ฒฐ์ œ ์‹œ์Šคํ…œ, ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์ค‘์š”ํ•จ.
  2. ๊ฒฐํ•จ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ(Bug Likelihood) ํ‰๊ฐ€
    • ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์–ด๋–ค ๊ธฐ๋Šฅ์—์„œ ๊ฒฐํ•จ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋ถ„์„.
    • ์‹ ๊ทœ ๊ฐœ๋ฐœ๋œ ๊ธฐ๋Šฅ์€ ๋ฒ„๊ทธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.
  3. ์šฐ์„ ์ˆœ์œ„ ๋งค๊ธฐ๊ธฐ
    • ๋น„์ฆˆ๋‹ˆ์Šค ์ค‘์š”๋„ X ๊ฒฐํ•จ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ = ํ…Œ์ŠคํŠธ ์šฐ์„ ์ˆœ์œ„ ๊ฒฐ์ •.
    • ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋จผ์ € ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์€ ์ดํ›„์— ์ง„ํ–‰.

๐Ÿ’ก ๊ฒฐ๋ก : ๋ฆฌ์Šคํฌ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค(์‹œ๊ฐ„, ์ธ๋ ฅ) ๋‚ด์—์„œ๋„ ํšจ๊ณผ์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.


10. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ (Database Testing)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

(1) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ์˜ ์ฃผ์š” ํ•ญ๋ชฉ

  1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ (Data Integrity Testing)
    • ACID ์›์น™(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ณ ๋ฆฝ์„ฑ, ์ง€์†์„ฑ)์ด ์ž˜ ์ง€์ผœ์ง€๋Š”์ง€ ํ™•์ธ.
    • ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆ.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ
    • SQL ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๋ฅผ ์ธก์ •ํ•˜๊ณ , ์ธ๋ฑ์‹ฑ, ์ฟผ๋ฆฌ ์ตœ์ ํ™” ์ˆ˜ํ–‰.
    • EXPLAIN PLAN์„ ์‚ฌ์šฉํ•˜์—ฌ SQL ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„.
  3. ๋ฐ์ดํ„ฐ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์•”ํ˜ธํ™”๋˜์–ด ์ €์žฅ๋˜๋Š”์ง€ ํ™•์ธ.
    • SQL Injection ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ…Œ์ŠคํŠธ.
  4. ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ…Œ์ŠคํŠธ
    • DB๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค ์—†์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋™ํ•˜๋Š”์ง€ ํ™•์ธ.

(2) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • SQLUnit: ์œ ๋‹› ํ…Œ์ŠคํŠธ์šฉ SQL ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ.
  • DbFit: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ.
  • PostgreSQL Explain Analyze: SQL ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„ ๋„๊ตฌ.

๐Ÿ’ก ๊ฒฐ๋ก : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์†์‹ค, ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ, ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.


11. A/B ํ…Œ์ŠคํŠธ (A/B Testing)

A/B ํ…Œ์ŠคํŠธ๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฒ„์ „์„ ์‹คํ—˜ํ•˜์—ฌ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ฐพ๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์ด๋‹ค.

(1) A/B ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ 

  • ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์ ์˜ UI/UX๋ฅผ ์ฐพ์Œ.
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ(์ „ํ™˜์œจ ์ฆ๊ฐ€, ํด๋ฆญ๋ฅ  ํ–ฅ์ƒ ๋“ฑ)๋ฅผ ์ตœ์ ํ™”.
  • ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜์‚ฌ ๊ฒฐ์ • → ๊ฐ์ด ์•„๋‹ˆ๋ผ ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ๋Šฅ ๊ฐœ์„ .

(2) A/B ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ ˆ์ฐจ

  1. ๊ฐ€์„ค ์ˆ˜๋ฆฝ
    • "์ดˆ๋ก์ƒ‰ ๋ฒ„ํŠผ์ด ํŒŒ๋ž€์ƒ‰ ๋ฒ„ํŠผ๋ณด๋‹ค ํด๋ฆญ๋ฅ ์ด ๋” ๋†’์„ ๊ฒƒ์ด๋‹ค."
  2. A/B ๊ทธ๋ฃน ๋ถ„ํ• 
    • ์‚ฌ์šฉ์ž ์ ˆ๋ฐ˜(A๊ทธ๋ฃน) → ๊ธฐ์กด UI ์‚ฌ์šฉ.
    • ๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜(B๊ทธ๋ฃน) → ์ƒˆ๋กœ์šด UI ์‚ฌ์šฉ.
  3. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„
    • ํด๋ฆญ๋ฅ , ์ „ํ™˜์œจ(Conversion Rate) ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ธก์ •.
    • ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๋ถ„์„.
  4. ๊ฒฐ๋ก  ๋„์ถœ ๋ฐ ๋ฐ˜์˜
    • B๊ทธ๋ฃน์˜ ํด๋ฆญ๋ฅ ์ด ๋†’์œผ๋ฉด, ์ƒˆ๋กœ์šด UI๋ฅผ ์ ์šฉ.

(3) A/B ํ…Œ์ŠคํŠธ ๋„๊ตฌ

  • Google Optimize: ๊ตฌ๊ธ€์ด ์ œ๊ณตํ•˜๋Š” A/B ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • Optimizely: UI ์‹คํ—˜ ๋ฐ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • VWO (Visual Website Optimizer): ์›น์‚ฌ์ดํŠธ UX ์ตœ์ ํ™” ๋„๊ตฌ.

๐Ÿ’ก ๊ฒฐ๋ก : A/B ํ…Œ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์‹คํ—˜์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์ ํ™”ํ•˜๊ณ , ์ œํ’ˆ ๊ฐœ์„  ๋ฐฉํ–ฅ์„ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ.


12. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing)

ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์ „์— ์ •์˜๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด, ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒฐํ•จ์„ ์ฐพ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

(1) ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

  • ์ •ํ˜•ํ™”๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ๋Š” ์ฐพ๊ธฐ ์–ด๋ ค์šด ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ.
  • ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž ํ–‰๋™์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ๋œ ์ œํ’ˆ์—์„œ ํŠนํžˆ ํšจ๊ณผ์ .

(2) ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๋ก 

  1. ์ฐจํ„ฐ(ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ) ์„ค์ •
    • ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰.
  2. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
    • ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ž…๋ ฅ์„ ์‹œ๋„ํ•˜๊ณ , ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ํ…Œ์ŠคํŠธ.
  3. ๋ฒ„๊ทธ ๋ถ„์„ ๋ฐ ๋ฌธ์„œํ™”
    • ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”.

๐Ÿ’ก ๊ฒฐ๋ก : ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์ •ํ˜•ํ™”๋œ ํ…Œ์ŠคํŠธ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ณ , ์‹ค์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ด๋‹ค.



1. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์›์น™ (Fundamental Principles of Testing)

Pretest์—์„œ๋Š” ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ์›์น™์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ‰๊ฐ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.

(1) ์ฃผ์š” ์›์น™๊ณผ ์„ค๋ช…

์›์น™์„ค๋ช…๊ทผ๊ฑฐ
ํ…Œ์ŠคํŠธ๋Š” ๊ฒฐํ•จ์ด ์กด์žฌํ•จ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฒฐํ•จ์ด ์—†์Œ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์—†๋‹ค ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด์—๋Š” ๊ฒฐํ•จ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ, ์™„๋ฒฝํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•จ ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜๋Š” ์—†์Œ
์™„๋ฒฝํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค ๋ชจ๋“  ์ž…๋ ฅ ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•จ ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ•„๋“œ์—์„œ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ 
์กฐ๊ธฐ ํ…Œ์ŠคํŒ…์ด ์ค‘์š”ํ•˜๋‹ค (Shift-Left Testing) ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ํ…Œ์ŠคํŠธํ• ์ˆ˜๋ก ๋น„์šฉ ์ ˆ๊ฐ ๊ฐ€๋Šฅ ๊ฒฐํ•จ ์ˆ˜์ • ๋น„์šฉ์€ ๊ฐœ๋ฐœ ํ›„๋ฐ˜์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์ฆ๊ฐ€ (Shift-Left Testing ๊ฐœ๋…)
๊ฒฐํ•จ ์ง‘์ค‘์˜ ๋ฒ•์น™ (80/20 ๋ฒ•์น™) ์ „์ฒด ์ฝ”๋“œ์˜ 20%๊ฐ€ 80%์˜ ๊ฒฐํ•จ์„ ํฌํ•จํ•จ ๊ณผ๊ฑฐ ๊ฒฐํ•จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋ฉด ํŠน์ • ๋ชจ๋“ˆ์—์„œ ๋งŽ์€ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝํ–ฅ
์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค ๋™์ผํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•ด์•ผ ํ•จ
ํ…Œ์ŠคํŠธ๋Š” ์ •ํ™ฉ(Context)์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค ์†Œํ”„ํŠธ์›จ์–ด์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ„ ์˜ˆ: ๊ธˆ์œต ์‹œ์Šคํ…œ์€ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”, ๊ฒŒ์ž„์€ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์š”
์˜ค๋ฅ˜ ๋ถ€์žฌ์˜ ๊ถค๋ณ€ ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ํ’ˆ์งˆ์ด ๋†’๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†์Œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ’ˆ์งˆ์ด ๋‚ฎ์€ ์†Œํ”„ํŠธ์›จ์–ด

(2) Pretest์—์„œ ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ

โœ… ํ…Œ์ŠคํŠธ ์›์น™ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ์‹œํ•˜๊ณ , ๊ทธ ์›์น™์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์„ ํƒํ•˜๋ผ๋Š” ๋ฌธ์ œ
โœ… "์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•œ๊ฐ€?" ๊ฐ™์€ ์‘์šฉํ˜• ๋ฌธ์ œ


2. ํ…Œ์ŠคํŠธ ์œ ํ˜• (Types of Testing)

Pretest์—์„œ๋Š” ๊ฐ ํ…Œ์ŠคํŠธ ์œ ํ˜•์˜ ๋ชฉ์ ๊ณผ ์ฐจ์ด์ ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ‰๊ฐ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.

(1) ์ฃผ์š” ํ…Œ์ŠคํŠธ ์œ ํ˜•

ํ…Œ์ŠคํŠธ ์œ ํ˜•๋ชฉ์ ์˜ˆ์‹œ
๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test) ๊ฐœ๋ณ„ ๋ชจ๋“ˆ/ํ•จ์ˆ˜์˜ ๋™์ž‘ ๊ฒ€์ฆ JUnit, PyTest ์‚ฌ์šฉ
ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Test) ๋ชจ๋“ˆ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ ํ™•์ธ API ํ˜ธ์ถœ ๊ฒ€์ฆ
์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ (System Test) ์ „์ฒด ์‹œ์Šคํ…œ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ๊ฒ€์ฆ ๊ธฐ๋Šฅ ๋ฐ ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
์ธ์ˆ˜ ํ…Œ์ŠคํŠธ (Acceptance Test) ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ ์—ฌ๋ถ€ ๊ฒ€์ฆ ์‹ค์ œ ์‚ฌ์šฉ์ž ๋˜๋Š” QA ํŒ€์ด ์ˆ˜ํ–‰
ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Test) ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ ์—†์ด ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ ํ›„ ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์‹คํ–‰
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test) ์‹œ์Šคํ…œ์˜ ์†๋„, ์•ˆ์ •์„ฑ ๊ฒ€์ฆ JMeter, LoadRunner ์‚ฌ์šฉ
๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Test) ์‹œ์Šคํ…œ์ด ๋ณด์•ˆ ์œ„ํ˜‘์— ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์ฆ OWASP ZAP ์‚ฌ์šฉ
ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Test) ์ •ํ•ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด ๊ฒฐํ•จ ๋ฐœ๊ฒฌ ๊ฒฝํ—˜ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ

(2) Pretest์—์„œ ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ

โœ… "ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์™€ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด์ ์€?" ๊ฐ™์€ ๊ฐœ๋… ๋น„๊ต ๋ฌธ์ œ
โœ… "์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ์ธก์ •ํ•ด์•ผ ํ•˜๋Š” ์ฃผ์š” ์ง€ํ‘œ๋Š”?" ๊ฐ™์€ ์‹ค๋ฌด์  ์‘์šฉ ๋ฌธ์ œ


3. ํ…Œ์ŠคํŠธ ์„ค๊ณ„ ๊ธฐ๋ฒ• (Test Design Techniques)

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ‰๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ ์ถœ์ œ ๊ฐ€๋Šฅ.

(1) ์ฃผ์š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•

๊ธฐ๋ฒ•์„ค๋ช…์˜ˆ์‹œ
๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning) ์ž…๋ ฅ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน(์œ ํšจ/๋ฌดํšจ)์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋Œ€ํ‘œ๊ฐ’์„ ํ…Œ์ŠคํŠธ 1~100 ์œ ํšจ → 50 ํ…Œ์ŠคํŠธ, 0/101 ๋ฌดํšจ
๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis) ์ตœ์†Œ/์ตœ๋Œ€ ๊ฒฝ๊ณ„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ 1~100 ์œ ํšจ → 0, 1, 100, 101 ํ…Œ์ŠคํŠธ
๊ฒฐ์ • ํ…Œ์ด๋ธ” ํ…Œ์ŠคํŠธ (Decision Table Testing) ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์กฐํ•ฉ์„ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํšŒ์›๊ฐ€์ž… ์‹œ "์ด๋ฉ”์ผ ์ธ์ฆ + ์•ฝ๊ด€ ๋™์˜" ์กฐํ•ฉ ํ…Œ์ŠคํŠธ
์ƒํƒœ ์ „์ด ํ…Œ์ŠคํŠธ (State Transition Testing) ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ ATM: "์นด๋“œ ์‚ฝ์ž… → PIN ์ž…๋ ฅ → ์ถœ๊ธˆ ์š”์ฒญ" ์ƒํƒœ ์ „์ด
์˜ค๋ฅ˜ ์ถ”์ • (Error Guessing) ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ถ€๋ถ„ ํ…Œ์ŠคํŠธ ๋กœ๊ทธ์ธ ์‹œ "๋นˆ ๊ฐ’ ์ž…๋ ฅ", "ํŠน์ˆ˜ ๋ฌธ์ž ์ž…๋ ฅ" ๋“ฑ ์‹œ๋„

(2) Pretest์—์„œ ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ

โœ… "๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ ํƒํ•˜์‹œ์˜ค" ๊ฐ™์€ ๋ฌธ์ œ
โœ… "๋™์น˜ ๋ถ„ํ• ์„ ์ ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ช‡ ๊ฐœ๋กœ ์ค„์–ด๋“œ๋Š”๊ฐ€?" ๊ฐ™์€ ๋ฌธ์ œ


4. ๊ฒฐํ•จ ๊ด€๋ฆฌ (Defect Management)

Pretest์—์„œ๋Š” ๊ฒฐํ•จ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ‰๊ฐ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.

(1) ๊ฒฐํ•จ ๋ผ์ดํ”„์‚ฌ์ดํด (Bug Lifecycle)

  1. New (์‹ ๊ทœ) → ๊ฒฐํ•จ ๋ฐœ๊ฒฌ ํ›„ ๋“ฑ๋ก๋จ.
  2. Assigned (ํ• ๋‹น๋จ) → ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฐฐ์ •๋จ.
  3. In Progress (์ˆ˜์ • ์ค‘) → ๊ฒฐํ•จ ์ˆ˜์ • ์ง„ํ–‰ ์ค‘.
  4. Fixed (์ˆ˜์ • ์™„๋ฃŒ) → ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ • ์™„๋ฃŒ.
  5. Retest (์žฌํ…Œ์ŠคํŠธ) → QA๊ฐ€ ๋‹ค์‹œ ํ…Œ์ŠคํŠธ.
  6. Closed (์ข…๋ฃŒ๋จ) → ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋จ.
  7. Reopened (์žฌ์˜คํ”ˆ๋จ) → ๊ฒฐํ•จ์ด ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•„ ๋‹ค์‹œ ์˜คํ”ˆ๋จ.

(2) ๊ฒฐํ•จ ์‹ฌ๊ฐ๋„(Severity) vs ์šฐ์„ ์ˆœ์œ„(Priority)

๊ตฌ๋ถ„์„ค๋ช…์˜ˆ์‹œ
์‹ฌ๊ฐ๋„ (Severity) ๊ฒฐํ•จ์ด ์‹œ์Šคํ…œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ Critical (์‹œ์Šคํ…œ ๋‹ค์šด) / Minor (UI ์˜คํƒ€)
์šฐ์„ ์ˆœ์œ„ (Priority) ์ˆ˜์ • ์‹œ๊ธ‰์„ฑ High (์ฆ‰์‹œ ์ˆ˜์ • ํ•„์š”) / Low (ํ–ฅํ›„ ์ˆ˜์ • ๊ฐ€๋Šฅ)

(3) Pretest์—์„œ ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ

โœ… "๋‹ค์Œ ์ค‘ ๊ฒฐํ•จ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค์˜ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋Š”?" ๊ฐ™์€ ๋ฌธ์ œ
โœ… "Critical์ด์ง€๋งŒ Low Priority์ธ ๋ฒ„๊ทธ์˜ ์˜ˆ์‹œ๋Š”?" ๊ฐ™์€ ์‘์šฉ ๋ฌธ์ œ


5. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ (Test Automation)

Pretest์—์„œ๋Š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ๊ณผ ์ฃผ์š” ๋„๊ตฌ์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ํ‰๊ฐ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.

(1) ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ

  • ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ.
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ์— ์ ํ•ฉ → ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ ์ž๋™์œผ๋กœ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆ.
  • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์†๋„ ์ฆ๊ฐ€ → ์ˆ˜๋™ ํ…Œ์ŠคํŠธ ๋Œ€๋น„ ํšจ์œจ์ .

(2) ์ฃผ์š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ

ํ…Œ์ŠคํŠธ ์œ ํ˜•๋„๊ตฌ์„ค๋ช…
์œ ๋‹› ํ…Œ์ŠคํŠธ JUnit, PyTest ์ฝ”๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
UI ํ…Œ์ŠคํŠธ Selenium, Cypress ๋ธŒ๋ผ์šฐ์ € UI ํ…Œ์ŠคํŠธ
API ํ…Œ์ŠคํŠธ Postman, RestAssured REST API ํ…Œ์ŠคํŠธ
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ JMeter, Locust ๋ถ€ํ•˜/์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

(3) Pretest์—์„œ ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ

โœ… "Selenium์€ ์–ด๋–ค ์œ ํ˜•์˜ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š”๊ฐ€?" ๊ฐ™์€ ๊ฐœ๋… ๋ฌธ์ œ
โœ… "์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์žฅ์ ์€?" ๊ฐ™์€ ์„œ์ˆ ํ˜• ๋ฌธ์ œ


๐Ÿ”ฅ ๊ฒฐ๋ก : ์˜จ๋ผ์ธ Pretest์— ์ถœ์ œ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๊ฐœ๋…๋“ค

โœ… ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์›์น™
โœ… ํ…Œ์ŠคํŠธ ์œ ํ˜•๊ณผ ์ฐจ์ด์ 
โœ… ํ…Œ์ŠคํŠธ ์„ค๊ณ„ ๊ธฐ๋ฒ• (๋™์น˜ ๋ถ„ํ• , ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ ๋“ฑ)
โœ… ๊ฒฐํ•จ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค (Bug Lifecycle, Severity vs Priority)
โœ… ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋ฐ ์ฃผ์š” ๋„๊ตฌ


1. ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์›์น™ ๋ฌธ์ œ

๋ฌธ์ œ 1. ๋‹ค์Œ ์ค‘ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์›์น™์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ๊ณ„์† ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ์†Œํ”„ํŠธ์›จ์–ด์— ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํ’ˆ์งˆ์ด ๋†’๋‹ค๊ณ  ๋‹จ์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  4. ํ…Œ์ŠคํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„์—๋งŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์†Œํ”„ํŠธ์›จ์–ด์— ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ํ’ˆ์งˆ์ด ๋†’๋‹ค๊ณ  ๋‹จ์ •ํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋“  ๊ฒฐํ•จ์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉฐ, ์™„๋ฒฝํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • โ‘ก ํ‹€๋ฆผ: ๋™์ผํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์–ด๋ ค์šด ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ‘ฃ ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ๋„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค (Shift-Left Testing ๊ฐœ๋…).
  • โ‘ข ์ •๋‹ต: ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฒฐํ•จ์ด ์—†์–ด๋„ ํ’ˆ์งˆ์ด ๋‚ฎ์€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

2. ํ…Œ์ŠคํŠธ ์œ ํ˜• ๋ฌธ์ œ

๋ฌธ์ œ 2. ๋‹ค์Œ ์ค‘ ์‹œ์Šคํ…œ์ด ์˜ˆ์ƒ๋œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ๋Š”?

  1. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (Unit Test)
  2. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (Integration Test)
  3. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test)
  4. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Test)

โœ… ์ •๋‹ต: โ‘ข ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test)

๐Ÿ” ํ•ด์„ค:

  • โ‘  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: ๊ฐœ๋ณ„ ๋ชจ๋“ˆ/ํ•จ์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆ.
  • โ‘ก ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ: ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ์ •์ƒ์ ์œผ๋กœ ์—ฐ๋™๋˜๋Š”์ง€ ํ™•์ธ.
  • โ‘ข ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ: ์‹œ์Šคํ…œ์˜ ์†๋„, ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ์„ ํ‰๊ฐ€ํ•˜์—ฌ ์˜ˆ์ƒ๋œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ๊ฒ€์ฆ (์ •๋‹ต!).
  • โ‘ฃ ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ: ์‚ฌ์ „์— ์ •ํ•ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด ํ…Œ์Šคํ„ฐ์˜ ์ง๊ด€๊ณผ ๊ฒฝํ—˜์„ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ.

3. ํ…Œ์ŠคํŠธ ์„ค๊ณ„ ๊ธฐ๋ฒ• ๋ฌธ์ œ

๋ฌธ์ œ 3. "ํšŒ์› ๊ฐ€์ž… ์‹œ ๋‚˜์ด ์ž…๋ ฅ ํ•„๋“œ๋Š” 1~100๊นŒ์ง€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค." ์ด ๊ฒฝ์šฐ, ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. 0, 50, 100, 101
  2. 1, 50, 100
  3. -1, 0, 1, 99, 100, 101
  4. 10, 20, 30, 40

โœ… ์ •๋‹ต: โ‘ข -1, 0, 1, 99, 100, 101

๐Ÿ” ํ•ด์„ค:

  • ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis) ๋Š” ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’ ๊ทผ์ฒ˜์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์›์น™์— ๋”ฐ๋ผ ๊ฒฝ๊ณ„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • โ‘ , โ‘ก ํ‹€๋ฆผ: 0, 50, 100์€ ํฌํ•จ๋˜์—ˆ์ง€๋งŒ, ๊ฒฝ๊ณ„ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ์ธ ์ตœ์†Œ/์ตœ๋Œ€๊ฐ’ ๋ฐ”๋กœ ๋ฐ”๊นฅ์ชฝ(-1, 101) ์ด ํฌํ•จ๋˜์ง€ ์•Š์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ๋ฌด์ž‘์œ„ ์ˆซ์ž๋กœ ํ…Œ์ŠคํŠธํ•˜์—ฌ ๊ฒฝ๊ณ„๊ฐ’ ๊ฒ€์ฆ์„ ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ.
  • โ‘ข ์ •๋‹ต: ์ตœ์†Œ๊ฐ’(1), ์ตœ๋Œ€๊ฐ’(100), ์ตœ์†Œ๊ฐ’์˜ ์ง์ „(-1, 0), ์ตœ๋Œ€๊ฐ’์˜ ์งํ›„(101)๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ€์žฅ ์™„๋ฒฝํ•œ ๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.

4. ๊ฒฐํ•จ ๊ด€๋ฆฌ ๋ฌธ์ œ

๋ฌธ์ œ 4. ๋‹ค์Œ ์ค‘ ๊ฒฐํ•จ์˜ ์‹ฌ๊ฐ๋„(Severity)์™€ ์šฐ์„ ์ˆœ์œ„(Priority)์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ์‹ฌ๊ฐ๋„๊ฐ€ ๋†’์•„๋„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค.
  2. ์‹ฌ๊ฐ๋„๊ฐ€ ๋‚ฎ์•„๋„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์„ ์ˆ˜ ์žˆ๋‹ค.
  3. ์‹ฌ๊ฐ๋„๋Š” ์ฃผ๋กœ QA ํŒ€์ด ๊ฒฐ์ •ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํŒ€๊ณผ ๊ฐœ๋ฐœํŒ€์ด ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์‹ฌ๊ฐ๋„๊ฐ€ ๋†’์€ ๊ฒฐํ•จ์€ ํ•ญ์ƒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

โœ… ์ •๋‹ต: โ‘ฃ ์‹ฌ๊ฐ๋„๊ฐ€ ๋†’์€ ๊ฒฐํ•จ์€ ํ•ญ์ƒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ์ •๋‹ต: ์˜ˆ๋ฅผ ๋“ค์–ด, ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜(Critical Bug)๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ, ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„ ์ˆ˜๋„ ์žˆ์Œ.
  • โ‘ก ์ •๋‹ต: UI ์˜คํƒ€ ๊ฐ™์€ ๊ฒฝ๋ฏธํ•œ ์˜ค๋ฅ˜(Minor Bug) ์ด๋”๋ผ๋„, ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ ์ „์— ๊ธด๊ธ‰ ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์„ ์ˆ˜ ์žˆ์Œ.
  • โ‘ข ์ •๋‹ต: ์‹ฌ๊ฐ๋„(Severity)๋Š” ๋ณดํ†ต QA ํŒ€์ด ๊ฒฐ์ •ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„(Priority)๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์ ์ธ ํŒ๋‹จ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ์‹ฌ๊ฐ๋„๊ฐ€ ๋†’์•„๋„ ๋น„์ฆˆ๋‹ˆ์Šค์ ์œผ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Œ.

5. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 5. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์ฃผ์š” ์žฅ์ ์œผ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
  2. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Test)๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ชจ๋“  ์œ ํ˜•์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์™„์ „ํžˆ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ํ…Œ์ŠคํŠธ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ๋ชจ๋“  ์œ ํ˜•์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์™„์ „ํžˆ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ์ •๋‹ต: ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜์—ฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ด.
  • โ‘ก ์ •๋‹ต: ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
  • โ‘ข ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ, UX ํ…Œ์ŠคํŠธ, ์ง๊ด€์ด ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ž๋™ํ™”ํ•˜๊ธฐ ์–ด๋ ค์›€.
  • โ‘ฃ ์ •๋‹ต: ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ํ•ญ์ƒ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.

6. API ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 6. API ํ…Œ์ŠคํŠธ์—์„œ HTTP ์ƒํƒœ ์ฝ”๋“œ 500์ด ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค๋ฉด, ์ด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€?

  1. ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  2. ์ธ์ฆ์ด ์‹คํŒจํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  4. ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ฃ ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉด 200 OK๊ฐ€ ๋ฐ˜ํ™˜๋จ.
  • โ‘ก ํ‹€๋ฆผ: ์ธ์ฆ ์‹คํŒจ๋Š” 401 Unauthorized ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋จ.
  • โ‘ข ํ‹€๋ฆผ: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์˜ค๋ฅ˜๋Š” 400 Bad Request ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋จ.
  • โ‘ฃ ์ •๋‹ต: 500 Internal Server Error๋Š” ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ์ƒํƒœ ์ฝ”๋“œ.

๐Ÿ”ฅ ๊ฒฐ๋ก : Pretest ๋Œ€๋น„๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ์ •๋ฆฌ

โœ… ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ์›์น™ – Shift-Left Testing, ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค ์ดํ•ด
โœ… ํ…Œ์ŠคํŠธ ์œ ํ˜• – ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ฐจ์ด์  ์ˆ™์ง€
โœ… ํ…Œ์ŠคํŠธ ์„ค๊ณ„ ๊ธฐ๋ฒ• – ๋™์น˜ ๋ถ„ํ• , ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ ์‹ค๋ฌด ์ ์šฉ ๋Šฅ๋ ฅ ํ•„์š”
โœ… ๊ฒฐํ•จ ๊ด€๋ฆฌ – Bug Lifecycle๊ณผ Severity vs Priority ์ฐจ์ด์  ์ดํ•ด
โœ… ์ž๋™ํ™” ํ…Œ์ŠคํŠธ – Selenium, JUnit ๋“ฑ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์žฅ์  ๋ฐ ํ•œ๊ณ„ ์ดํ•ด
โœ… API ํ…Œ์ŠคํŠธ – HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ API ํ…Œ์ŠคํŠธ ๋„๊ตฌ (Postman, RestAssured) ์ˆ™์ง€


7. ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• ๋ฌธ์ œ

๋ฌธ์ œ 7. ๋‹ค์Œ ์ค‘ ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ๋ฌธ์žฅ(Statement) ์ปค๋ฒ„๋ฆฌ์ง€
  2. ๋™์น˜ ๋ถ„ํ• (Equivalence Partitioning)
  3. ๋ถ„๊ธฐ(Branch) ์ปค๋ฒ„๋ฆฌ์ง€
  4. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage)

โœ… ์ •๋‹ต: โ‘ก ๋™์น˜ ๋ถ„ํ• (Equivalence Partitioning)

๐Ÿ” ํ•ด์„ค:

  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ๋Š” ๋‚ด๋ถ€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ, ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๊ฐ’๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•์ด์•ผ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€, ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€, ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ์†ํ•จ.
  • โ‘ก ์ •๋‹ต: ๋™์น˜ ๋ถ„ํ• ์€ ์ž…๋ ฅ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ๋ฃน ๋‚ด ๋Œ€ํ‘œ ๊ฐ’์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ์— ํ•ด๋‹นํ•จ.

8. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 8. ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ ํ›„, ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ๋Š”?

  1. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ
  2. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
  3. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ
  4. ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ

โœ… ์ •๋‹ต: โ‘ข ํšŒ๊ท€ ํ…Œ์ŠคํŠธ (Regression Testing)

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์Šคํ„ฐ๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•.
  • โ‘ก ํ‹€๋ฆผ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ณ„ ์ฝ”๋“œ ๋ชจ๋“ˆ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • โ‘ข ์ •๋‹ต: ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„์—๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • โ‘ฃ ํ‹€๋ฆผ: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ์ด ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.

9. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 9. ๋‹ค์Œ ์ค‘ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ์ธก์ •ํ•ด์•ผ ํ•  ํ•ต์‹ฌ ์ง€ํ‘œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์€?

  1. ์‘๋‹ต ์‹œ๊ฐ„ (Response Time)
  2. ์ฒ˜๋ฆฌ๋Ÿ‰ (Throughput)
  3. ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ (Code Coverage)
  4. CPU ์‚ฌ์šฉ๋ฅ  (CPU Utilization)

โœ… ์ •๋‹ต: โ‘ข ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ (Code Coverage)

๐Ÿ” ํ•ด์„ค:

  • โ‘  ์ •๋‹ต: ์‘๋‹ต ์‹œ๊ฐ„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.
  • โ‘ก ์ •๋‹ต: ์ฒ˜๋ฆฌ๋Ÿ‰์€ ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ๋˜๋Š” ์š”์ฒญ ์ˆ˜.
  • โ‘ข ํ‹€๋ฆผ: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ์˜ ์ธก์ • ์ง€ํ‘œ๋กœ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์™€ ๊ด€๋ จ ์—†์Œ.
  • โ‘ฃ ์ •๋‹ต: CPU ์‚ฌ์šฉ๋ฅ ์€ ์„œ๋ฒ„์˜ ์ž์› ์†Œ๋น„๋Ÿ‰์„ ์ธก์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์„ฑ๋Šฅ ์ง€ํ‘œ.

10. SQL Injection ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 10. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด SQL Injection ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•œ์ง€ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ์ž…๋ ฅ๊ฐ’์€?

  1. SELECT * FROM users WHERE username = 'admin' AND password = 'password123';
  2. ' OR '1'='1' --
  3. INSERT INTO users (username, password) VALUES ('hacker', 'hack123');
  4. DELETE FROM users WHERE username = 'admin';

โœ… ์ •๋‹ต: โ‘ก ' OR '1'='1' --

๐Ÿ” ํ•ด์„ค:

  • SQL Injection ๊ณต๊ฒฉ์€ ์•…์˜์ ์ธ SQL ๋ฌธ์„ ์ฃผ์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ด์•ผ.
  • โ‘  ํ‹€๋ฆผ: ์ผ๋ฐ˜์ ์ธ SQL ์ฟผ๋ฆฌ์ผ ๋ฟ, ๊ณต๊ฒฉ ํŒจํ„ด์ด ์•„๋‹˜.
  • โ‘ก ์ •๋‹ต: ' OR '1'='1' -- ํŒจํ„ด์€ ํ•ญ์ƒ ์ฐธ์ด ๋˜๋Š” ์กฐ๊ฑด์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋ฌด๋‹จ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋Œ€ํ‘œ์ ์ธ SQL Injection ๊ณต๊ฒฉ ๋ฐฉ์‹.
  • โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ๋‹จ์ˆœ SQL ๋ฌธ์œผ๋กœ, ์ง์ ‘์ ์ธ SQL Injection ๊ณต๊ฒฉ์ด ์•„๋‹˜.

11. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ ๋ฌธ์ œ

๋ฌธ์ œ 11. ํ…Œ์ŠคํŠธ๋ฅผ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์š” ๋ชฉ์ ์€?

  1. ์šด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฒฐํ•จ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ
  2. ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ์š”์ฒญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ
  3. ํ…Œ์ŠคํŠธ๋กœ ์ธํ•ด ์šด์˜ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  4. ๊ฐœ๋ฐœ์ž์™€ QA๊ฐ€ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ

โœ… ์ •๋‹ต: โ‘ข ํ…Œ์ŠคํŠธ๋กœ ์ธํ•ด ์šด์˜ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ์šด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ณด์•ˆ ๋ฐ ๋ฐ์ดํ„ฐ ์†์ƒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ก ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ๋Š” ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•ˆ ๋˜๋ฉฐ, ๋ณ„๋„์˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ.
  • โ‘ข ์ •๋‹ต: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋ถ„๋ฆฌํ•˜๋ฉด, ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์‹ค์ œ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ๊ฐœ๋ฐœ์ž์™€ QA๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์šด์˜ ํ™˜๊ฒฝ๊ณผ์˜ ๊ฒฉ๋ฆฌ๊ฐ€ ๋” ์ค‘์š”ํ•œ ์ด์œ ์ž„.

12. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ „๋žต ๋ฌธ์ œ

๋ฌธ์ œ 12. ๋‹ค์Œ ์ค‘ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„์ž… ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š”?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ 100% ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.
  2. ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ž๋™ํ™”ํ•ด์•ผ ํ•œ๋‹ค.
  3. ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋Š” ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  4. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ํ•ญ์ƒ ๋” ํšจ๊ณผ์ ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ž๋™ํ™”ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: 100% ์ž๋™ํ™”๋Š” ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•จ. UX ํ…Œ์ŠคํŠธ๋‚˜ ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ.
  • โ‘ก ์ •๋‹ต: ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ํšŒ๊ท€ ํ…Œ์ŠคํŠธ, API ํ…Œ์ŠคํŠธ ๋“ฑ ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ .
  • โ‘ข ํ‹€๋ฆผ: ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๊ฒฝ์šฐ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•จ.
  • โ‘ฃ ํ‹€๋ฆผ: ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๊ฐ€ ํ•ญ์ƒ ๋” ํšจ๊ณผ์ ์ธ ๊ฒƒ์€ ์•„๋‹˜. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ, UI ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Œ.

13. ๊ฒฐํ•จ ์žฌํ˜„์„ฑ ๋ฌธ์ œ

๋ฌธ์ œ 13. QA๊ฐ€ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ, ๊ฒฐํ•จ์ด ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋„๋ก ํ•˜๋Š” ๊ณผ์ •์„ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?

  1. ๊ฒฐํ•จ ๋ณด๊ณ  (Defect Reporting)
  2. ๊ฒฐํ•จ ์ถ”์  (Defect Tracking)
  3. ๊ฒฐํ•จ ์žฌํ˜„ (Defect Reproduction)
  4. ๊ฒฐํ•จ ์ข…๋ฃŒ (Defect Closure)

โœ… ์ •๋‹ต: โ‘ข ๊ฒฐํ•จ ์žฌํ˜„ (Defect Reproduction)

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ๊ฒฐํ•จ ๋ณด๊ณ ๋Š” ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•œ ํ›„ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ณผ์ •.
  • โ‘ก ํ‹€๋ฆผ: ๊ฒฐํ•จ ์ถ”์ ์€ ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •.
  • โ‘ข ์ •๋‹ต: ๊ฒฐํ•จ ์žฌํ˜„์€ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •.
  • โ‘ฃ ํ‹€๋ฆผ: ๊ฒฐํ•จ ์ข…๋ฃŒ๋Š” ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋˜์—ˆ์„ ๋•Œ ์ตœ์ข…์ ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ๋‹จ๊ณ„.

๐Ÿ”ฅ ์˜จ๋ผ์ธ Pretest ๋Œ€๋น„ ํ•ต์‹ฌ ์ •๋ฆฌ

โœ… ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ vs ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด ์ดํ•ดํ•˜๊ธฐ
โœ… ํšŒ๊ท€ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, SQL Injection ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๊ฐœ๋… ์ˆ™์ง€
โœ… ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ์˜ ์ค‘์š”์„ฑ๊ณผ ์šด์˜ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ ์ด์œ  ์ดํ•ดํ•˜๊ธฐ
โœ… ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ „๋žต – 100% ์ž๋™ํ™”๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ์ ์šฉ
โœ… ๊ฒฐํ•จ ์žฌํ˜„์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๊ฒฐํ•จ ์ถ”์  ํ”„๋กœ์„ธ์Šค ์ตํžˆ๊ธฐ


14. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ƒ๋ช…์ฃผ๊ธฐ(SDLC) ๋ฌธ์ œ

๋ฌธ์ œ 14. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ƒ๋ช…์ฃผ๊ธฐ(SDLC)์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ชจ๋ธ์€?

  1. V-๋ชจ๋ธ (V-Model)
  2. ํญํฌ์ˆ˜ ๋ชจ๋ธ (Waterfall Model)
  3. ์• ์ž์ผ ๋ชจ๋ธ (Agile Model)
  4. ๋‚˜์„ ํ˜• ๋ชจ๋ธ (Spiral Model)

โœ… ์ •๋‹ต: โ‘ข ์• ์ž์ผ ๋ชจ๋ธ (Agile Model)

๐Ÿ” ํ•ด์„ค:

  • โ‘  V-๋ชจ๋ธ: ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋งˆ๋‹ค ๋Œ€์‘ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค๊ณ„๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹œ์ž‘๋จ.
  • โ‘ก ํญํฌ์ˆ˜ ๋ชจ๋ธ: ํ•œ ๋‹จ๊ณ„๊ฐ€ ๋๋‚˜์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ์ง„ํ–‰๋˜๋ฏ€๋กœ ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ ์‹œ์ž‘๋จ.
  • โ‘ข ์ •๋‹ต – ์• ์ž์ผ ๋ชจ๋ธ: ์• ์ž์ผ ๊ฐœ๋ฐœ์—์„œ๋Š” "Shift-Left Testing" ๊ฐœ๋…์„ ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜ํ–‰๋จ.
  • โ‘ฃ ๋‚˜์„ ํ˜• ๋ชจ๋ธ: ๋ฆฌ์Šคํฌ ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฐ˜๋ณต๋˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ํฌํ•จ๋˜์ง€๋Š” ์•Š์Œ.

15. ๊ฒฐํ•จ ์‹ฌ๊ฐ๋„ & ์šฐ์„ ์ˆœ์œ„ ๋ฌธ์ œ

๋ฌธ์ œ 15. ๋‹ค์Œ ์ค‘ "์‹ฌ๊ฐ๋„(Severity)๋Š” ๋†’์ง€๋งŒ, ์šฐ์„ ์ˆœ์œ„(Priority)๋Š” ๋‚ฎ์€" ๊ฒฐํ•จ ์‚ฌ๋ก€๋กœ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์—†์Œ.
  2. ํŠน์ • ๋ธŒ๋ผ์šฐ์ €(์˜ˆ: Internet Explorer)์—์„œ UI๊ฐ€ ๊นจ์ง€์ง€๋งŒ, ์„œ๋น„์Šค ์‚ฌ์šฉ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Œ.
  3. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ œ ์‹œ ์นด๋“œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•ฑ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋จ.
  4. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ, ํ™•์ธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ.

โœ… ์ •๋‹ต: โ‘ก ํŠน์ • ๋ธŒ๋ผ์šฐ์ €(์˜ˆ: Internet Explorer)์—์„œ UI๊ฐ€ ๊นจ์ง€์ง€๋งŒ, ์„œ๋น„์Šค ์‚ฌ์šฉ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Œ.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ๋กœ๊ทธ์ธ ๋ถˆ๊ฐ€๋Šฅ → ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‹ฌ๊ฐ๋„(Severity) ๋†’๊ณ , ์šฐ์„ ์ˆœ์œ„(Priority)๋„ ๋†’์Œ.
  • โ‘ก ์ •๋‹ต: UI๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋Š” ์‹œ๊ฐ์ ์ธ ์˜ํ–ฅ๋งŒ ์žˆ์„ ๋ฟ, ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ์Œ.
  • โ‘ข ํ‹€๋ฆผ: ๊ฒฐ์ œ ์‹œ ์•ฑ์ด ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ → ๋น„์ฆˆ๋‹ˆ์Šค์ ์œผ๋กœ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ํ›„ ํ™•์ธ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์œผ๋ฉด UX์— ์˜ํ–ฅ์€ ์ฃผ์ง€๋งŒ, ๊ธด๊ธ‰ ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€๋Š” ์•Š์Œ (์ค‘๊ฐ„ ์šฐ์„ ์ˆœ์œ„ ๊ฐ€๋Šฅ).

16. API ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 16. REST API์—์„œ HTTP ์ƒํƒœ ์ฝ”๋“œ 404 Not Found๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€?

  1. ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ.
  2. ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค(์˜ˆ: URL)๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ.
  3. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋จ.
  4. ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ.

โœ… ์ •๋‹ต: โ‘ก ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค(์˜ˆ: URL)๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ 400 Bad Request ๋ฐ˜ํ™˜.
  • โ‘ก ์ •๋‹ต: 404 Not Found๋Š” ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ, ํŽ˜์ด์ง€ ๋“ฑ)๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋จ.
  • โ‘ข ํ‹€๋ฆผ: ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฉด 200 OK ๋ฐ˜ํ™˜.
  • โ‘ฃ ํ‹€๋ฆผ: ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋Š” 500 Internal Server Error ๋ฐ˜ํ™˜.

17. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 17. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ(Exploratory Testing)์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€?

  1. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์–ด ์‹คํ–‰ํ•˜๊ธฐ ์‰ฝ๋‹ค.
  2. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
  3. ์ž๋™ํ™”ํ•˜๊ธฐ ์‰ฌ์›Œ ํ…Œ์ŠคํŠธ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’ ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์ „์— ์ •ํ•ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ๋ฐ”ํƒ•์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • โ‘ก ์ •๋‹ต: ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•œ ์‚ฌ์šฉ์ž ํ–‰๋™์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ .
  • โ‘ข ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์ž๋™ํ™”ํ•˜๊ธฐ ์–ด๋ ค์›€.
  • โ‘ฃ ํ‹€๋ฆผ: ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’ ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ.

18. CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ์ œ

๋ฌธ์ œ 18. ์ง€์†์  ํ†ตํ•ฉ(Continuous Integration, CI)์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š”?

  1. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์šด์˜ ํ™˜๊ฒฝ์— ์ฆ‰์‹œ ๋ฐฐํฌ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  2. ๊ฐœ๋ฐœ์ž ๊ฐ„ ์ฝ”๋“œ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  3. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  4. ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š” ์—†์ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ.

โœ… ์ •๋‹ต: โ‘ข ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด์„œ.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: CI/CD์—์„œ๋Š” ์šด์˜ ๋ฐฐํฌ ์ด์ „์— ๊ฒ€์ฆ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ, CI๋Š” ๋ฐฐํฌ๋ณด๋‹ค๋Š” ์ž๋™ ํ…Œ์ŠคํŠธ ๋ฐ ์ฝ”๋“œ ํ†ตํ•ฉ์— ์ง‘์ค‘๋จ.
  • โ‘ก ํ‹€๋ฆผ: ์ฝ”๋“œ ์ถฉ๋Œ ๋ฐฉ์ง€๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(Git)์ด ๋‹ด๋‹นํ•˜๋ฉฐ, CI์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์•„๋‹˜.
  • โ‘ข ์ •๋‹ต: CI์—์„œ๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ .
  • โ‘ฃ ํ‹€๋ฆผ: CI๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•จ.

19. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฌธ์ œ

๋ฌธ์ œ 19. ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š”?

  1. ๊ฐœ๋ฐœ์ž์™€ QA๊ฐ€ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด.
  2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๊ฐ€ ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์žฌํ˜„๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด.
  3. ํ…Œ์ŠคํŠธ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๊ธฐ ์œ„ํ•ด.
  4. ์šด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๊ฐ€ ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์žฌํ˜„๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ๊ฐœ๋ฐœ์ž์™€ QA๊ฐ€ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์€ ์•„๋‹ˆ๋ฉฐ, ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.
  • โ‘ก ์ •๋‹ต: ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์‹œ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ์ด ์šด์˜์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง.
  • โ‘ข ํ‹€๋ฆผ: ์˜คํžˆ๋ ค ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ์šด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ๋ฐ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Œ.

๐Ÿ”ฅ ์˜จ๋ผ์ธ Pretest ๋Œ€๋น„ ํ•ต์‹ฌ ์ •๋ฆฌ (์ถ”๊ฐ€)

โœ… SDLC์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ชจ๋ธ์€ ์• ์ž์ผ ๋ชจ๋ธ
โœ… ์‹ฌ๊ฐ๋„(Severity) vs ์šฐ์„ ์ˆœ์œ„(Priority) ์ฐจ์ด ๋ฐ ์‚ฌ๋ก€ ๋ถ„์„
โœ… REST API ์ƒํƒœ ์ฝ”๋“œ (404 Not Found, 500 Internal Server Error ๋“ฑ) ์ดํ•ด
โœ… ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ 
โœ… CI/CD์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ  – ๋น ๋ฅธ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
โœ… ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•์˜ ์ด์œ  – ๋ฌธ์ œ ์žฌํ˜„์„ฑ ํ™•๋ณด


20. ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 20. ๋‹ค์Œ ์ค‘ ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning)
  2. ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage)
  3. ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis)
  4. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing)

โœ… ์ •๋‹ต: โ‘ก ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage)

๐Ÿ” ํ•ด์„ค:

  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ๋Š” ์ฝ”๋“œ ๋‚ด๋ถ€ ๋กœ์ง์„ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•์ด์•ผ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ๋™์น˜ ๋ถ„ํ• , ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„, ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ํ•ด๋‹น.
  • โ‘ก ์ •๋‹ต: ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ์ฝ”๋“œ์˜ ๋ชจ๋“  ๋ฌธ์žฅ์ด ์ตœ์†Œํ•œ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•.

21. ์• ์ž์ผ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 21. ์• ์ž์ผ(Agile) ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์›์น™์€?

  1. ๊ฐœ๋ฐœ์ด ๋๋‚œ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœํŒ€๊ณผ QAํŒ€์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  3. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ์• ์ž์ผ ๊ฐœ๋ฐœ์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
  4. ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ(Sprint)๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ฃ ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ(Sprint)๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: ์• ์ž์ผ์—์„œ๋Š” ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋จ (Shift-Left Testing).
  • โ‘ก ํ‹€๋ฆผ: ์• ์ž์ผ์—์„œ๋Š” ๊ฐœ๋ฐœํŒ€๊ณผ QAํŒ€์ด ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ˜‘์—…ํ•ด์•ผ ํ•จ.
  • โ‘ข ํ‹€๋ฆผ: ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ์• ์ž์ผ ๊ฐœ๋ฐœ์—์„œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ (ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•ด์•ผ ๋น ๋ฅธ ๋ฐฐํฌ ๊ฐ€๋Šฅ).
  • โ‘ฃ ์ •๋‹ต: ์• ์ž์ผ์—์„œ๋Š” ๋ฐ˜๋ณต์ ์ธ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ(Sprint)๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ์›์น™.

22. ๊ฒฐํ•จ ์ถ”์  ๋„๊ตฌ ๋ฌธ์ œ

๋ฌธ์ œ 22. ๋‹ค์Œ ์ค‘ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐํ•จ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋„๊ตฌ๋Š”?

  1. Jenkins
  2. Postman
  3. Jira
  4. Selenium

โœ… ์ •๋‹ต: โ‘ข Jira

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: Jenkins๋Š” CI/CD ์ž๋™ํ™” ๋„๊ตฌ.
  • โ‘ก ํ‹€๋ฆผ: Postman์€ API ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • โ‘ข ์ •๋‹ต: Jira๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐํ•จ์„ ์ถ”์ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ.
  • โ‘ฃ ํ‹€๋ฆผ: Selenium์€ UI ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

23. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ

๋ฌธ์ œ 23. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠธ๋žœ์žญ์…˜์ด ACID ์›์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”?

  1. SQL Injection ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ
  2. ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  3. ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ

โœ… ์ •๋‹ต: โ‘ก ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ

๐Ÿ” ํ•ด์„ค:

  • ACID ์›์น™์ด๋ž€?
    1. Atomicity (์›์ž์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์™„์ „ํžˆ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ ์ „ํ˜€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ.
    2. Consistency (์ผ๊ด€์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋œ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์–ด์•ผ ํ•จ.
    3. Isolation (๊ณ ๋ฆฝ์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๋„๋ก ๋ณด์žฅ.
    4. Durability (์ง€์†์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ.
  • โ‘  ํ‹€๋ฆผ: SQL Injection ๋ฐฉ์ง€๋Š” ๋ณ„๋„์˜ ๋ณด์•ˆ ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•จ.
  • โ‘ข ํ‹€๋ฆผ: ACID ์›์น™์€ ์„ฑ๋Šฅ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์—ญํ• .
  • โ‘ฃ ํ‹€๋ฆผ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ์™€๋Š” ๊ด€๋ จ์ด ์—†์Œ.

24. UI ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 24. UI ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋„๊ตฌ๋Š”?

  1. JMeter
  2. Selenium
  3. SonarQube
  4. Burp Suite

โœ… ์ •๋‹ต: โ‘ก Selenium

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: JMeter๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • โ‘ก ์ •๋‹ต: Selenium์€ ์›น UI ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋กœ, ๋ฒ„ํŠผ ํด๋ฆญ, ํผ ์ž…๋ ฅ ๋“ฑ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ข ํ‹€๋ฆผ: SonarQube๋Š” ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ.
  • โ‘ฃ ํ‹€๋ฆผ: Burp Suite๋Š” ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

25. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 25. OWASP Top 10์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜์ธ "XSS(Cross-Site Scripting)"์˜ ์ฃผ์š” ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์€?

  1. SQL Injection์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ๋นผ๋‚ด๋Š” ๊ณต๊ฒฉ
  2. ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ณ  ์›น ํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ
  3. ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ
  4. ๊ด€๋ฆฌ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…(Brute Force)ํ•˜์—ฌ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณต๊ฒฉ

โœ… ์ •๋‹ต: โ‘ก ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ณ  ์›น ํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: SQL Injection์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ๊ณต๊ฒฉ.
  • โ‘ก ์ •๋‹ต: XSS(Cross-Site Scripting)๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํžˆ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š์•„ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•.
  • โ‘ข ํ‹€๋ฆผ: ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋Š” ๊ฒƒ์€ ์Šค๋‹ˆํ•‘ ๊ณต๊ฒฉ.
  • โ‘ฃ ํ‹€๋ฆผ: ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…ํ•˜๋Š” ๊ณต๊ฒฉ์€ Brute Force ๊ณต๊ฒฉ.

26. ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€ ๋ฌธ์ œ

๋ฌธ์ œ 26. ๋‹ค์Œ ์ค‘ ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€(Exit Criteria)์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€?

  1. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ 100%๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”๊ฐ€?
  2. ์ฃผ์š” ๊ฒฐํ•จ์ด ๋ชจ๋‘ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”๊ฐ€?
  3. ํ”„๋กœ์ ํŠธ ์ผ์ •์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”๊ฐ€?
  4. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ๊ฐ€?

โœ… ์ •๋‹ต: โ‘ฃ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ๊ฐ€?

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€(Exit Criteria) ์€ ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ.
  • โ‘  ์ •๋‹ต: ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•จ.
  • โ‘ก ์ •๋‹ต: ์ฃผ์š” ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€๋„ ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€ ์ค‘ ํ•˜๋‚˜.
  • โ‘ข ์ •๋‹ต: ํ”„๋กœ์ ํŠธ ์ผ์ •์— ๋งž์ถฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ๊ณผ ์šด์˜ ํ™˜๊ฒฝ์ด ๋ฐ˜๋“œ์‹œ ๋™์ผํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜.

๐Ÿ”ฅ Pretest ๋Œ€๋น„ ์ถ”๊ฐ€ ์ •๋ฆฌ

โœ… ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ vs ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด ์ดํ•ด
โœ… ์• ์ž์ผ ๋ชจ๋ธ์—์„œ๋Š” ์ง€์†์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•ต์‹ฌ ์›์น™
โœ… ๊ฒฐํ•จ ์ถ”์  ๋„๊ตฌ (Jira ๋“ฑ)์˜ ์—ญํ•  ์ˆ™์ง€
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์˜ ACID ์›์น™ ์ดํ•ด
โœ… UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ (Selenium) ์ดํ•ด
โœ… ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ XSS(Cross-Site Scripting) ๊ฐœ๋… ์ˆ™์ง€
โœ… ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ๊ธฐ์ค€(Exit Criteria) ๋ช…ํ™•ํžˆ ์ดํ•ด


27. ์ •์  ํ…Œ์ŠคํŠธ vs ๋™์  ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 27. ๋‹ค์Œ ์ค‘ ์ •์  ํ…Œ์ŠคํŠธ(Static Testing) ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing)
  2. ์ฝ”๋“œ ๋ฆฌ๋ทฐ (Code Review)
  3. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Testing)
  4. UI ํ…Œ์ŠคํŠธ (UI Testing)

โœ… ์ •๋‹ต: โ‘ก ์ฝ”๋“œ ๋ฆฌ๋ทฐ (Code Review)

๐Ÿ” ํ•ด์„ค:

  • ์ •์  ํ…Œ์ŠคํŠธ(Static Testing): ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, UI ํ…Œ์ŠคํŠธ๋Š” ๋™์  ํ…Œ์ŠคํŠธ(Dynamic Testing) ์— ์†ํ•จ.
  • โ‘ก ์ •๋‹ต: ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒ€ํ† ํ•˜๋Š” ๊ณผ์ •์ด๋ฏ€๋กœ ์ •์  ํ…Œ์ŠคํŠธ์— ํ•ด๋‹น.

28. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์™€ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฌธ์ œ

๋ฌธ์ œ 28. ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค(Test Scenario)์™€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test Case)์˜ ์ฐจ์ด๋กœ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ณด๋‹ค ๋” ํฌ๊ด„์ ์ธ ๊ฐœ๋…์ด๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ด๋‹ค.
  4. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค(Test Scenario): ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์ •์˜ํ•˜๋Š” ํฌ๊ด„์ ์ธ ๊ฐœ๋….
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test Case): ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์ฒด์ ์ธ ์ž…๋ ฅ๊ฐ’, ์˜ˆ์ƒ ๊ฒฐ๊ณผ, ์‹คํ–‰ ์ ˆ์ฐจ ๋“ฑ์„ ํฌํ•จ.
  • โ‘  ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณด๋‹ค ๋” ํฌ๊ด„์ ์ธ ๊ฐœ๋…์ž„.
  • โ‘ข ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋” ๊ตฌ์ฒด์ ์ด๋ฉฐ, ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์ •์˜ํ•จ.
  • โ‘ฃ ํ‹€๋ฆผ: ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋ชจ๋“  ์œ ํ˜•์˜ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.

29. ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ vs ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 29. ๋‹ค์Œ ์ค‘ ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ(Non-Functional Testing)์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ
  2. ๊ฒฐ์ œ ์‹œ์Šคํ…œ์—์„œ ์นด๋“œ ๋ฒˆํ˜ธ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ
  3. ์‹œ์Šคํ…œ์ด 1,000๋ช…์˜ ๋™์‹œ ์‚ฌ์šฉ์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ
  4. ํšŒ์›๊ฐ€์ž… ์‹œ ํ•„์ˆ˜ ์ž…๋ ฅ๊ฐ’์„ ์ฒดํฌํ•˜๋Š” ํ…Œ์ŠคํŠธ

โœ… ์ •๋‹ต: โ‘ข ์‹œ์Šคํ…œ์ด 1,000๋ช…์˜ ๋™์‹œ ์‚ฌ์šฉ์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ

๐Ÿ” ํ•ด์„ค:

  • ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ(Functional Testing): ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ(Non-Functional Testing): ์„ฑ๋Šฅ, ๋ณด์•ˆ, ์•ˆ์ •์„ฑ ๋“ฑ ๊ธฐ๋Šฅ ์ด์™ธ์˜ ์š”์†Œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ: ๋ชจ๋‘ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์— ํ•ด๋‹น.
  • โ‘ข ์ •๋‹ต: ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing)์˜ ์ผ์ข…์œผ๋กœ, ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์— ํ•ด๋‹นํ•จ.

30. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ vs ์žฌํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 30. ๋‹ค์Œ ์ค‘ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Testing)์™€ ์žฌํ…Œ์ŠคํŠธ(Retesting)์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์žฌํ…Œ์ŠคํŠธ๋Š” ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  2. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์žฌํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  3. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ์ผ๋ถ€์ด๋ฉฐ, ์žฌํ…Œ์ŠคํŠธ๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ์ผ๋ถ€์ด๋‹ค.
  4. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ์™€ ์žฌํ…Œ์ŠคํŠธ๋Š” ๊ฐ™์€ ์˜๋ฏธ์ด๋ฉฐ, ์šฉ์–ด๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์žฌํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Testing): ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
  • ์žฌํ…Œ์ŠคํŠธ(Retesting): ํŠน์ • ๊ฒฐํ•จ(Bug)์ด ์ˆ˜์ •๋œ ํ›„, ํ•ด๋‹น ๊ฒฐํ•จ์ด ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๊นจ์ง€์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์žฌํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ๋ฒ„๊ทธ ์ˆ˜์ • ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค๋ฆ„.

31. API GET vs POST ๋ฌธ์ œ

๋ฌธ์ œ 31. ๋‹ค์Œ ์ค‘ HTTP GET๊ณผ POST ์š”์ฒญ์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ , POST ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  2. GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ URL์— ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ด๊ณ , POST ์š”์ฒญ์€ ์š”์ฒญ ๋ณธ๋ฌธ(Body)์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค.
  3. GET ์š”์ฒญ์€ ๋ณด์•ˆ์„ฑ์ด ๋†’๊ณ , POST ์š”์ฒญ์€ ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ๋‹ค.
  4. GET ์š”์ฒญ์€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, POST ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ URL์— ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ด๊ณ , POST ์š”์ฒญ์€ ์š”์ฒญ ๋ณธ๋ฌธ(Body)์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ณ , POST ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ.
  • โ‘ก ์ •๋‹ต: GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ URL์— ํฌํ•จํ•˜์—ฌ ์ „์†กํ•˜๊ณ , POST ์š”์ฒญ์€ Body์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ ์ „์†กํ•จ.
  • โ‘ข ํ‹€๋ฆผ: GET ์š”์ฒญ์€ URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜๋ฏ€๋กœ ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ์Œ. POST ์š”์ฒญ์€ Body์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋ณด์•ˆ์„ฑ์ด ๋†’์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: GET ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, POST ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ.

32. TDD vs BDD ๋ฌธ์ œ

๋ฌธ์ œ 32. TDD(Test-Driven Development)์™€ BDD(Behavior-Driven Development)์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. TDD๋Š” ์ฝ”๋“œ ๊ตฌํ˜„์„ ๋จผ์ € ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๋‚˜์ค‘์— ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, BDD๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  2. TDD๋Š” ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , BDD๋Š” ์‚ฌ์šฉ์ž ํ–‰๋™(Behavior) ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  3. TDD๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ , BDD๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  4. TDD์™€ BDD๋Š” ๊ฐ™์€ ๊ฐœ๋…์ด๋ฉฐ, ์šฉ์–ด๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก TDD๋Š” ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , BDD๋Š” ์‚ฌ์šฉ์ž ํ–‰๋™(Behavior) ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: TDD๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ ํ›„, ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹.
  • โ‘ก ์ •๋‹ต: TDD๋Š” ์ฝ”๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test) ์œ„์ฃผ๋กœ ์ง„ํ–‰๋˜๋ฉฐ, BDD๋Š” ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹(Gherkin, Cucumber ๋“ฑ ํ™œ์šฉ).
  • โ‘ข ํ‹€๋ฆผ: BDD๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์™€ ๊ด€๋ จ์ด ์—†์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: TDD์™€ BDD๋Š” ํ…Œ์ŠคํŠธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋‹ค๋ฆ„.

๐Ÿ”ฅ Pretest ๋Œ€๋น„ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๊ฐœ๋… ์ •๋ฆฌ

โœ… ์ •์  ํ…Œ์ŠคํŠธ vs ๋™์  ํ…Œ์ŠคํŠธ ์ฐจ์ด ์ดํ•ด
โœ… ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค vs ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ฐจ์ด ์ˆ™์ง€
โœ… ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ vs ๋น„๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌ๋ณ„
โœ… ํšŒ๊ท€ ํ…Œ์ŠคํŠธ vs ์žฌํ…Œ์ŠคํŠธ ์ฐจ์ด ์ดํ•ด
โœ… GET vs POST ์ฐจ์ด ๋ฐ ๋ณด์•ˆ ์ด์Šˆ ์ •๋ฆฌ
โœ… TDD vs BDD ์ฐจ์ด ์ดํ•ด ๋ฐ ํ™œ์šฉ ์‚ฌ๋ก€ ์ˆ™์ง€


33. ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ vs ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 33. ๋‹ค์Œ ์ค‘ ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ (Boundary Value Analysis)
  2. ๋™์น˜ ๋ถ„ํ•  (Equivalence Partitioning)
  3. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage)
  4. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ (Exploratory Testing)

โœ… ์ •๋‹ต: โ‘ข ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage)

๐Ÿ” ํ•ด์„ค:

  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ(White-box Testing): ์†Œ์Šค ์ฝ”๋“œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•.
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ(Black-box Testing): ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ: ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„, ๋™์น˜ ๋ถ„ํ• , ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋‘ ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•.
  • โ‘ข ์ •๋‹ต: ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ์ฝ”๋“œ ๋‚ด ์กฐ๊ฑด๋ฌธ(If, Switch ๋“ฑ)์ด ์ฐธ/๊ฑฐ์ง“์„ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•.

34. Smoke Test vs Sanity Test ๋ฌธ์ œ

๋ฌธ์ œ 34. Smoke Test์™€ Sanity Test์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. Smoke Test๋Š” ์„ธ๋ถ€์ ์ธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , Sanity Test๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ๋งŒ ํ™•์ธํ•œ๋‹ค.
  2. Smoke Test๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ ์ˆ˜ํ–‰ํ•˜๊ณ , Sanity Test๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ํ›„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. Smoke Test๋Š” ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ํ…Œ์ŠคํŠธํ•˜๊ณ , Sanity Test๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  4. Smoke Test์™€ Sanity Test๋Š” ๊ฐ™์€ ์˜๋ฏธ์ด๋ฉฐ, ์šฉ์–ด๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก Smoke Test๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ ์ˆ˜ํ–‰ํ•˜๊ณ , Sanity Test๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ํ›„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Smoke Test: ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋นŒ๋“œ(Build)๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ.
  • Sanity Test: ๋ฒ„๊ทธ ์ˆ˜์ • ํ›„ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ.
  • โ‘  ํ‹€๋ฆผ: Smoke Test๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฉฐ, ์„ธ๋ถ€์ ์ธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ์•„๋‹˜.
  • โ‘ข ํ‹€๋ฆผ: Smoke Test๋Š” ์ „์ฒด์ ์ธ ๋™์ž‘์„ ํ™•์ธํ•˜๊ณ , Sanity Test๋Š” ํŠน์ • ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•จ.
  • โ‘ฃ ํ‹€๋ฆผ: ๋‘˜์€ ๋ชฉ์ ์ด ๋‹ค๋ฆ„!

35. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋ฌธ์ œ

๋ฌธ์ œ 35. ๋‹ค์Œ ์ค‘ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์œ ํ˜• ์ค‘ "์‹ค์ œ ์šด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ต๋ช…ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ"๋Š”?

  1. ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ (Sample Data)
  2. ๋ชจ์˜ ๋ฐ์ดํ„ฐ (Synthetic Data)
  3. ์ต๋ช…ํ™”๋œ ๋ฐ์ดํ„ฐ (Anonymized Data)
  4. ๋”๋ฏธ ๋ฐ์ดํ„ฐ (Dummy Data)

โœ… ์ •๋‹ต: โ‘ข ์ต๋ช…ํ™”๋œ ๋ฐ์ดํ„ฐ (Anonymized Data)

๐Ÿ” ํ•ด์„ค:

  • โ‘  ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ: ์šด์˜ ๋ฐ์ดํ„ฐ์—์„œ ์ผ๋ถ€๋งŒ ์ถ”์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ.
  • โ‘ก ๋ชจ์˜ ๋ฐ์ดํ„ฐ: ์šด์˜ ๋ฐ์ดํ„ฐ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ธ์œ„์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ.
  • โ‘ข ์ •๋‹ต: ์ต๋ช…ํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ์šด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋ฐ์ดํ„ฐ.
  • โ‘ฃ ๋”๋ฏธ ๋ฐ์ดํ„ฐ: ์˜๋ฏธ ์—†๋Š” ๊ฐ’(์˜ˆ: XXX, 1234 ๋“ฑ)์œผ๋กœ ์ฑ„์šด ๊ฐ€์งœ ๋ฐ์ดํ„ฐ.

36. RESTful API์™€ SOAP API ๋ฌธ์ œ

๋ฌธ์ œ 36. RESTful API์™€ SOAP API์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. RESTful API๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ , SOAP API๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. RESTful API๋Š” XML๋งŒ ์ง€์›ํ•˜๊ณ , SOAP API๋Š” JSON๊ณผ XML์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค.
  3. RESTful API๋Š” ๊ฒฝ๋Ÿ‰(Lightweight)ํ•˜๋ฉฐ, SOAP API๋Š” ๋ณด์•ˆ์„ฑ์ด ๋†’์ง€๋งŒ ๋ฌด๊ฒ๋‹ค.
  4. RESTful API๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€๋งŒ, SOAP API๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

โœ… ์ •๋‹ต: โ‘ข RESTful API๋Š” ๊ฒฝ๋Ÿ‰(Lightweight)ํ•˜๋ฉฐ, SOAP API๋Š” ๋ณด์•ˆ์„ฑ์ด ๋†’์ง€๋งŒ ๋ฌด๊ฒ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • โ‘  ํ‹€๋ฆผ: RESTful API๋Š” ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ(Stateless), SOAP API๋Š” ์ผ๋ถ€ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ก ํ‹€๋ฆผ: RESTful API๋Š” JSON, XML ๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๋งท์„ ์ง€์›ํ•˜์ง€๋งŒ, SOAP API๋Š” XML๋งŒ ์ง€์›.
  • โ‘ข ์ •๋‹ต: RESTful API๋Š” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋ฉฐ(๊ฒฝ๋Ÿ‰), SOAP API๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ๋งŽ์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋ฌด๊ฑฐ์›€.
  • โ‘ฃ ํ‹€๋ฆผ: SOAP API๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋ฉฐ, RESTful API๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ.

37. DevOps์™€ QA์˜ ์—ญํ•  ๋ฌธ์ œ

๋ฌธ์ œ 37. DevOps ํ™˜๊ฒฝ์—์„œ QA๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ญํ• ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ.
  2. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ.
  3. ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์‹ค์‹œ๊ฐ„ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ.
  4. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ธฐ์กด ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ.

โœ… ์ •๋‹ต: โ‘ข ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์‹ค์‹œ๊ฐ„ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ.

๐Ÿ” ํ•ด์„ค:

  • DevOps ํ™˜๊ฒฝ์—์„œ QA์˜ ์—ญํ• :
    • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ (CI/CD)
    • ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต
    • ์ฝ”๋“œ ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ ๋ถ„์„ ๋ฐ ํ’ˆ์งˆ ๊ฒ€์ฆ
  • โ‘ข ํ‹€๋ฆผ: ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๋ฒ„๊ทธ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ์ด๋ฉฐ, QA๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ณด๊ณ ํ•˜๋Š” ์—ญํ• .

38. ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 38. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์žฅ์ ์œผ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๋น ๋ฅด๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ฌผ๋ฆฌ์ ์ธ ํ…Œ์ŠคํŠธ ์žฅ๋น„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
  4. ๋ณด์•ˆ์„ฑ์ด ์˜จํ”„๋ ˆ๋ฏธ์Šค(On-Premise) ํ™˜๊ฒฝ๋ณด๋‹ค ํ•ญ์ƒ ๋†’๋‹ค.

โœ… ์ •๋‹ต: โ‘ฃ ๋ณด์•ˆ์„ฑ์ด ์˜จํ”„๋ ˆ๋ฏธ์Šค(On-Premise) ํ™˜๊ฒฝ๋ณด๋‹ค ํ•ญ์ƒ ๋†’๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํด๋ผ์šฐ๋“œ ํ…Œ์ŠคํŠธ์˜ ์žฅ์ :
    • ํ™˜๊ฒฝ ํ™•์žฅ ๊ฐ€๋Šฅ (Scalability)
    • ๋น„์šฉ ์ ˆ๊ฐ (Pay-as-you-go ๋ชจ๋ธ)
    • ๋ฌผ๋ฆฌ์  ์žฅ๋น„ ์—†์ด ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
  • โ‘ฃ ํ‹€๋ฆผ: ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ๋ณด์•ˆ์„ฑ์€ ์„ค์ •๊ณผ ์šด์˜ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ, ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ๋ณด๋‹ค ๋ฐ˜๋“œ์‹œ ๋†’๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†์Œ.

๐Ÿ”ฅ Pretest ๋Œ€๋น„ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๊ฐœ๋… ์ •๋ฆฌ (์ถ”๊ฐ€)

โœ… ํ™”์ดํŠธ๋ฐ•์Šค vs ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๊ฐœ๋… ์ •๋ฆฌ
โœ… Smoke Test vs Sanity Test ์ฐจ์ด ์ˆ™์ง€
โœ… ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์œ ํ˜•(์ต๋ช…ํ™” ๋ฐ์ดํ„ฐ, ๋”๋ฏธ ๋ฐ์ดํ„ฐ ๋“ฑ) ์ดํ•ด
โœ… RESTful API vs SOAP API ์ฐจ์ด์  ์ •๋ฆฌ
โœ… DevOps ํ™˜๊ฒฝ์—์„œ QA์˜ ์—ญํ•  ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„
โœ… ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ์˜ ์žฅ์ ๊ณผ ๋ณด์•ˆ์„ฑ ๋ฌธ์ œ ์ดํ•ด


โœ… 39. ์ •์  ๋ถ„์„ vs ๋™์  ๋ถ„์„ ๋ฌธ์ œ

๋ฌธ์ œ 39. ๋‹ค์Œ ์ค‘ ์ •์  ๋ถ„์„(Static Analysis)๊ณผ ๋™์  ๋ถ„์„(Dynamic Analysis)์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. ์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  2. ๋™์  ๋ถ„์„์€ ์†Œ์Šค ์ฝ”๋“œ ๊ฒ€ํ† ๋ฅผ ํ†ตํ•ด ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๋ฐฉ์‹์ด๋‹ค.
  3. ์ •์  ๋ถ„์„์€ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  4. ๋™์  ๋ถ„์„์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋งŒ์œผ๋กœ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘  ์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ •์  ๋ถ„์„ (Static Analysis): ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ ๊ฒฐํ•จ์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋ฒ•.
    • ์˜ˆ: ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ์ •์  ๋ถ„์„ ๋„๊ตฌ(SonarQube, ESLint).
  • ๋™์  ๋ถ„์„ (Dynamic Analysis): ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ ์ƒํƒœ์—์„œ ๊ฒฐํ•จ์„ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋ฒ•.
    • ์˜ˆ: ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ถ„์„.
  • โ‘ก, โ‘ฃ ํ‹€๋ฆผ: ๋™์  ๋ถ„์„์€ ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์•ผ ๊ฐ€๋Šฅ.
  • โ‘ข ํ‹€๋ฆผ: ์„ฑ๋Šฅ ๋ฌธ์ œ ๋ถ„์„์€ ๋™์  ๋ถ„์„์—์„œ ์ˆ˜ํ–‰.

โœ… 40. ์• ์ž์ผ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 40. ์• ์ž์ผ ํ™˜๊ฒฝ์—์„œ QA๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ญํ• ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. CI/CD ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ๊ฐœ๋ฐœ ํŒ€๊ณผ ๊ธด๋ฐ€ํžˆ ํ˜‘๋ ฅํ•˜์—ฌ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์• ์ž์ผ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ ์›์น™:
    • Shift-Left Testing: ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
    • TDD (Test-Driven Development): ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑ ํ›„ ์ฝ”๋“œ ๊ตฌํ˜„.
    • CI/CD ํ…Œ์ŠคํŠธ ์ž๋™ํ™”: ์ง€์†์ ์ธ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์ž๋™ ํ…Œ์ŠคํŠธ ์‹คํ–‰.
  • โ‘ก ํ‹€๋ฆผ: ์• ์ž์ผ์—์„œ๋Š” ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ณ‘ํ–‰๋˜๋ฏ€๋กœ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”.

โœ… 41. ์ •๊ทœ ํ‘œํ˜„์‹(Regex) ๋ฌธ์ œ

๋ฌธ์ œ 41. ๋‹ค์Œ ์ •๊ทœ ํ‘œํ˜„์‹ ^\d{3}-\d{2}-\d{4}$์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€?

  1. ์ด๋ฉ”์ผ ์ฃผ์†Œ ํ˜•์‹์„ ๊ฒ€์ฆํ•œ๋‹ค.
  2. ์ „ํ™”๋ฒˆํ˜ธ ํ˜•์‹์„ ๊ฒ€์ฆํ•œ๋‹ค.
  3. ์†Œ์…œ ์‹œํ๋ฆฌํ‹ฐ ๋„˜๋ฒ„(SSN) ํ˜•์‹์„ ๊ฒ€์ฆํ•œ๋‹ค.
  4. IPv4 ์ฃผ์†Œ ํ˜•์‹์„ ๊ฒ€์ฆํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์†Œ์…œ ์‹œํ๋ฆฌํ‹ฐ ๋„˜๋ฒ„(SSN) ํ˜•์‹์„ ๊ฒ€์ฆํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ •๊ทœ ํ‘œํ˜„์‹(Regex) ๋ถ„์„:
    • ^ → ๋ฌธ์ž์—ด ์‹œ์ž‘.
    • \d{3} → ์ˆซ์ž 3์ž๋ฆฌ.
    • - → ํ•˜์ดํ”ˆ(-).
    • \d{2} → ์ˆซ์ž 2์ž๋ฆฌ.
    • - → ํ•˜์ดํ”ˆ(-).
    • \d{4} → ์ˆซ์ž 4์ž๋ฆฌ.
    • $ → ๋ฌธ์ž์—ด ์ข…๋ฃŒ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ: ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ, IP ์ฃผ์†Œ ํ˜•์‹๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ.

โœ… 42. SQL Injection ์ทจ์•ฝ์  ๋ฌธ์ œ

๋ฌธ์ œ 42. ๋‹ค์Œ ์ค‘ SQL Injection์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€?

  1. ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ง์ ‘ SQL ์ฟผ๋ฆฌ์— ํฌํ•จํ•œ๋‹ค.
  2. Prepared Statements(ํ”„๋ฆฌํŽ˜์–ด๋“œ ์Šคํ…Œ์ดํŠธ๋จผํŠธ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  3. SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  4. SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก Prepared Statements(ํ”„๋ฆฌํŽ˜์–ด๋“œ ์Šคํ…Œ์ดํŠธ๋จผํŠธ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • SQL Injection ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • Prepared Statements ์‚ฌ์šฉ → SQL ์‹คํ–‰ ์‹œ ์ž…๋ ฅ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ.
    • ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ๋ฐ ํ•„ํ„ฐ๋ง → ํŠน์ • ๋ฌธ์ž (', ", --) ์ œ๊ฑฐ.
    • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ์ ์šฉ → ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ •์— ์ตœ์†Œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•จ.

โœ… 43. CI/CD์—์„œ QA์˜ ์—ญํ•  ๋ฌธ์ œ

๋ฌธ์ œ 43. CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ QA๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ญํ• ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  2. ์ฝ”๋“œ ๋ฐฐํฌ ํ›„ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ ๊ฐœ๋ฐœ ํŒ€์— ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  4. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ฝ”๋“œ ๋ฐฐํฌ ํ›„ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • CI/CD์—์„œ QA์˜ ์ฃผ์š” ์—ญํ• :
    • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.
    • ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต.
    • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”.
  • โ‘ก ํ‹€๋ฆผ: ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ CI/CD QA ์—…๋ฌด๊ฐ€ ์•„๋‹˜.

โœ… 44. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 44. OWASP Top 10์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜์ธ "CSRF(Cross-Site Request Forgery)" ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ์„ค์ •ํ•œ๋‹ค.
  2. HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ํฌํ•จํ•œ๋‹ค.
  3. HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  4. SQL Injection์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Prepared Statements๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ํฌํ•จํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • CSRF ๊ณต๊ฒฉ:
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ๋œ ์„ธ์…˜์—์„œ ์•…์„ฑ ์š”์ฒญ์ด ์‹คํ–‰๋˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ณต๊ฒฉ.
  • ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • CSRF ํ† ํฐ ์‚ฌ์šฉ → ์š”์ฒญ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํ† ํฐ์„ ํฌํ•จํ•˜์—ฌ ๊ฒ€์ฆ.
    • SameSite ์ฟ ํ‚ค ์ •์ฑ… ์„ค์ • → ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์ธ์ฆ๋œ ์š”์ฒญ์„ ์ฐจ๋‹จ.
    • Referrer ๊ฒ€์ฆ → ์š”์ฒญ ์ถœ์ฒ˜ ํ™•์ธ.

โœ… ์ถ”๊ฐ€ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ ์‹œํ—˜์—์„œ ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…๋“ค

โœ… ์ •์  ๋ถ„์„(Static Analysis) vs ๋™์  ๋ถ„์„(Dynamic Analysis) ์ฐจ์ด
โœ… CI/CD์—์„œ QA ์—ญํ•  & ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ํ•„์š”์„ฑ
โœ… SQL Injection, CSRF ๋“ฑ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•
โœ… ์• ์ž์ผ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์˜ ์ค‘์š”์„ฑ
โœ… RESTful API & ์ •๊ทœ ํ‘œํ˜„์‹(Regex) ์‹ค๋ฌด ํ™œ์šฉ๋ฒ•


โœ… 45. ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฌธ์ œ

๋ฌธ์ œ 45. ๋‹ค์Œ ์ค‘ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€(Test Coverage)๋ฅผ ์ธก์ •ํ•˜๋Š” ์ฃผ์š” ๊ธฐ์ค€์ด ์•„๋‹Œ ๊ฒƒ์€?

  1. ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage)
  2. ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€ (Branch Coverage)
  3. ์ƒํƒœ ์ปค๋ฒ„๋ฆฌ์ง€ (State Coverage)
  4. UI ๋””์ž์ธ ์ปค๋ฒ„๋ฆฌ์ง€ (UI Design Coverage)

โœ… ์ •๋‹ต: โ‘ฃ UI ๋””์ž์ธ ์ปค๋ฒ„๋ฆฌ์ง€ (UI Design Coverage)

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€(Test Coverage): ์ฝ”๋“œ์˜ ์–ด๋Š ๋ถ€๋ถ„์ด ํ…Œ์ŠคํŠธ๋˜์—ˆ๋Š”์ง€ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ.
  • ์ฃผ์š” ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์œ ํ˜•:
    1. ๋ฌธ์žฅ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage): ์ฝ”๋“œ์˜ ๋ชจ๋“  ๋ฌธ์žฅ์ด ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
    2. ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€ (Branch Coverage): if ๋˜๋Š” switch ๋ฌธ์—์„œ ๋ชจ๋“  ๋ถ„๊ธฐ ์กฐ๊ฑด์ด ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
    3. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage): ๋…ผ๋ฆฌ ์กฐ๊ฑด์ด true์™€ false๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ํ™•์ธ.
    4. MC/DC (Modified Condition/Decision Coverage): ๋ชจ๋“  ๊ฐœ๋ณ„ ์กฐ๊ฑด์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ํ™•์ธ.
    5. ๊ฒฝ๋กœ ์ปค๋ฒ„๋ฆฌ์ง€ (Path Coverage): ์ฝ”๋“œ์˜ ๋ชจ๋“  ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธ.
  • โ‘ฃ ํ‹€๋ฆผ: UI ๋””์ž์ธ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ์ฝ”๋“œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€์™€ ๊ด€๋ จ์ด ์—†์Œ.

โœ… 46. ๋กœ๋“œ ํ…Œ์ŠคํŠธ vs ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 46. ๋‹ค์Œ ์ค‘ ๋กœ๋“œ ํ…Œ์ŠคํŠธ(Load Testing)์™€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ(Stress Testing)์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋Š” ์ตœ๋Œ€ ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„ฑ๋Šฅ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  2. ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์—์„œ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์ด ํ•œ๊ณ„์น˜๋ฅผ ์ดˆ๊ณผํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ฒ„ํ‹ฐ๋Š”์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  3. ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์˜ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  4. ๋กœ๋“œ ํ…Œ์ŠคํŠธ์™€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ๋™์ผํ•œ ๊ฐœ๋…์ด๋ฉฐ, ์šฉ์–ด๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์—์„œ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์ด ํ•œ๊ณ„์น˜๋ฅผ ์ดˆ๊ณผํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ฒ„ํ‹ฐ๋Š”์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋กœ๋“œ ํ…Œ์ŠคํŠธ (Load Testing): ์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ์ƒํ™ฉ์—์„œ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€.
    • ์˜ˆ: ์›น์‚ฌ์ดํŠธ๊ฐ€ 1,000๋ช…์˜ ๋™์‹œ ์ ‘์†์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ.
  • ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ (Stress Testing): ์‹œ์Šคํ…œ์ด ํ•œ๊ณ„์ ์„ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ์–ด๋””๊นŒ์ง€ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ.
    • ์˜ˆ: 10๋งŒ ๋ช…์˜ ๋™์‹œ ์ ‘์†์ž๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋Š”์ง€ ํ™•์ธ.
  • โ‘  ํ‹€๋ฆผ: ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ์ ์ธ ์ฆ๊ฐ€๋ฅผ, ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ํ•œ๊ณ„๋ฅผ ์ดˆ๊ณผํ•œ ์ƒํ™ฉ์„ ํ…Œ์ŠคํŠธ.
  • โ‘ข ํ‹€๋ฆผ: ๋‘˜ ๋‹ค ํŠน์ • ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•จ.
  • โ‘ฃ ํ‹€๋ฆผ: ๊ฐœ๋…์ด ๋‹ค๋ฆ„! ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์ด ๋‹ค์šด๋  ๋•Œ ์–ด๋–ป๊ฒŒ ๋ณต๊ตฌํ•˜๋Š”์ง€๋„ ํ‰๊ฐ€ํ•จ.

โœ… 47. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฌธ์ œ

๋ฌธ์ œ 47. ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ(Exploratory Testing)๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ์‚ฌ์ „์— ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฌธ์„œํ™”ํ•œ ํ›„ ์‹คํ–‰ํ•œ๋‹ค.
  2. ์˜ˆ์ƒ๋œ ๊ฒฐ๊ณผ๋งŒ ํ™•์ธํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค.
  4. ์˜ค์ง ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—๋Š” ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ(Exploratory Testing):
    • ์ •ํ˜•ํ™”๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด, ํ…Œ์Šคํ„ฐ์˜ ๊ฒฝํ—˜๊ณผ ์ง๊ด€์„ ํ™œ์šฉํ•˜์—ฌ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•.
    • UI ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ.
  • โ‘  ํ‹€๋ฆผ: ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์ „ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์—†์ด ์ง„ํ–‰๋จ.
  • โ‘ก ํ‹€๋ฆผ: ์˜ˆ์ƒ๋œ ๊ฒฐ๊ณผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘๋„ ํ™•์ธํ•ด์•ผ ํ•จ.
  • โ‘ฃ ํ‹€๋ฆผ: ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ๋„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.

โœ… 48. ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 48. ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์œผ๋กœ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ์€?

  1. ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ(iOS, Android)์™€ ๋””๋ฐ”์ด์Šค์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค.
  2. ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ƒํƒœ์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ์„ ๊ฒ€ํ† ํ•ด์•ผ ํ•œ๋‹ค.
  3. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋œ๋‹ค.
  4. ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ์˜ ๋™์ž‘์„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ ์ฃผ์š” ๊ณ ๋ ค์‚ฌํ•ญ:
    • ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค ๋ฐ OS ํ…Œ์ŠคํŠธ: ํ•ด์ƒ๋„, CPU ์„ฑ๋Šฅ ์ฐจ์ด ํ™•์ธ.
    • ๋ฐฐํ„ฐ๋ฆฌ ๋ฐ ๋„คํŠธ์›Œํฌ ์˜ํ–ฅ ํ…Œ์ŠคํŠธ: Wi-Fi vs LTE ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ ์ฐจ์ด ๋ถ„์„.
    • ์•ฑ์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™์ž‘ ํ…Œ์ŠคํŠธ: ์ „ํ™” ์ˆ˜์‹ , ํ‘ธ์‹œ ์•Œ๋ฆผ ์ˆ˜์‹  ์‹œ ์•ฑ์˜ ๋ฐ˜์‘ ํ™•์ธ.
  • โ‘ข ํ‹€๋ฆผ: ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋””๋ฐ”์ด์Šค ํŠน์„ฑ(์„ผ์„œ, GPS, ๋„คํŠธ์›Œํฌ ์†๋„ ๋“ฑ)๋„ ๊ณ ๋ คํ•ด์•ผ ํ•จ.

โœ… 49. A/B ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 49. A/B ํ…Œ์ŠคํŠธ(A/B Testing)์˜ ์ฃผ์š” ๋ชฉ์ ์€?

  1. ์›น์‚ฌ์ดํŠธ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ.
  2. ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ UI/UX ๋””์ž์ธ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ธ์ง€ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ.
  3. ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ž๋™ํ™” ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ.
  4. ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ์ •์  ๋ถ„์„ํ•˜๋Š” ๊ฒƒ.

โœ… ์ •๋‹ต: โ‘ก ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ UI/UX ๋””์ž์ธ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ธ์ง€ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ.

๐Ÿ” ํ•ด์„ค:

  • A/B ํ…Œ์ŠคํŠธ(A/B Testing):
    • ๋‘ ๊ฐœ ์ด์ƒ์˜ UI/UX ๋””์ž์ธ์„ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ฐ˜์‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์ ์˜ ๋””์ž์ธ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•.
    • ์˜ˆ: ๋นจ๊ฐ„์ƒ‰ ๋ฒ„ํŠผ vs ํŒŒ๋ž€์ƒ‰ ๋ฒ„ํŠผ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ํด๋ฆญ๋ฅ (CTR)์ด ๋†’์€์ง€ ๋ถ„์„.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ, ์ž๋™ํ™” ํ…Œ์ŠคํŠธ, ์ •์  ๋ถ„์„๊ณผ ๊ด€๋ จ ์—†์Œ.

โœ… ์ถ”๊ฐ€ ์ •๋ฆฌ & ๋งˆ๋ฌด๋ฆฌ

๐Ÿ“Œ ์‹œํ—˜์—์„œ ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…๋“ค (์‹ฌํ™”)

โœ… ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement, Branch, MC/DC ๋“ฑ) ๊นŠ์ด ์ดํ•ด
โœ… ๋กœ๋“œ ํ…Œ์ŠคํŠธ vs ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„
โœ… ํƒ์ƒ‰์  ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  & ํšจ๊ณผ์ ์ธ ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ• ์ดํ•ด
โœ… ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ ๊ณ ๋ ค์‚ฌํ•ญ (๋ฐฐํ„ฐ๋ฆฌ, ๋„คํŠธ์›Œํฌ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™์ž‘ ๋“ฑ)
โœ… A/B ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ UX/UI ์ตœ์ ํ™”์— ํ™œ์šฉ๋˜๋Š”์ง€ ์ดํ•ด


โœ… 50. ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฌธ์ œ

๋ฌธ์ œ 50. ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š”?

  1. ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(Wi-Fi, 4G, 5G)์—์„œ์˜ ๋™์ž‘
  2. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ๋งŒ ํ…Œ์ŠคํŠธ
  3. ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ์—ฌ๋ถ€
  4. ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์†๋„

โœ… ์ •๋‹ต: โ‘  ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(Wi-Fi, 4G, 5G)์—์„œ์˜ ๋™์ž‘

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ๋Š” ์›น ์•ฑ๊ณผ ๋‹ค๋ฆ„!
    1. ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(Wi-Fi, 4G, 5G, ์˜คํ”„๋ผ์ธ)์—์„œ ์•ฑ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•จ.
    2. ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ํ•ด์ƒ๋„์— ๋Œ€ํ•œ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ํ…Œ์ŠคํŠธ ํ•„์š”.
    3. ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ, CPU ์‚ฌ์šฉ๋Ÿ‰, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ์—ฌ๋ถ€๋„ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ์›น ํ…Œ์ŠคํŠธ์™€ ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅด๋ฉฐ, ๋ชจ๋ฐ”์ผ ์•ฑ์€ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง๋ณด๋‹ค๋Š” ๋„คํŠธ์›Œํฌ, ๋””๋ฐ”์ด์Šค ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰, ํ„ฐ์น˜ ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ์ค‘์š”.

โœ… 51. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ UI ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 51. ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ UI๋ฅผ ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋„๊ตฌ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. Espresso
  2. JUnit
  3. Postman
  4. Burp Suite

โœ… ์ •๋‹ต: โ‘  Espresso

๐Ÿ” ํ•ด์„ค:

  • Espresso: ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์˜ UI ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ณต์‹ ํ”„๋ ˆ์ž„์›Œํฌ.
    • ํ™”๋ฉด ์ด๋™, ๋ฒ„ํŠผ ํด๋ฆญ, ํ…์ŠคํŠธ ์ž…๋ ฅ ๋“ฑ์˜ UI ๋™์ž‘์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ.
  • โ‘ก ํ‹€๋ฆผ: JUnit์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ(Unit Test)์šฉ์œผ๋กœ UI ํ…Œ์ŠคํŠธ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.
  • โ‘ข ํ‹€๋ฆผ: Postman์€ API ํ…Œ์ŠคํŠธ ๋„๊ตฌ.
  • โ‘ฃ ํ‹€๋ฆผ: Burp Suite๋Š” ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

โœ… 52. ๋ชจ๋ฐ”์ผ ์•ฑ ๋„คํŠธ์›Œํฌ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 52. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์ด ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ Wi-Fi ํ™˜๊ฒฝ์—์„œ๋งŒ ์‹คํ–‰ํ•œ๋‹ค.
  2. ์•ฑ์ด ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  3. API ์š”์ฒญ์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ž‘ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์„ ๋ณ€ํ˜•ํ•œ๋‹ค.
  4. ๋ชจ๋ฐ”์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ์ƒํƒœ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์•ฑ์ด ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์˜คํ”„๋ผ์ธ ๋ชจ๋“œ ํ…Œ์ŠคํŠธ:
    • ์•ฑ์ด ๋„คํŠธ์›Œํฌ ์—†์ด ์‹คํ–‰๋  ๋•Œ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์˜ค๋ฅ˜ ์—†์ด ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
    • ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ.
    • ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋‹ค์‹œ ํ™œ์„ฑํ™”๋  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™๊ธฐํ™”๋˜๋Š”์ง€ ํ™•์ธ ํ•„์š”.
  • โ‘ , โ‘ฃ ํ‹€๋ฆผ: Wi-Fi ํ™˜๊ฒฝ ๋˜๋Š” ๋ชจ๋ฐ”์ผ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์˜คํ”„๋ผ์ธ ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Œ.
  • โ‘ข ํ‹€๋ฆผ: API ์š”์ฒญ์„ ๋ณ€ํ˜•ํ•˜๋Š” ๊ฒƒ์€ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—๋Š” ์œ ์šฉํ•˜์ง€๋งŒ, ์˜คํ”„๋ผ์ธ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€ ์•„๋‹˜.

โœ… 53. ๋ชจ๋ฐ”์ผ ์•ฑ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 53. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•  ์š”์†Œ๋Š”?

  1. ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ 
  2. ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„
  3. ์•ฑ ์„ค์น˜ ํ›„ APK ํŒŒ์ผ์˜ ํฌ๊ธฐ๋งŒ ํ™•์ธ
  4. ์•ฑ ๋‚ด ๊ด‘๊ณ ์˜ ๋…ธ์ถœ ๋นˆ๋„

โœ… ์ •๋‹ต: โ‘  ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ 

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ์•ฑ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ฃผ์š” ์š”์†Œ:
    1. ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋Ÿ‰: ํŠน์ • ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์‹œ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋น„๋Ÿ‰์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๋Š”์ง€ ํ™•์ธ.
    2. CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ์•ฑ ์‹คํ–‰ ์ค‘ CPU์™€ RAM์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ถ„์„.
    3. ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„: ์ฒซ ์‹คํ–‰ ์‹œ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธด ๊ฒฝ์šฐ ์ตœ์ ํ™” ํ•„์š”.
    4. ์Šคํฌ๋กค ์„ฑ๋Šฅ: ๋ฆฌ์ŠคํŠธ ๋ทฐ, ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์ด ์›ํ™œํ•œ์ง€ ์ฒดํฌ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ: ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋‹จ์ˆœํ•œ ๋กœ๋”ฉ ์†๋„๋‚˜ APK ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์•„๋‹Œ, ์‹ค์ œ ๊ธฐ๊ธฐ์—์„œ์˜ ์ž์› ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์‹คํ–‰ ์†๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ.

โœ… 54. ๋ชจ๋ฐ”์ผ ์•ฑ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 54. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€?

  1. ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‚œ๋…ํ™”ํ•˜์—ฌ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  2. ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ์— ํ‰๋ฌธ์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
  3. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ HTTP ํ”„๋กœํ† ์ฝœ๋กœ ์ „์†กํ•œ๋‹ค.
  4. ์•ฑ์ด ๋ฃจํŒ…๋œ ๋””๋ฐ”์ด์Šค์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘  ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‚œ๋…ํ™”ํ•˜์—ฌ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋ณด์•ˆ ๊ฐ•ํ™” ๋ฐฉ๋ฒ•:
    • ProGuard, R8์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ ๋‚œ๋…ํ™”.
    • HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ๋ฐ ์ „์†ก ๋ณด์•ˆ ๊ฐ•ํ™”.
    • ์•ฑ์ด ๋ฃจํŒ…๋œ ๊ธฐ๊ธฐ์—์„œ ๋™์ž‘ํ•˜์ง€ ์•Š๋„๋ก ๋ณด์•ˆ ์ •์ฑ… ์ ์šฉ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ‰๋ฌธ(Plain Text)์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    • HTTP ๋Œ€์‹  ๋ฐ˜๋“œ์‹œ HTTPS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
    • ๋ฃจํŒ…๋œ ๊ธฐ๊ธฐ์—์„œ๋Š” ํ•ดํ‚น ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฏ€๋กœ ์•ฑ ์‹คํ–‰์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•จ.

โœ… 55. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 55. ์•ˆ๋“œ๋กœ์ด๋“œ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์‹œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š”?

  1. Selenium
  2. Espresso
  3. JMeter
  4. OWASP ZAP

โœ… ์ •๋‹ต: โ‘ก Espresso

๐Ÿ” ํ•ด์„ค:

  • Espresso:
    • ์•ˆ๋“œ๋กœ์ด๋“œ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ๊ณต์‹ ํ”„๋ ˆ์ž„์›Œํฌ.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ UI ๋™์ž‘์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ๊ฒ€์ฆ.
  • โ‘  ํ‹€๋ฆผ: Selenium์€ ์›น UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ๋กœ, ์•ˆ๋“œ๋กœ์ด๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ํ…Œ์ŠคํŠธ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.
  • โ‘ข ํ‹€๋ฆผ: JMeter๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋กœ, UI ํ…Œ์ŠคํŠธ์™€ ๋ฌด๊ด€.
  • โ‘ฃ ํ‹€๋ฆผ: OWASP ZAP์€ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ.

โœ… ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ ๋ชจ๋ฐ”์ผ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ ์š”์†Œ

โœ… ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(Wi-Fi, 4G, 5G, ์˜คํ”„๋ผ์ธ)์—์„œ ์•ฑ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ
โœ… Espresso๋ฅผ ํ™œ์šฉํ•œ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ ์šฉ
โœ… ์•ฑ์˜ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU/๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„์œจ์„ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ์ธก์ •
โœ… HTTPS ์ ์šฉ ๋ฐ ๋‚œ๋…ํ™”๋ฅผ ํ†ตํ•ด ์•ฑ ๋ณด์•ˆ์„ ๊ฐ•ํ™”
โœ… ๋ฃจํŒ…๋œ ๊ธฐ๊ธฐ์—์„œ์˜ ๋™์ž‘ ์—ฌ๋ถ€ ํ™•์ธ ๋ฐ ๋ณด์•ˆ ์กฐ์น˜ ์ ์šฉ


โœ… 56. ๋ชจ๋ฐ”์ผ ์•ฑ ํฌ๋กœ์Šค ๋””๋ฐ”์ด์Šค ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 56. ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ์‹œ ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ฃผ์š” ๋ชฉ์ ์€?

  1. ์•ฑ์ด ํŠน์ • ๊ธฐ๊ธฐ์—์„œ๋งŒ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด
  2. ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ํ•ด์ƒ๋„์—์„œ UI๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด
  3. ์•ฑ์˜ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด
  4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด

โœ… ์ •๋‹ต: โ‘ก ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ํ•ด์ƒ๋„์—์„œ UI๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด

๐Ÿ” ํ•ด์„ค:

  • ํฌ๋กœ์Šค ๋””๋ฐ”์ด์Šค ํ…Œ์ŠคํŠธ(Cross Device Testing):
    • ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์€ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ(์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ)์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ๊ธฐ๊ธฐ์—์„œ UI๊ฐ€ ๊นจ์ง€๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.
    • ๋‹ค์–‘ํ•œ ํ•ด์ƒ๋„, ํ™”๋ฉด ๋น„์œจ, ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•จ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ํŠน์ • ๊ธฐ๊ธฐ์—์„œ๋งŒ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ์ผ๊ด€๋œ ๋™์ž‘์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ.
    • ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ์ •์  ๋ถ„์„ ๋“ฑ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ๋ณด์•ˆ ์ทจ์•ฝ์  ํ™•์ธ์€ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ ๋‹ค๋ฃธ.

โœ… 57. ๋ชจ๋ฐ”์ผ ๋„คํŠธ์›Œํฌ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 57. ๋ชจ๋ฐ”์ผ ์•ฑ์ด ๋ถˆ์•ˆ์ •ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€?

  1. ์•ฑ์„ Wi-Fi ํ™˜๊ฒฝ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  2. ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ๋Š์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  4. ๋ชจ๋“  API ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š”์ง€๋งŒ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ๋Š์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋„คํŠธ์›Œํฌ ์ƒํƒœ ๋ณ€ํ™” ํ…Œ์ŠคํŠธ:
    • Wi-Fi → LTE → 5G ๋ณ€๊ฒฝ ์‹œ ์•ฑ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
    • ๋„คํŠธ์›Œํฌ ๋Š๊น€(์˜คํ”„๋ผ์ธ ์ƒํƒœ) ํ›„ ์žฌ์—ฐ๊ฒฐ ์‹œ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ๊ฒ€์ฆ.
    • ์‹ค์ œ ์ด๋™ ์ค‘(ํ„ฐ๋„, ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ)์—์„œ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹จ์ ˆ๋˜์—ˆ์„ ๋•Œ์˜ ๋™์ž‘ ํ™•์ธ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • Wi-Fi ํ™˜๊ฒฝ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์‹ค์‚ฌ์šฉ ํ™˜๊ฒฝ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†์Œ.
    • ํด๋ผ์šฐ๋“œ ์‘๋‹ต ์‹œ๊ฐ„ ์„ค์ •๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์‹ค์ œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ์˜ ๋ณ€ํ™”๊ฐ€ ๋” ์ค‘์š”ํ•œ ํ…Œ์ŠคํŠธ ํฌ์ธํŠธ.

โœ… 58. ๋ชจ๋ฐ”์ผ ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 58. ๋ชจ๋ฐ”์ผ ์•ฑ ์ ‘๊ทผ์„ฑ(Accessibility)์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š”?

  1. ์ƒ‰๋งน ๋ชจ๋“œ์—์„œ UI๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ
  2. ์•ฑ์˜ ์„ฑ๋Šฅ์ด ๋น ๋ฅธ์ง€ ์ธก์ •ํ•˜๋Š” ๊ฒƒ
  3. ์•ฑ์˜ UI๊ฐ€ ๊ณ ํ•ด์ƒ๋„์—์„œ ์„ ๋ช…ํ•˜๊ฒŒ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ
  4. ์•ฑ์ด ์ตœ์‹  ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

โœ… ์ •๋‹ต: โ‘  ์ƒ‰๋งน ๋ชจ๋“œ์—์„œ UI๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ(Accessibility Testing):
    • ์‹œ๊ฐ ์žฅ์• ์ธ์„ ์œ„ํ•œ "์Œ์„ฑ ํ”ผ๋“œ๋ฐฑ(TalkBack)" ๊ธฐ๋Šฅ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
    • ์ƒ‰๋งน ๋ชจ๋“œ(์ƒ‰์ƒ ๋Œ€๋น„ ํ™•์ธ)์—์„œ UI ์š”์†Œ๊ฐ€ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ.
    • ํ…์ŠคํŠธ ํฌ๊ธฐ ์กฐ์ • ์‹œ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง€์ง€ ์•Š๋Š”์ง€ ํ…Œ์ŠคํŠธ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ๋Š” ์„ฑ๋Šฅ, ๊ณ ํ•ด์ƒ๋„ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋„ ์›ํ™œํ•˜๊ฒŒ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ.

โœ… 59. ๋ชจ๋ฐ”์ผ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 59. ๋ชจ๋ฐ”์ผ ์•ฑ์˜ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€?

  1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค.
  2. ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๋กœ์ปฌ DB์— ์•”ํ˜ธํ™” ์—†์ด ์ €์žฅํ•œ๋‹ค.
  3. ์•ฑ์ด HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  4. ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•ฑ ๋‚ด ํ•˜๋“œ์ฝ”๋”ฉํ•˜์—ฌ ๋ณด๊ด€ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์•ฑ์ด HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ:
    • HTTPS(SSL/TLS) ์ ์šฉ: ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํƒˆ์ทจ ๋ฐฉ์ง€.
    • ๋ฏผ๊ฐํ•œ ์ •๋ณด(๋น„๋ฐ€๋ฒˆํ˜ธ, ์นด๋“œ ์ •๋ณด)๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅ.
    • Secure SharedPreferences ๋˜๋Š” Android Keystore System ์‚ฌ์šฉ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ:
    • ๋กœ์ปฌ ํŒŒ์ผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ๋งŽ์Œ.
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™” ์—†์ด ์ €์žฅํ•˜๋ฉด ํ•ดํ‚น ์œ„ํ—˜์ด ์žˆ์Œ.
    • ์•ฑ ๋‚ด ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ์‰ฝ๊ฒŒ ์œ ์ถœ๋จ.

โœ… 60. ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 60. ๋ชจ๋ฐ”์ผ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€?

  1. Espresso์™€ UI Automator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI ๋™์ž‘์„ ์ž๋™ํ™”ํ•œ๋‹ค.
  2. ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ž๋™ํ™”๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
  3. ๋„คํŠธ์›Œํฌ ๋กœ๊ทธ๋งŒ ๋ถ„์„ํ•˜์—ฌ UI ๋™์ž‘์„ ๊ฒ€์ฆํ•œ๋‹ค.
  4. Selenium์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์„ ์ž๋™ํ™”ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘  Espresso์™€ UI Automator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI ๋™์ž‘์„ ์ž๋™ํ™”ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋ฐฉ๋ฒ•:
    • Espresso: ๋‹จ์ผ ์•ฑ ๋‚ด UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (Google ๊ณต์‹ ์ง€์›).
    • UI Automator: ์—ฌ๋Ÿฌ ์•ฑ ๊ฐ„ UI ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ (์˜ˆ: ์„ค์ • ์•ฑ๊ณผ ์ƒํ˜ธ์ž‘์šฉ).
  • โ‘ก ํ‹€๋ฆผ: ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ ์ธ UI ํ…Œ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ.
  • โ‘ข ํ‹€๋ฆผ: ๋„คํŠธ์›Œํฌ ๋กœ๊ทธ๋งŒ ๋ถ„์„ํ•ด์„œ๋Š” UI ๋™์ž‘์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์—†์Œ.
  • โ‘ฃ ํ‹€๋ฆผ: Selenium์€ ์›น UI ์ž๋™ํ™” ๋„๊ตฌ๋กœ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.

โœ… ๋ชจ๋ฐ”์ผ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ…Œ์ŠคํŠธ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ ๋ชจ๋ฐ”์ผ ์•ฑ ํ…Œ์ŠคํŠธ์˜ ์ฃผ์š” ๊ณ ๋ ค์‚ฌํ•ญ

โœ… ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์™€ ํ•ด์ƒ๋„์—์„œ์˜ UI ํ…Œ์ŠคํŠธ(Cross Device Testing)
โœ… Wi-Fi, 4G, 5G, ๋„คํŠธ์›Œํฌ ๋Š๊น€ ํ›„ ์žฌ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ(Network Resilience Testing)
โœ… ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU/๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๋ถ„์„์„ ํ†ตํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ(Performance Testing)
โœ… Espresso, UI Automator๋ฅผ ํ™œ์šฉํ•œ UI ํ…Œ์ŠคํŠธ ์ž๋™ํ™”(UI Test Automation)
โœ… TalkBack, ์ƒ‰์ƒ ๋Œ€๋น„ ๊ฒ€ํ† ๋ฅผ ํฌํ•จํ•œ ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ(Accessibility Testing)
โœ… HTTPS ์ ์šฉ ๋ฐ ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•œ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ(Security Testing)


โœ… 61. API ํ…Œ์ŠคํŠธ์™€ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 61. API ํ…Œ์ŠคํŠธ์—์„œ "๊ณ„์•ฝ ํ…Œ์ŠคํŠธ(Contract Testing)"์˜ ์ฃผ์š” ๋ชฉ์ ์€?

  1. API์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์˜ˆ์ƒ๋œ ์ŠคํŽ™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ
  3. API๊ฐ€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ์—์„œ ๋†’์€ ํŠธ๋ž˜ํ”ฝ์„ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ
  4. API์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ

โœ… ์ •๋‹ต: โ‘  API์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์˜ˆ์ƒ๋œ ์ŠคํŽ™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

๐Ÿ” ํ•ด์„ค:

  • ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ(Contract Testing):
    • API์˜ ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response)์ด ๋ฌธ์„œํ™”๋œ ์ŠคํŽ™(OpenAPI, Swagger) ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค ๊ฐ„ API ๋ณ€๊ฒฝ์ด ๊ธฐ์กด ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ .
    • ์˜ˆ: API ์‘๋‹ต์˜ JSON ํ•„๋“œ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์ฆ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ํ…Œ์ŠคํŠธ๋Š” DB ํ…Œ์ŠคํŠธ ์˜์—ญ,
    • ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์˜์—ญ,
    • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ๋Š” API ๋ณด์•ˆ ์˜์—ญ์—์„œ ๋‹ค๋ฃจ์–ด์•ผ ํ•จ.

โœ… 62. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ TPS์™€ ์‘๋‹ต ์‹œ๊ฐ„ ๋ฌธ์ œ

๋ฌธ์ œ 62. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ TPS(Transactions Per Second)์™€ ์‘๋‹ต ์‹œ๊ฐ„(Response Time)์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. TPS๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„๋„ ํ•ญ์ƒ ์ฆ๊ฐ€ํ•œ๋‹ค.
  2. TPS๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ ์‘๋‹ต ์‹œ๊ฐ„์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
  3. TPS๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์‘๋‹ต ์‹œ๊ฐ„์€ TPS์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ผ์ •ํ•˜๋‹ค.

โœ… ์ •๋‹ต: โ‘ข TPS๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • TPS (Transactions Per Second): ์‹œ์Šคํ…œ์ด 1์ดˆ ๋™์•ˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜.
  • ์‘๋‹ต ์‹œ๊ฐ„ (Response Time): ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.
  • โ‘ข ์ •๋‹ต:
    • TPS๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ณ , ํŠน์ • ์ž„๊ณ„์ ์„ ๋„˜์œผ๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ: TPS 1,000์ผ ๋•Œ ์‘๋‹ต ์‹œ๊ฐ„์ด 100ms์˜€๋‹ค๊ฐ€, TPS 5,000์ด ๋˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด 500ms๊นŒ์ง€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ:
    • TPS์™€ ์‘๋‹ต ์‹œ๊ฐ„์€ ํ•ญ์ƒ ๋™์ผํ•œ ๋น„์œจ๋กœ ๋ณ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜์™€ ์ธํ”„๋ผ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„.

โœ… 63. ์ •์  ํ…Œ์ŠคํŠธ vs ๋™์  ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 63. ๋‹ค์Œ ์ค‘ ์ •์  ํ…Œ์ŠคํŠธ(Static Testing) ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€?

  1. ์ •์  ์ฝ”๋“œ ๋ถ„์„ (Static Code Analysis)
  2. ๋กœ๋“œ ํ…Œ์ŠคํŠธ (Load Testing)
  3. UI ์ž๋™ํ™” ํ…Œ์ŠคํŠธ (UI Automation Testing)
  4. ๋ณด์•ˆ ์ทจ์•ฝ์  ํƒ์ง€ ํ…Œ์ŠคํŠธ (Penetration Testing)

โœ… ์ •๋‹ต: โ‘  ์ •์  ์ฝ”๋“œ ๋ถ„์„ (Static Code Analysis)

๐Ÿ” ํ•ด์„ค:

  • ์ •์  ํ…Œ์ŠคํŠธ (Static Testing): ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•.
    • ์˜ˆ: ์ฝ”๋“œ ๋ฆฌ๋ทฐ(Code Review), ์ •์  ์ฝ”๋“œ ๋ถ„์„(SonarQube, ESLint), ์š”๊ตฌ์‚ฌํ•ญ ๋ฆฌ๋ทฐ.
  • ๋™์  ํ…Œ์ŠคํŠธ (Dynamic Testing): ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•.
    • ์˜ˆ: ๋กœ๋“œ ํ…Œ์ŠคํŠธ, UI ์ž๋™ํ™” ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ์ทจ์•ฝ์  ํƒ์ง€ ํ…Œ์ŠคํŠธ.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋กœ๋“œ ํ…Œ์ŠคํŠธ, UI ์ž๋™ํ™” ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ํ…Œ์ŠคํŠธ๋Š” ๋™์  ํ…Œ์ŠคํŠธ์— ์†ํ•จ.

โœ… 64. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 64. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ์—์„œ "๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(Integrity)"์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ ํŒŒ์ผ๋กœ ๋ฐฑ์—…ํ•œ๋‹ค.
  2. ACID ์›์น™์„ ์ ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
  3. SQL Injection ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ACID ์›์น™์„ ์ ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(Integrity) ๋ณด์žฅ์„ ์œ„ํ•œ ํ•ต์‹ฌ ์š”์†Œ:
    • ACID ์›์น™:
      • Atomicity(์›์ž์„ฑ): ํŠธ๋žœ์žญ์…˜์ด "์™„์ „ํžˆ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ".
      • Consistency(์ผ๊ด€์„ฑ): ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ.
      • Isolation(๊ณ ๋ฆฝ์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ.
      • Durability(์ง€์†์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š์•„์•ผ ํ•จ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ฐฑ์—…์€ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๊ด€๋ จ ์—†์Œ.
    • SQL Injection ํ…Œ์ŠคํŠธ๋Š” ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ์˜์—ญ.
    • ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋Š” ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ฆ์—์„œ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ๋Š” ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†์Œ.

โœ… 65. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ OWASP Top 10 ๋ฌธ์ œ

๋ฌธ์ œ 65. OWASP Top 10์—์„œ "Broken Authentication" ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. API๊ฐ€ ๋น„์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ
  2. ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ณผ์ •์—์„œ ์ธ์ฆ์ด ์ทจ์•ฝํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ๊ณ„์ •์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ
  3. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž…๋ ฅ ๊ฐ’์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•„ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฌธ์ œ
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ SQL Injection์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

โœ… ์ •๋‹ต: โ‘ก ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ณผ์ •์—์„œ ์ธ์ฆ์ด ์ทจ์•ฝํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ๊ณ„์ •์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

๐Ÿ” ํ•ด์„ค:

  • Broken Authentication(์ทจ์•ฝํ•œ ์ธ์ฆ):
    • ๊ณต๊ฒฉ์ž๊ฐ€ ์•ฝํ•œ ํŒจ์Šค์›Œ๋“œ, ์„ธ์…˜ ํƒˆ์ทจ, ์ž๋™ ๋กœ๊ทธ์ธ ๋ฌธ์ œ ๋“ฑ์„ ์•…์šฉํ•˜์—ฌ ๊ณ„์ •์„ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ.
    • ์˜ˆ:
      • "admin/admin123" ๊ฐ™์€ ์ทจ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์‚ฌ์šฉ.
      • ์ฟ ํ‚ค์—์„œ ์„ธ์…˜ ID๋ฅผ ํƒˆ์ทจํ•˜์—ฌ ๋กœ๊ทธ์ธ ์œ ์ง€.
      • ๋‹ค์ค‘ ์ธ์ฆ(MFA)์„ ์ ์šฉํ•˜์ง€ ์•Š์•„ ๊ณ„์ •์ด ์‰ฝ๊ฒŒ ํƒˆ์ทจ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋น„์ •์ƒ ํŠธ๋ž˜ํ”ฝ ๊ฐ์ง€๋Š” DDoS ๊ณต๊ฒฉ ๋Œ€์‘ ์˜์—ญ.
    • ์ž…๋ ฅ ๊ฐ’ ๊ฒ€์ฆ ๋ฌธ์ œ๋Š” XSS(Cross-Site Scripting) ๊ณต๊ฒฉ๊ณผ ๊ด€๋ จ.
    • SQL Injection์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ ์ทจ์•ฝ์ .

โœ… ์ถ”๊ฐ€ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ ์‹œํ—˜์—์„œ ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…๋“ค

โœ… API ํ…Œ์ŠคํŠธ์—์„œ ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ(Contract Testing)์˜ ํ•„์š”์„ฑ ์ดํ•ด
โœ… ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ TPS(Transactions Per Second)์™€ ์‘๋‹ต ์‹œ๊ฐ„ ๊ด€๊ณ„ ๋ถ„์„
โœ… ์ •์  ํ…Œ์ŠคํŠธ vs ๋™์  ํ…Œ์ŠคํŠธ ์ฐจ์ด ๋ฐ ์ฃผ์š” ๊ธฐ๋ฒ• ์ˆ™์ง€
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ์—์„œ ACID ์›์น™์ด ์ค‘์š”ํ•œ ์ด์œ  ์ดํ•ด
โœ… ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ OWASP Top 10(Broken Authentication, SQL Injection ๋“ฑ) ๊ฐœ๋… ์ˆ™์ง€

โœ… 66. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ „๋žต ๋ฌธ์ œ

๋ฌธ์ œ 66. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ๋„์ž…ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ 100% ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€ํ† ํ•œ๋‹ค.
  2. ์ž๋™ํ™”ํ•  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•œ๋‹ค.
  3. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ๋จผ์ € ์„ ์ •ํ•œ ํ›„, ์ž๋™ํ™” ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
  4. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ž๋™ํ™”ํ•  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ „๋žต์˜ ํ•ต์‹ฌ:
    • ์ž๋™ํ™”ํ•  ํ…Œ์ŠคํŠธ๋ฅผ ์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•จ.
    • ๋ฐ˜๋ณต์ ์ด๊ณ  ์‹คํ–‰ ๋นˆ๋„๊ฐ€ ๋†’์€ ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ž๋™ํ™”ํ•ด์•ผ ํ•จ.
    • ์˜ˆ: ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Regression Testing), API ํ…Œ์ŠคํŠธ, ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํ…Œ์ŠคํŠธ ๋“ฑ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • 100% ์ž๋™ํ™”๋Š” ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•จ.
    • ๋„๊ตฌ ์„ ์ •๋ณด๋‹ค ๋ฌด์—‡์„ ์ž๋™ํ™”ํ• ์ง€ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ .
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋™ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, QA ํŒ€๊ณผ ํ˜‘์—…์ด ํ•„์š”ํ•จ.

โœ… 67. API ํ…Œ์ŠคํŠธ์—์„œ ์ƒํƒœ ์ฝ”๋“œ ๋ฌธ์ œ

๋ฌธ์ œ 67. API ํ…Œ์ŠคํŠธ์—์„œ HTTP 429 Too Many Requests ์‘๋‹ต์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€?

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  2. ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  3. ์‚ฌ์šฉ์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œํ•œ์ด ๊ฑธ๋ ธ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์‚ฌ์šฉ์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œํ•œ์ด ๊ฑธ๋ ธ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • HTTP ์ƒํƒœ ์ฝ”๋“œ:
    • 400 Bad Request → ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์ž˜๋ชป๋จ.
    • 500 Internal Server Error → ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜.
    • 429 Too Many Requests → API ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ œํ•œํ•จ.
    • 401 Unauthorized → ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ๋˜์ง€ ์•Š์Œ.
  • โ‘ข ์ •๋‹ต:
    • API ์„œ๋ฒ„์—์„œ Rate Limiting(์š”์ฒญ ์ œํ•œ) ์„ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์‘๋‹ต ์ฝ”๋“œ.
    • ์˜ˆ: ์ดˆ๋‹น 100๊ฐœ์˜ ์š”์ฒญ๋งŒ ํ—ˆ์šฉํ•˜๋Š” API์—์„œ 101๋ฒˆ์งธ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด 429 Too Many Requests ์‘๋‹ต์„ ๋ฐ›์Œ.

โœ… 68. ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ CSRF ๋ฌธ์ œ

๋ฌธ์ œ 68. CSRF(Cross-Site Request Forgery) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์ฆํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•œ๋‹ค.
  2. HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฒ€์ฆํ•œ๋‹ค.
  3. ๋ชจ๋“  ์‚ฌ์šฉ์ž ์š”์ฒญ์„ HTTPS๋กœ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
  4. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ IP ์ฃผ์†Œ๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฒ€์ฆํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • CSRF (Cross-Site Request Forgery):
    • ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ์ด์šฉํ•˜์—ฌ ์›์น˜ ์•Š๋Š” ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•.
    • ์˜ˆ: ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ์—์„œ ์•…์„ฑ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ.
  • ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • CSRF ํ† ํฐ ์‚ฌ์šฉ: ๋ชจ๋“  ์š”์ฒญ์— ๊ณ ์œ ํ•œ CSRF ํ† ํฐ์„ ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์ด๋ฅผ ๊ฒ€์ฆ.
    • SameSite ์ฟ ํ‚ค ์„ค์ •: CSRF ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค ์ •์ฑ…์„ ์„ค์ •.
    • Referrer ๊ฒ€์ฆ: ์š”์ฒญ์˜ ์ถœ์ฒ˜๋ฅผ ํ™•์ธํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์ธ์ง€ ๊ฒ€์ฆ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ(XSS ๋ฐฉ์ง€), HTTPS ์‚ฌ์šฉ(๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”), IP ๊ฒ€์‚ฌ(๋ณด์•ˆ ๊ฐ•ํ™”)๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ CSRF๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐฉ์ง€ํ•˜์ง€ ๋ชปํ•จ.

โœ… 69. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 69. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing)์˜ ์ฃผ์š” ๋ชฉ์ ์€?

  1. ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ ์–ด๋–ป๊ฒŒ ๋ณต๊ตฌ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ.
  2. ์ •์ƒ์ ์ธ ์‚ฌ์šฉ๋Ÿ‰์—์„œ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ.
  3. ํ•ดํ‚น ์‹œ๋„๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ.
  4. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ถ„์„ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ.

โœ… ์ •๋‹ต: โ‘ก ์ •์ƒ์ ์ธ ์‚ฌ์šฉ๋Ÿ‰์—์„œ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ.

๐Ÿ” ํ•ด์„ค:

  • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing):
    • ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ์—์„œ ์–ผ๋งˆ๋‚˜ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ‰๊ฐ€ํ•˜๋Š” ํ…Œ์ŠคํŠธ.
    • ์˜ˆ: ํ•˜๋ฃจ ํ‰๊ท  1๋งŒ ๋ช…์ด ์ ‘์†ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์—์„œ์˜ ๋ณต๊ตฌ๋Š” ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ(Stress Testing) ์˜์—ญ.
    • ํ•ดํ‚น ์‹œ๋„์— ๋Œ€ํ•œ ๋ฐ˜์‘์€ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ(Security Testing) ์˜์—ญ.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ์ ํ™”๋Š” ์„ฑ๋Šฅ ๋ถ„์„์˜ ์ผ๋ถ€์ง€๋งŒ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ง์ ‘์ ์ธ ๋ชฉ์ ์€ ์•„๋‹˜.

โœ… 70. ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 70. ๋ชจ๋ฐ”์ผ ์•ฑ์˜ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๋Ÿ‰์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š”?

  1. ์•ฑ์ด ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ.
  2. ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ.
  3. ์•ฑ์ด ์ตœ์‹  ๋ฒ„์ „์˜ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ.
  4. ์•ฑ์˜ ์„ค์น˜ ํŒŒ์ผ(APK)์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ.

โœ… ์ •๋‹ต: โ‘ก ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ.

๐Ÿ” ํ•ด์„ค:

  • ๋ชจ๋ฐ”์ผ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ํ…Œ์ŠคํŠธ:
    • ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ CPU, ๋„คํŠธ์›Œํฌ, GPS ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์œผ๋ฉด ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ์‹ฌํ•  ์ˆ˜ ์žˆ์Œ.
    • ๋ฐฐํ„ฐ๋ฆฌ ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ:
      • Android Profiler
      • Battery Historian
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ, ๋ฐฐํ„ฐ๋ฆฌ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ์€ ์•„๋‹˜.
    • ์ตœ์‹  ๋ฒ„์ „์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ OS ๋ฒ„์ „์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•จ.
    • APK ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค๊ณ  ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์€ ์•„๋‹˜.

โœ… ์ถ”๊ฐ€ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ ์‹œํ—˜์—์„œ ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…๋“ค

โœ… ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ „๋žต - ๋ฌด์—‡์„ ์ž๋™ํ™”ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋จผ์ € ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”
โœ… API ํ…Œ์ŠคํŠธ์—์„œ 429 Too Many Requests ์˜๋ฏธ ๋ฐ Rate Limiting ๊ฐœ๋… ์ˆ™์ง€
โœ… ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ CSRF ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•(CSRF ํ† ํฐ ํ™œ์šฉ)
โœ… ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing)์™€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด ์ดํ•ด
โœ… ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ํ…Œ์ŠคํŠธ - ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ๋ถ„์„ ํ•„์ˆ˜


โœ… 71. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ

๋ฌธ์ œ 71. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๋Š” ๊ฐ€์žฅ ์ฃผ์š”ํ•œ ์›์ธ์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ๋งค์ผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ UI๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ UI๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ:
    • UI๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋ฉด, ๊ธฐ์กด์˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
      • ํŽ˜์ด์ง€ ๊ฐ์ฒด ๋ชจ๋ธ (Page Object Model, POM) ์ ์šฉ → UI ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ ์ตœ์†Œํ™”.
      • CSS/XPath ๋Œ€์‹  ์•ˆ์ •์ ์ธ ์š”์†Œ ์„ ํƒ์ž ํ™œ์šฉ.
      • API ํ…Œ์ŠคํŠธ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ํ”„๋ŸฐํŠธ์—”๋“œ ๋ณ€ํ™”์— ๋œ ์˜์กดํ•˜๋Š” ์ž๋™ํ™” ๊ตฌ์ถ•.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋งค์ผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง„ ์•Š์Œ.
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์ง€๋ณด์ˆ˜ ๋‚œ์ด๋„๋Š” ๋ณ„๊ฐœ.
    • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ๋Š๋ฆฌ์ง„ ์•Š์Œ.

โœ… 72. API ํ…Œ์ŠคํŠธ์—์„œ ์‘๋‹ต ์‹œ๊ฐ„ ๋ฌธ์ œ

๋ฌธ์ œ 72. API ํ…Œ์ŠคํŠธ์—์„œ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•  ์š”์†Œ๋Š”?

  1. API์˜ HTTP ์ƒํƒœ ์ฝ”๋“œ
  2. API์˜ ๋ฐ์ดํ„ฐ ์‘๋‹ต ํฌ๊ธฐ
  3. ํด๋ผ์ด์–ธํŠธ์˜ ํ™”๋ฉด ํ•ด์ƒ๋„
  4. ๋„คํŠธ์›Œํฌ์˜ IP ์ฃผ์†Œ

โœ… ์ •๋‹ต: โ‘ก API์˜ ๋ฐ์ดํ„ฐ ์‘๋‹ต ํฌ๊ธฐ

๐Ÿ” ํ•ด์„ค:

  • API ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ์ฃผ์š” ์›์ธ:
    • ๋ฐ์ดํ„ฐ ์‘๋‹ต ํฌ๊ธฐ: ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์ „์†ก ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง.
    • ๋ถˆํ•„์š”ํ•œ API ํ˜ธ์ถœ: ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์š”์ฒญํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜.
    • ์„œ๋ฒ„ ๋ถ€ํ•˜ ์ฆ๊ฐ€: ๋™์‹œ์— ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
      • Pagination (ํŽ˜์ด์ง•) ์ ์šฉ: ํ•œ ๋ฒˆ์— ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์–‘์„ ์ค„์ž„.
      • Compression (์••์ถ•): gzip ์ ์šฉํ•˜์—ฌ ์‘๋‹ต ํฌ๊ธฐ ์ค„์ด๊ธฐ.
      • API ์บ์‹ฑ: ์ž์ฃผ ์š”์ฒญ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ ํ™œ์šฉ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ์š”์ฒญ ์„ฑ๊ณต ์—ฌ๋ถ€๋งŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Œ.
    • ํ™”๋ฉด ํ•ด์ƒ๋„๋Š” API ์‘๋‹ต ์†๋„์™€ ๋ฌด๊ด€.
    • ๋„คํŠธ์›Œํฌ IP ์ฃผ์†Œ๋Š” API ์†๋„ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ.

โœ… 73. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฌธ์ œ

๋ฌธ์ œ 73. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ํƒ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ์žฅ์‹œ๊ฐ„ ์‹คํ–‰ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
  3. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ •์  ๋ถ„์„ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  4. API ์‘๋‹ต ์†๋„๋ฅผ ์ธก์ •ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์žฅ์‹œ๊ฐ„ ์‹คํ–‰ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak):
    • ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š์•„ ์ ์  ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๋Š” ํ˜„์ƒ.
    • ์žฅ์‹œ๊ฐ„ ์‹คํ–‰ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š”์ง€๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•จ.
    • Heap Dump ๋ถ„์„, LeakCanary(Android), VisualVM(Java) ๋“ฑ์„ ํ™œ์šฉ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋‹จ์ˆœ ์‹คํ–‰์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ค์›€.
    • ์ •์  ๋ถ„์„์€ ์ผ๋ถ€ ์˜ค๋ฅ˜๋Š” ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋™์  ๋ถ„์„์ด ํ•„์š”ํ•จ.
    • API ์‘๋‹ต ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ๋ฌด๊ด€.

โœ… 74. ์• ์ž์ผ QA์—์„œ ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฌธ์ œ

๋ฌธ์ œ 74. ์• ์ž์ผ(Agile) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ QA์˜ ์—ญํ• ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  2. ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋งˆ๋‹ค ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  3. ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•œ๋‹ค.
  4. ๊ฐœ๋ฐœ๊ณผ QA๋Š” ๋ณ„๋„๋กœ ์ž‘์—…ํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋งˆ๋‹ค ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์• ์ž์ผ์—์„œ QA์˜ ์—ญํ• :
    • Shift-Left Testing: ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐํ•จ์„ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌ.
    • TDD(Test-Driven Development): ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑ ์ „์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑ.
    • CI/CD ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์‹คํ–‰: ์ง€์†์ ์ธ ํ…Œ์ŠคํŠธ์™€ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๊ฐœ๋ฐœ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ฒฐํ•จ ์ˆ˜์ • ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•จ.
    • ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜๋™์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ .
    • ์• ์ž์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐœ๋ฐœ๊ณผ QA๊ฐ€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ˜‘์—…ํ•ด์•ผ ํ•จ.

โœ… 75. ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ๋ฌธ์ œ

๋ฌธ์ œ 75. ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ(Accessibility Testing)์—์„œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋”(Screen Reader)๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š”?

  1. ๋น„์‹œ๊ฐ์  ์‚ฌ์šฉ์ž(์‹œ๊ฐ ์žฅ์• ์ธ)๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์—์„œ ํ•„์ˆ˜๋กœ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๊ธฐ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘  ๋น„์‹œ๊ฐ์  ์‚ฌ์šฉ์ž(์‹œ๊ฐ ์žฅ์• ์ธ)๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์Šคํฌ๋ฆฐ ๋ฆฌ๋”(Screen Reader):
    • ์‹œ๊ฐ ์žฅ์• ์ธ๋„ ์›น์‚ฌ์ดํŠธ ๋ฐ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ•„์ˆ˜์ ์ธ ์ ‘๊ทผ์„ฑ ๋„๊ตฌ.
    • Windows: NVDA, JAWS / Mac: VoiceOver / Android: TalkBack.
    • ์›น ์š”์†Œ(๋ฒ„ํŠผ, ๋งํฌ, ์ž…๋ ฅ ํ•„๋“œ ๋“ฑ)๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์ฝํžˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ ํ•„์š”.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์—์„œ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ ‘๊ทผ์„ฑ ํ‘œ์ค€(WCAG)์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•จ.
    • ๋ณด์•ˆ ์ทจ์•ฝ์ ๊ณผ๋Š” ๊ด€๋ จ์ด ์—†์Œ.
    • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ์ค€์ด ์•„๋‹˜.

โœ… ์ถ”๊ฐ€ ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ Pretest ๋Œ€๋น„ ์ค‘์š” ๊ฐœ๋…

โœ… ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์œ ์ง€๋ณด์ˆ˜ - UI ๋ณ€๊ฒฝ์— ๋Œ€๋น„ํ•œ ์•ˆ์ •์ ์ธ ์ž๋™ํ™” ์ „๋žต ํ•„์š”
โœ… API ํ…Œ์ŠคํŠธ์—์„œ ์‘๋‹ต ์†๋„ ๊ฐœ์„ ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ตœ์ ํ™”(Pagination, Compression)
โœ… ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํƒ์ง€(Heap Dump, LeakCanary ํ™œ์šฉ)
โœ… ์• ์ž์ผ QA - Shift-Left Testing, CI/CD ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์˜ ์—ญํ•  ์ดํ•ด
โœ… ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ - ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๋ฅผ ํ™œ์šฉํ•œ UI ์Œ์„ฑ ์•ˆ๋‚ด ๊ฒ€์ฆ ํ•„์š”


โœ… 76. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์œ ์ง€๋ณด์ˆ˜ ์ตœ์ ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 76. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.
  2. ๋‹จ์ˆœํ•œ UI ๋ณ€๊ฒฝ์—๋„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.
  3. ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ž๋™ํ™”ํ•œ๋‹ค.
  4. ๋ชจ๋“  UI ์š”์†Œ๋ฅผ XPath๋กœ ์‹๋ณ„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋‹จ์ˆœํ•œ UI ๋ณ€๊ฒฝ์—๋„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ํ•ต์‹ฌ ์ „๋žต:
    • ํŽ˜์ด์ง€ ๊ฐ์ฒด ๋ชจ๋ธ (Page Object Model, POM) ์ ์šฉ → UI ๋ณ€๊ฒฝ ์‹œ ์ฝ”๋“œ ์ˆ˜์ • ์ตœ์†Œํ™”.
    • CSS Selector, ID๋ฅผ ํ™œ์šฉํ•œ ์š”์†Œ ์‹๋ณ„ → XPath๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋–จ์–ด์ง.
    • API ๋ ˆ์ด์–ด์—์„œ ํ…Œ์ŠคํŠธ ์‹คํ–‰ → UI ์˜์กด์„ฑ์„ ์ค„์—ฌ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์†๋„ ๊ฐœ์„ .
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€.
    • ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๋ฉฐ 100% ์ž๋™ํ™”๋Š” ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•จ.
    • XPath๋Š” UI ๋ณ€๊ฒฝ ์‹œ ๊นจ์ง€๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋‚ฎ์Œ.

โœ… 77. API ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ Rate Limiting ๋ฌธ์ œ

๋ฌธ์ œ 77. API ์„œ๋ฒ„๊ฐ€ ์ดˆ๋‹น ์ตœ๋Œ€ 1,000๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์„ ๋•Œ, Rate Limiting์„ ์ ์ ˆํžˆ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€?

  1. API ์š”์ฒญ์„ ๋ฌด์กฐ๊ฑด ์ฐจ๋‹จํ•˜๊ณ  ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ๋‹ค์‹œ ํ—ˆ์šฉํ•œ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋žœ๋ค ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ—ˆ์šฉ๋œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด 429 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žฌ์‹œ๋„ ์ง€์—ฐ์„ ์œ ๋„ํ•œ๋‹ค.
  4. ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฉด ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ—ˆ์šฉ๋œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด 429 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žฌ์‹œ๋„ ์ง€์—ฐ์„ ์œ ๋„ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Rate Limiting (์š”์ฒญ ์ œํ•œ):
    • ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ์š”์ฒญ ํšŸ์ˆ˜๋ฅผ ์ œํ•œํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ณต์ •ํ•œ ์‚ฌ์šฉ์„ ๋ณด์žฅํ•˜๋Š” ๊ธฐ๋ฒ•.
    • 429 Too Many Requests ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , Retry-After ํ—ค๋”๋ฅผ ํฌํ•จํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ ์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•จ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ฌด์กฐ๊ฑด ์ฐจ๋‹จํ•˜๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ๋‚˜๋น ์ง.
    • ๋žœ๋ค ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ฎ์ถ”์–ด ๋น„ํšจ์œจ์ .
    • ์ž๋™ ์„œ๋ฒ„ ํ™•์žฅ์€ ๋น„์šฉ์ด ๋†’๊ณ , Rate Limiting์˜ ๋ชฉ์ ๊ณผ ๋‹ค๋ฆ„.

โœ… 78. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ์ตœ์ ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 78. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์€?

  1. ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์กฐ๊ฑด(WHERE ์ ˆ)์— ํฌํ•จ๋œ ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์—ฌ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ธ๋‹ค.
  4. ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ๋‹จ์ผ ์ปฌ๋Ÿผ์œผ๋กœ๋งŒ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์กฐ๊ฑด(WHERE ์ ˆ)์— ํฌํ•จ๋œ ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ์ตœ์ ํ™”:
    • WHERE, JOIN, ORDER BY, GROUP BY ์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ:
      sql
      ๋ณต์‚ฌํŽธ์ง‘
      CREATE INDEX idx_user_email ON users(email); SELECT * FROM users WHERE email = 'test@example.com';
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ชจ๋“  ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์“ฐ๊ธฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ , ์ €์žฅ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋จ.
    • ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ .
    • ๋ณตํ•ฉ ์ธ๋ฑ์Šค(Multi-Column Index)๋„ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ.

โœ… 79. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 79. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€?

  1. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์™ธ๋ถ€ ํ™˜๊ฒฝ๊ณผ์˜ ์—ฐ๊ฒฐ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ์‹œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜๋„๋ก ๊ตฌ์„ฑํ•œ๋‹ค.
  3. ์ปจํ…Œ์ด๋„ˆ๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ฒฉ๋ฆฌํ•œ๋‹ค.
  4. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ๋งŒ ๋กœ๊น…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ์‹œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜๋„๋ก ๊ตฌ์„ฑํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ:
    • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ž๋™ ๋กœ๋”ฉ:
      • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ.
      • docker-compose.yml์—์„œ ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜, entrypoint.sh ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ์˜ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ.
    • ๋„คํŠธ์›Œํฌ๋ฅผ ๋ฌด์กฐ๊ฑด ๊ฒฉ๋ฆฌํ•˜๋ฉด API ๋˜๋Š” DB ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›€.
    • ๋กœ๊ทธ๋Š” ์ค‘์•™ํ™”๋œ ๋กœ๊น… ์‹œ์Šคํ…œ(์˜ˆ: ELK, Loki)์œผ๋กœ ์ €์žฅํ•ด์•ผ ํ•จ.

โœ… 80. AI/ML ์‹œ์Šคํ…œ์˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 80. AI/ML ๋ชจ๋ธ์˜ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋ธ์ด ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์—์„œ ํ•ญ์ƒ ๋™์ผํ•œ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ๋ชจ๋ธ์˜ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์ •๋ฐ€๋„(Precision)์™€ ์žฌํ˜„์œจ(Recall)์„ ์ธก์ •ํ•œ๋‹ค.
  3. ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋ถ„์„ํ•˜์—ฌ ๋ชจ๋ธ์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  4. ๋ชจ๋ธ์˜ ์‹คํ–‰ ์†๋„๊ฐ€ ๋™์ผํ•œ์ง€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ธก์ •ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ชจ๋ธ์˜ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์ •๋ฐ€๋„(Precision)์™€ ์žฌํ˜„์œจ(Recall)์„ ์ธก์ •ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • AI/ML ๋ชจ๋ธ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ:
    • ๋ชจ๋ธ์˜ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ง€ํ‘œ:
      • ์ •๋ฐ€๋„(Precision): ๋ชจ๋ธ์ด ๊ธ์ •์ ์œผ๋กœ ์˜ˆ์ธกํ•œ ๊ฒƒ ์ค‘ ์‹ค์ œ๋กœ ๋งž์€ ๋น„์œจ.
      • ์žฌํ˜„์œจ(Recall): ์‹ค์ œ ์ •๋‹ต ์ค‘์—์„œ ๋ชจ๋ธ์ด ๋งžํžŒ ๋น„์œจ.
      • F1 Score: Precision๊ณผ Recall์˜ ์กฐํ™” ํ‰๊ท .
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • AI ๋ชจ๋ธ์€ ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•ด์•ผ ํ•จ.
    • ์†Œ์Šค ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์€ ๋ชจ๋ธ ํ’ˆ์งˆ ํ‰๊ฐ€์™€ ๋ฌด๊ด€ํ•จ.
    • ์‹คํ–‰ ์†๋„๋ณด๋‹ค๋Š” ์˜ˆ์ธก ์ •ํ™•๋„๊ฐ€ ๋” ์ค‘์š”ํ•œ ์š”์†Œ.

โœ… ๊ณ ๊ธ‰ QA ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ Pretest์—์„œ ์‹ฌํ™” ๊ฐœ๋… ๋Œ€๋น„

โœ… ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ตœ์ ํ™” - ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋†’์€ ์ž๋™ํ™” ์ฝ”๋“œ ์„ค๊ณ„ (POM, API ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ ์šฉ)
โœ… API Rate Limiting - 429 Too Many Requests ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ์š”์ฒญ ์žฌ์‹œ๋„ ์ „๋žต
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ - WHERE ์ ˆ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ธ๋ฑ์Šค ์ ์šฉ ์ „๋žต
โœ… ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ - ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ž๋™ ๋กœ๋“œ ๋ฐ ๋กœ๊น… ์ „๋žต ์ดํ•ด
โœ… AI/ML ํ…Œ์ŠคํŠธ - ์ •๋ฐ€๋„(Precision) & ์žฌํ˜„์œจ(Recall) ํ‰๊ฐ€ ๋ฐฉ์‹ ์ˆ™์ง€


โœ… 81. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ ํ”Œ๋ŸฌํŒ… ๋ฌธ์ œ(Flaky Test) ํ•ด๊ฒฐ

๋ฌธ์ œ 81. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ "ํ”Œ๋ŸฌํŒ… ํ…Œ์ŠคํŠธ(Flaky Test)"๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์š” ์›์ธ์€ ๋ฌด์—‡์ธ๊ฐ€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ์ž๋™ํ™”๋œ UI ํ…Œ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํ”Œ๋ŸฌํŒ… ํ…Œ์ŠคํŠธ(Flaky Test)๋ž€?
    • ๋™์ผํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต ์‹คํ–‰ํ•  ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ์ผ๊ด€๋˜์ง€ ์•Š๊ฒŒ ๋ณ€ํ•˜๋Š” ํ…Œ์ŠคํŠธ.
    • ํ•œ ๋ฒˆ์€ ํ†ต๊ณผํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์‹คํ–‰์—์„œ๋Š” ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ.
  • ์ฃผ์š” ์›์ธ:
    1. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฌธ์ œ: UI ์š”์†Œ๊ฐ€ ๋กœ๋”ฉ๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋จ.
    2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์ฐจ์ด: ๋กœ์ปฌ๊ณผ CI/CD ํ™˜๊ฒฝ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฆ„.
    3. ์„œ๋ฒ„ ์‘๋‹ต ์ง€์—ฐ: ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์†๋„๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์Œ.
    4. ํ…Œ์ŠคํŠธ ๊ฐ„ ์ข…์†์„ฑ: ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์คŒ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ํ…Œ์ŠคํŠธ ์•ˆ์ •ํ™”: ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ „์— Explicit Wait (๋ช…์‹œ์  ๋Œ€๊ธฐ) ์ ์šฉ.
    • ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ์„ค๊ณ„: ํ…Œ์ŠคํŠธ๊ฐ€ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ๊ฐœ์„ .
    • ๋„คํŠธ์›Œํฌ ์š”์ฒญ Mocking: ์„œ๋ฒ„ ์‘๋‹ต์„ ์•ˆ์ •์ ์œผ๋กœ ์ œ์–ด.

โœ… 82. API ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ ํƒ์ง€

๋ฌธ์ œ 82. API ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing)์—์„œ ์„œ๋ฒ„์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ์ดˆ๋‹น ์ฒ˜๋ฆฌ ์š”์ฒญ ์ˆ˜(TPS)์™€ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ API ์š”์ฒญ์„ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ถ€ํ•˜๋ฅผ ์ค€๋‹ค.
  3. ๋ชจ๋“  API ์š”์ฒญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•œ๋‹ค.
  4. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ํ›„ ๋กœ๊ทธ ํŒŒ์ผ๋งŒ ๋ถ„์„ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘  ์ดˆ๋‹น ์ฒ˜๋ฆฌ ์š”์ฒญ ์ˆ˜(TPS)์™€ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • API ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ ์ง€ํ‘œ:
    1. TPS(Transactions Per Second): ์ดˆ๋‹น ๋ช‡ ๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ธก์ •.
    2. ์‘๋‹ต ์‹œ๊ฐ„(Response Time): ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.
    3. CPU & ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์–ด๋Š ์ •๋„์ธ์ง€ ํŒŒ์•….
    4. DB ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ๊ฐ„: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‘๋‹ต ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ค๋Š”์ง€ ๋ถ„์„.
  • ๋ณ‘๋ชฉ ํ˜„์ƒ ํƒ์ง€ ๋ฐฉ๋ฒ•:
    • TPS๋Š” ์ผ์ •ํ•œ๋ฐ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€ํ•˜ ์ฆ๊ฐ€๋กœ ์ธํ•œ ๋ณ‘๋ชฉ ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    • ํŠน์ • API ํ˜ธ์ถœ์ด ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ๋‹ค๋ฉด, ์ฟผ๋ฆฌ ์ตœ์ ํ™” ๋˜๋Š” ์บ์‹ฑ ์ ์šฉ ํ•„์š”.
  • โ‘ก, โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ฌด์ž‘์œ„ ์š”์ฒญ์€ ํ…Œ์ŠคํŠธ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ.
    • ๋ชจ๋“  API ์š”์ฒญ์„ DB์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•˜๋ฉด ์‹ค์ œ ๋ถ€ํ•˜ ํ™˜๊ฒฝ๊ณผ ๋‹ค๋ฆ„.
    • ๋กœ๊ทธ ๋ถ„์„๋งŒ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋ณ‘๋ชฉ ํƒ์ง€๋Š” ์–ด๋ ค์›€.

โœ… 83. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๋ฌธ์ œ

๋ฌธ์ œ 83. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์˜ "๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level)"์„ ์กฐ์ •ํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š”?

  1. ํŠธ๋žœ์žญ์…˜์„ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  2. ๋™์‹œ ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ

โœ… ์ •๋‹ต: โ‘ก ๋™์‹œ ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ.

๐Ÿ” ํ•ด์„ค:

  • ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level)์ด๋ž€?
    • ๋‹ค์ค‘ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •.
  • ์ฃผ์š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€:
    1. READ UNCOMMITTED: ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋„ ์ฝ์„ ์ˆ˜ ์žˆ์Œ → Dirty Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    2. READ COMMITTED: ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์Œ → Dirty Read ๋ฐฉ์ง€.
    3. REPEATABLE READ: ๋™์ผ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฐ๊ณผ ์œ ์ง€ → Phantom Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    4. SERIALIZABLE: ํŠธ๋žœ์žญ์…˜์„ ์ง๋ ฌํ™”ํ•˜์—ฌ ์‹คํ–‰ → ๊ฐ€์žฅ ๋†’์€ ์ผ๊ด€์„ฑ ๋ณด์žฅ, ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋Šฅ ์ €ํ•˜.
  • โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ํŠธ๋žœ์žญ์…˜์ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์€ ACID ์›์น™์˜ ์ผ๋ถ€์ง€๋งŒ, ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ๋Š” ๋‹ค๋ฆ„.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ์™€๋Š” ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†์Œ.

โœ… 84. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

๋ฌธ์ œ 84. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์€?

  1. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•œ๋‹ค.
  2. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ญ์ƒ ๋‹จ์ผ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์„ ์ฐจ๋‹จํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ํ•ต์‹ฌ:
    1. CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ํŠน์ • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์ธ์ง€ ํ™•์ธ.
    2. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์ด ๋ณ‘๋ชฉ์„ ์ผ์œผํ‚ค๋Š”์ง€ ๋ถ„์„.
    3. ์Šคํ† ๋ฆฌ์ง€ I/O ์„ฑ๋Šฅ: ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๊ฐ€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•˜๋Š”์ง€ ๊ฒ€ํ† .
  • ํ…Œ์ŠคํŠธ ๋„๊ตฌ:
    • Prometheus + Grafana: ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง
    • K6, JMeter: ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹˜.
    • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹จ์ผ ๋…ธ๋“œ์—์„œ๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์Œ → ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•จ.
    • ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ฌด์กฐ๊ฑด ์ค„์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”.

โœ… 85. AI/ML ๋ชจ๋ธ์˜ ํ…Œ์ŠคํŠธ ์ตœ์ ํ™”

๋ฌธ์ œ 85. AI/ML ์‹œ์Šคํ…œ์—์„œ "ํŽธํ–ฅ(Bias)"์„ ๊ฒ€์ถœํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€?

  1. AI ๋ชจ๋ธ์ด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ๋ชจ๋ธ์ด ํŠน์ • ๊ทธ๋ฃน์„ ์ฐจ๋ณ„์ ์œผ๋กœ ์˜ˆ์ธกํ•˜๋Š”์ง€ ๊ฒ€ํ† ํ•˜๊ณ  ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric)๋ฅผ ์ ์šฉํ•œ๋‹ค.
  3. AI ๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.
  4. ๋ชจ๋ธ์˜ ์˜ˆ์ธก ์†๋„๋ฅผ ๋ฐ˜๋ณต ์ธก์ •ํ•˜์—ฌ ๋™์ผํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ชจ๋ธ์ด ํŠน์ • ๊ทธ๋ฃน์„ ์ฐจ๋ณ„์ ์œผ๋กœ ์˜ˆ์ธกํ•˜๋Š”์ง€ ๊ฒ€ํ† ํ•˜๊ณ  ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric)๋ฅผ ์ ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • AI ๋ชจ๋ธ์˜ ํŽธํ–ฅ(Bias) ๊ฒ€์ถœ ๋ฐฉ๋ฒ•:
    • ํŠน์ • ์„ฑ๋ณ„, ์ธ์ข…, ์—ฐ๋ น๋Œ€๊ฐ€ ๋ชจ๋ธ ์˜ˆ์ธก์—์„œ ์ฐจ๋ณ„์ ์œผ๋กœ ๋‹ค๋ค„์ง€๋Š”์ง€ ๋ถ„์„.
    • ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric): Equalized Odds, Demographic Parity, Disparate Impact ๋“ฑ.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
      • ๋ฐ์ดํ„ฐ์…‹ ์žฌ์กฐ์ • ๋ฐ ๊ท ํ˜• ์กฐ์ • (Rebalancing).
      • ํŽธํ–ฅ ๋ณด์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ.

โœ… ๊ณ ๊ธ‰ QA ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿ“Œ Pretest์—์„œ ์‹ฌํ™” ๊ฐœ๋… ๋Œ€๋น„

โœ… Flaky Test ํ•ด๊ฒฐ - ํ…Œ์ŠคํŠธ ๋Œ€๊ธฐ ์ ์šฉ & ๋…๋ฆฝ์  ํ…Œ์ŠคํŠธ ์„ค๊ณ„
โœ… API ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ - TPS & ์‘๋‹ต ์‹œ๊ฐ„ ๋ถ„์„์„ ํ†ตํ•œ ๋ณ‘๋ชฉ ํ•ด๊ฒฐ
โœ… DB ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ - ๋™์‹œ ์‹คํ–‰ ์‹œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€ ์ „๋žต
โœ… ์ปจํ…Œ์ด๋„ˆ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ - CPU/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•„์ˆ˜
โœ… AI ๋ชจ๋ธ ํ…Œ์ŠคํŠธ - ํŽธํ–ฅ(Bias) ๊ฒ€์ถœ ๋ฐ ๊ณต์ •์„ฑ ๊ฐœ์„  ์ „๋žต


โœ… 86. ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ตœ์ ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 86. ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ „๋žต์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์†๋„๋ฅผ ๋†’์ธ๋‹ค.
  2. ์ง€์†์  ํ†ตํ•ฉ(CI) ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ๋ฅผ ๊ณ„์ธตํ™”ํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  3. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ณด๋‹ค ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ตœ๋Œ€ํ•œ ๊ธธ๊ฒŒ ์ž‘์„ฑํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ๋„“ํžŒ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ง€์†์  ํ†ตํ•ฉ(CI) ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ๋ฅผ ๊ณ„์ธตํ™”ํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ์ „๋žต:
    1. ํ…Œ์ŠคํŠธ ๊ณ„์ธตํ™”(Test Pyramid) ์ ์šฉ:
      • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test) → ๋น ๋ฅด๊ณ  ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‹คํ–‰.
      • API ํ…Œ์ŠคํŠธ(Integration Test) → ์„œ๋น„์Šค ๊ฐ„ ์—ฐ๋™ ๊ฒ€์ฆ.
      • UI ํ…Œ์ŠคํŠธ(E2E Test) → ์ตœ์†Œํ•œ์˜ ํ…Œ์ŠคํŠธ๋งŒ ์œ ์ง€.
    2. ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution) ํ™œ์šฉ:
      • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์†๋„ ์ตœ์ ํ™”.
    3. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ:
      • Mocking & Stubbing์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋ถˆํ•„์š”ํ•œ ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ œ๊ฑฐ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๋ฉด CI/CD ์†๋„๊ฐ€ ์ €ํ•˜๋จ.
    • ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ์šฐ์„ ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•จ.
    • ๊ธด ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ์งง๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ค‘์š”.

โœ… 87. API ํ…Œ์ŠคํŠธ์—์„œ JWT ๋ณด์•ˆ ๋ฌธ์ œ

๋ฌธ์ œ 87. API์—์„œ JWT(JSON Web Token) ์ธ์ฆ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์€?

  1. JWT๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. JWT๋Š” ์ธ์ฆ์ด ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ฑ์ด ๋‚ฎ๋‹ค.
  3. JWT์˜ ์„œ๋ช…(Signature)์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ํ† ํฐ ์œ„๋ณ€์กฐ ๊ณต๊ฒฉ์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. JWT๋Š” ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ์ ˆ๋Œ€ ๋งŒ๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค.

โœ… ์ •๋‹ต: โ‘ข JWT์˜ ์„œ๋ช…(Signature)์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ํ† ํฐ ์œ„๋ณ€์กฐ ๊ณต๊ฒฉ์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • JWT(JSON Web Token) ๋ณด์•ˆ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ :
    • ์„œ๋ช…(Signature) ๊ฒ€์ฆ: JWT๋Š” Header.Payload.Signature ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง.
    • ๊ณต๊ฒฉ์ž๊ฐ€ JWT๋ฅผ ์œ„๋ณ€์กฐํ•˜๋Š” ๊ฒฝ์šฐ, ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์กฐ๋œ ํ† ํฐ์„ ์‹ ๋ขฐํ•˜๋Š” ๋ณด์•ˆ ๋ฌธ์ œ ๋ฐœ์ƒ.
    • ์˜ˆ:
      python
      ๋ณต์‚ฌํŽธ์ง‘
      import jwt token = jwt.encode({'user_id': 123}, "secret", algorithm="HS256")
    • ํ•ด๊ฒฐ์ฑ…:
      • JWT ์„œ๋ช…์„ ํ•ญ์ƒ ๊ฒ€์ฆํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(Key)๋กœ ๊ฒ€์ฆํ•  ๊ฒƒ.
      • ์งง์€ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์„ค์ • ๋ฐ Refresh Token ํ™œ์šฉ.
  • โ‘ , โ‘ก, โ‘ฃ ํ‹€๋ฆผ:
    • Base64 ์ธ์ฝ”๋”ฉ์€ ์•”ํ˜ธํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹จ์ˆœํ•œ ๋ณ€ํ™˜์ด์ง€๋งŒ, JWT ์ž์ฒด๋Š” ์„œ๋ช…์„ ํฌํ•จํ•˜๋ฏ€๋กœ ๋ณดํ˜ธ๋จ.
    • JWT๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•˜๋ฉฐ, ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ๋ณด๋‹ค ๋ณด์•ˆ์„ฑ์ด ๋” ๋†’์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ.
    • JWT๋Š” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์„ค์ •๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Refresh Token์„ ํ†ตํ•ด ๊ฐฑ์‹  ๊ฐ€๋Šฅ.

โœ… 88. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ํŠœ๋‹ ๋ฌธ์ œ

๋ฌธ์ œ 88. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ž˜๋ชป ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š”?

  1. ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ํ•ญ์ƒ ํ–ฅ์ƒ๋œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT, UPDATE, DELETE) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  4. ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT, UPDATE, DELETE) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ธ๋ฑ์Šค(Index) ๋ฌธ์ œ์ :
    • ์ฝ๊ธฐ(SELECT) ์†๋„๋Š” ํ–ฅ์ƒ๋˜์ง€๋งŒ, ์“ฐ๊ธฐ(INSERT, UPDATE, DELETE) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ.
    • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์“ฐ๊ธฐ ์ž‘์—… ์‹œ ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฟผ๋ฆฌ์—์„œ WHERE ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ.
    • ์ฝ๊ธฐ(Read-heavy) vs ์“ฐ๊ธฐ(Write-heavy) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž์ถฐ ์ธ๋ฑ์Šค ์ „๋žต์„ ์กฐ์ •.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•ญ์ƒ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์ง€๋Š” ์•Š์Œ.
    • ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ .
    • ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.

โœ… 89. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 89. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋Š”?

  1. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•œ๋‹ค.
  2. ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด ์›ํ™œํ•œ์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
  3. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  4. ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด ์›ํ™œํ•œ์ง€ ๊ฒ€์ฆํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ…Œ์ŠคํŠธ ํ•ต์‹ฌ:
    • ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ „์ฒด ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์นจ.
  • ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•:
    • curl ๋˜๋Š” nc(netcat)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ํ…Œ์ŠคํŠธ.
    • Kubernetes ํ™˜๊ฒฝ์—์„œ๋Š” kubectl exec์„ ํ™œ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ƒํƒœ ํ™•์ธ.
  • โ‘ , โ‘ข, โ‘ฃ ํ‹€๋ฆผ:
    • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹˜.
    • ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋Š” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.
    • ๋กœ๊ทธ ๋ถ„์„๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ž๋™ํ™”๋œ ๋„คํŠธ์›Œํฌ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•จ.

โœ… 90. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ Man-in-the-Middle ๊ณต๊ฒฉ ๋ฌธ์ œ

๋ฌธ์ œ 90. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ Man-in-the-Middle(MITM) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ์š”์ฒญ์„ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜ HTTP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  2. TLS/SSL์„ ์ ์šฉํ•˜๊ณ  ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋กœ๊ทธ ํŒŒ์ผ์— ์ €์žฅํ•˜์—ฌ ๋ถ„์„ํ•œ๋‹ค.
  4. ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•˜๋„๋ก ์ œํ•œํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก TLS/SSL์„ ์ ์šฉํ•˜๊ณ  ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • MITM(Man-in-the-Middle) ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • TLS/SSL์„ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”.
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆ(Certificate Pinning)ํ•˜๋„๋ก ์„ค์ •.
    • HTTPS๊ฐ€ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , Strict-Transport-Security (HSTS) ์„ค์ •.

โœ… ์‹ฌํ™” ๊ฐœ๋… ์ •๋ฆฌ

โœ… ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์ตœ์ ํ™” - ํ…Œ์ŠคํŠธ ๊ณ„์ธตํ™”(Test Pyramid) ๋ฐ ๋ณ‘๋ ฌ ์‹คํ–‰ ์ „๋žต
โœ… API ๋ณด์•ˆ - JWT ์„œ๋ช… ๊ฒ€์ฆ ํ•„์ˆ˜ ๋ฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ๊ด€๋ฆฌ
โœ… DB ์„ฑ๋Šฅ - ์ธ๋ฑ์Šค ๊ณผ๋‹ค ์‚ฌ์šฉ ์‹œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ ๊ณ ๋ ค
โœ… ์ปจํ…Œ์ด๋„ˆ ํ…Œ์ŠคํŠธ - ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฐ ํ†ต์‹  ๊ฒ€์ฆ์ด ํ•ต์‹ฌ
โœ… ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ - MITM ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ TLS/SSL ์ ์šฉ


โœ… 1. ํ”Œ๋ŸฌํŒ… ํ…Œ์ŠคํŠธ(Flaky Test) ๋ฌธ์ œ

๋ฌธ์ œ 1. ํ”Œ๋ŸฌํŒ… ํ…Œ์ŠคํŠธ(Flaky Test)์˜ ์ฃผ์š” ์›์ธ์€ ๋ฌด์—‡์ธ๊ฐ€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ์ž๋™ํ™”๋œ UI ํ…Œ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Flaky Test๋ž€?
    • ๊ฐ™์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ์ผ๊ด€๋˜์ง€ ์•Š๊ณ  ์„ฑ๊ณต/์‹คํŒจ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ํ…Œ์ŠคํŠธ.
  • ๋ฐœ์ƒ ์›์ธ:
    • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฌธ์ œ: UI ์š”์†Œ๊ฐ€ ๋กœ๋”ฉ๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์‹คํ–‰.
    • ํ™˜๊ฒฝ ์ฐจ์ด: ๋กœ์ปฌ๊ณผ CI/CD์—์„œ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฆ„.
    • ์„œ๋ฒ„ ์‘๋‹ต ์ง€์—ฐ: ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์†๋„ ๋ถˆ์•ˆ์ •.
    • ํ…Œ์ŠคํŠธ ๊ฐ„ ์ข…์†์„ฑ: ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์คŒ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • Explicit Wait (๋ช…์‹œ์  ๋Œ€๊ธฐ) ์ ์šฉ.
    • ํ…Œ์ŠคํŠธ ๊ฐ„ ๋…๋ฆฝ์„ฑ ํ™•๋ณด.
    • Mocking ๋ฐ Stubbing์„ ํ™œ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ์˜์กด์„ฑ ์ œ๊ฑฐ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ํ”Œ๋ŸฌํŒ… ํ…Œ์ŠคํŠธ์˜ ์ •์˜
โœ… ํ…Œ์ŠคํŠธ ๋…๋ฆฝ์„ฑ ํ™•๋ณด ๋ฐฉ๋ฒ•
โœ… Mocking๊ณผ Stubbing์˜ ์ฐจ์ด


โœ… 2. API Rate Limiting ๋ฌธ์ œ

๋ฌธ์ œ 2. API ์„œ๋ฒ„๊ฐ€ ์ดˆ๋‹น 1,000๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์„ ๋•Œ, ์ ์ ˆํ•œ Rate Limiting ์ ์šฉ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ์ดˆ๊ณผ ์š”์ฒญ์„ ๋ฌด์กฐ๊ฑด ์ฐจ๋‹จํ•œ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋žœ๋ค ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. ์ดˆ๊ณผ ์š”์ฒญ ์‹œ 429 Too Many Requests ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Retry-After ํ—ค๋”๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  4. API ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฉด ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์ดˆ๊ณผ ์š”์ฒญ ์‹œ 429 Too Many Requests ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Retry-After ํ—ค๋”๋ฅผ ์„ค์ •ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Rate Limiting(์š”์ฒญ ์ œํ•œ)์ด๋ž€?
    • ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ํ—ˆ์šฉ๋œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์ถ”๊ฐ€ ์š”์ฒญ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ์ˆ .
  • ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•:
    • 429 Too Many Requests ์‘๋‹ต์„ ๋ฐ˜ํ™˜.
    • Retry-After ํ—ค๋”๋ฅผ ํฌํ•จํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žฌ์‹œ๋„ํ•  ์‹œ๊ฐ„์„ ์•Œ๋ฆผ.
    • ํ† ํฐ ๋ฒ„ํ‚ท(Token Bucket), ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(Sliding Window) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™œ์šฉ ๊ฐ€๋Šฅ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… API Rate Limiting ๊ฐœ๋…
โœ… 429 Too Many Requests ์‘๋‹ต ์ฝ”๋“œ ์˜๋ฏธ
โœ… Rate Limiting ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜ (Token Bucket, Sliding Window)


โœ… 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค ์ตœ์ ํ™” ๋ฌธ์ œ

๋ฌธ์ œ 3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š”?

  1. ๋ชจ๋“  ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT, UPDATE, DELETE) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.
  3. ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
  4. ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ(INSERT, UPDATE, DELETE) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ธ๋ฑ์Šค(Index)์˜ ์—ญํ• :
    • SELECT ์„ฑ๋Šฅ์„ ๋†’์ด์ง€๋งŒ, ์“ฐ๊ธฐ ์„ฑ๋Šฅ(INSERT, UPDATE, DELETE)์€ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ.
  • ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์ ์šฉ ์ „๋žต:
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์ปฌ๋Ÿผ(WHERE ์ ˆ ํฌํ•จ)์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉ.
    • ์ฝ๊ธฐ(SELECT) ์ค‘์‹ฌ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์ง€๋งŒ, ์“ฐ๊ธฐ(INSERT) ์ค‘์‹ฌ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ตœ์†Œํ™”ํ•ด์•ผ ํ•จ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ์ธ๋ฑ์Šค์˜ ์žฅ์ ๊ณผ ๋‹จ์ 
โœ… SELECT vs INSERT/UPDATE ์„ฑ๋Šฅ ์ฐจ์ด
โœ… ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์ ์šฉ ์ „๋žต


โœ… 4. JWT ๋ณด์•ˆ ๋ฌธ์ œ

๋ฌธ์ œ 4. JWT(JSON Web Token)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ณด์•ˆ ์กฐ์น˜๋Š”?

  1. JWT๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ์•ˆ์ „ํ•˜๋‹ค.
  2. JWT์˜ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„๋ณ€์กฐ ๊ณต๊ฒฉ์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. JWT๋Š” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ํ•„์š” ์—†์œผ๋ฉฐ, ๋ฌด์ œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. JWT๋Š” ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ๋ณด๋‹ค ํ•ญ์ƒ ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค.

โœ… ์ •๋‹ต: โ‘ก JWT์˜ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„๋ณ€์กฐ ๊ณต๊ฒฉ์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • JWT ๋ณด์•ˆ ์ทจ์•ฝ์ :
    • ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์œ„๋ณ€์กฐ๋œ ํ† ํฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ์ œ ์ฝ”๋“œ:
      python
      ๋ณต์‚ฌํŽธ์ง‘
      import jwt token = jwt.encode({'user_id': 123}, "secret", algorithm="HS256")
  • ๋ณด์•ˆ ๊ฐ•ํ™” ๋ฐฉ๋ฒ•:
    • JWT ์„œ๋ช…์„ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ฆํ•  ๊ฒƒ.
    • ๋งŒ๋ฃŒ ์‹œ๊ฐ„(Expiration Time, exp) ์„ค์ • ํ•„์ˆ˜.
    • Refresh Token์„ ํ™œ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… JWT ๊ตฌ์กฐ (Header, Payload, Signature)
โœ… JWT ์„œ๋ช…(Signature) ๊ฒ€์ฆ ์›๋ฆฌ
โœ… JWT vs ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋น„๊ต


โœ… 5. AI/ML ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 5. AI/ML ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๊ฒ€์ฆํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ‰๊ฐ€ ์ง€ํ‘œ๋Š”?

  1. ๋ชจ๋ธ์ด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ๋ชจ๋ธ์˜ ์ •๋ฐ€๋„(Precision)์™€ ์žฌํ˜„์œจ(Recall)์„ ์ธก์ •ํ•œ๋‹ค.
  3. AI ๋ชจ๋ธ์˜ ์‹คํ–‰ ์†๋„๋ฅผ ํ‰๊ฐ€ํ•œ๋‹ค.
  4. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•œ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ชจ๋ธ์˜ ์ •๋ฐ€๋„(Precision)์™€ ์žฌํ˜„์œจ(Recall)์„ ์ธก์ •ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • AI/ML ๋ชจ๋ธ ํ‰๊ฐ€ ์ง€ํ‘œ:
    • ์ •๋ฐ€๋„(Precision): ๋ชจ๋ธ์ด ๊ธ์ • ์˜ˆ์ธกํ•œ ๊ฒƒ ์ค‘์—์„œ ์‹ค์ œ๋กœ ๋งž์€ ๋น„์œจ.
    • ์žฌํ˜„์œจ(Recall): ์‹ค์ œ ์ •๋‹ต ์ค‘์—์„œ ๋ชจ๋ธ์ด ๋งžํžŒ ๋น„์œจ.
    • F1 Score: Precision๊ณผ Recall์˜ ์กฐํ™” ํ‰๊ท .

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… Precision, Recall, F1 Score ๊ฐœ๋…
โœ… AI ๋ชจ๋ธ ํ‰๊ฐ€ ๋ฐฉ๋ฒ• (Confusion Matrix)
โœ… ๋ชจ๋ธ์˜ ๊ณผ์ ํ•ฉ(Overfitting) ๋ฌธ์ œ


โœ… 6. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 6. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์€?

  1. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•œ๋‹ค.
  2. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ญ์ƒ ๋‹จ์ผ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์„ ์ฐจ๋‹จํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ํ•ต์‹ฌ:
    1. CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง:
      • ํŠน์ • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์ธ์ง€ ํ™•์ธ.
      • docker stats, kubectl top pod ํ™œ์šฉ.
    2. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„:
      • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์ด ๋ณ‘๋ชฉ์„ ์ผ์œผํ‚ค๋Š”์ง€ ํ‰๊ฐ€.
    3. ์Šคํ† ๋ฆฌ์ง€ I/O ์„ฑ๋Šฅ:
      • ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๊ฐ€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•˜๋Š”์ง€ ๊ฒ€ํ† .

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ์ปจํ…Œ์ด๋„ˆ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ (Prometheus, Grafana, K6)
โœ… CPU & ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ช…๋ น์–ด (docker stats, kubectl top pod)
โœ… ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•


โœ… 7. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ MITM ๊ณต๊ฒฉ ๋ฌธ์ œ

๋ฌธ์ œ 7. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ Man-in-the-Middle(MITM) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ์š”์ฒญ์„ ์ผ๋ฐ˜ HTTP๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. TLS/SSL์„ ์ ์šฉํ•˜๊ณ  ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋กœ๊ทธ ํŒŒ์ผ์— ์ €์žฅํ•˜์—ฌ ๋ถ„์„ํ•œ๋‹ค.
  4. ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•˜๋„๋ก ์ œํ•œํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก TLS/SSL์„ ์ ์šฉํ•˜๊ณ  ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • MITM(Man-in-the-Middle) ๊ณต๊ฒฉ์ด๋ž€?
    • ๊ณต๊ฒฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋กœ์ฑ„์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ.
  • ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • TLS/SSL ์ ์šฉ: HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”.
    • ์ธ์ฆ์„œ ๊ฒ€์ฆ: Certificate Pinning ์ ์šฉํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋งŒ ํ—ˆ์šฉ.
    • HSTS(Strict-Transport-Security) ํ™œ์„ฑํ™”: ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTPS๋ฅผ ๊ฐ•์ œ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… MITM ๊ณต๊ฒฉ ๊ฐœ๋… ๋ฐ ์‚ฌ๋ก€
โœ… TLS/SSL ์ธ์ฆ์„œ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•
โœ… Certificate Pinning ๋ฐ HSTS์˜ ์—ญํ• 


โœ… 8. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ TPS์™€ ์‘๋‹ต ์‹œ๊ฐ„ ๊ด€๊ณ„ ๋ฌธ์ œ

๋ฌธ์ œ 8. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ ์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜ ์ˆ˜(TPS)์™€ ์‘๋‹ต ์‹œ๊ฐ„(Response Time)์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. TPS๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„๋„ ํ•ญ์ƒ ์ฆ๊ฐ€ํ•œ๋‹ค.
  2. TPS๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ ์‘๋‹ต ์‹œ๊ฐ„์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
  3. TPS๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์‘๋‹ต ์‹œ๊ฐ„์€ TPS์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ผ์ •ํ•˜๋‹ค.

โœ… ์ •๋‹ต: โ‘ข TPS๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • TPS(Transactions Per Second)๋ž€?
    • ์‹œ์Šคํ…œ์ด 1์ดˆ ๋™์•ˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜.
  • TPS์™€ ์‘๋‹ต ์‹œ๊ฐ„ ๊ด€๊ณ„:
    • ์ดˆ๋‹น ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.
    • ์˜ˆ:
      • TPS๊ฐ€ 1,000์ผ ๋•Œ ์‘๋‹ต ์‹œ๊ฐ„์ด 100ms์˜€์ง€๋งŒ,
      • TPS๊ฐ€ 5,000์ด ๋˜๋ฉด ์‘๋‹ต ์‹œ๊ฐ„์ด 500ms๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.
  • ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•:
    • ๋ถ€ํ•˜ ๋ถ„์‚ฐ(Load Balancing) ์ ์šฉ.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์ตœ์ ํ™” ๋ฐ ์บ์‹ฑ(Cache) ํ™œ์šฉ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… TPS, ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๊ด€๊ณ„ ์ดํ•ด
โœ… ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing) ๊ฐœ๋…
โœ… ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์บ์‹ฑ ์ „๋žต


โœ… 9. ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ๋ฌธ์ œ

๋ฌธ์ œ 9. ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ(Accessibility Testing)์—์„œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋”(Screen Reader)๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š”?

  1. ๋น„์‹œ๊ฐ์  ์‚ฌ์šฉ์ž(์‹œ๊ฐ ์žฅ์• ์ธ)๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  2. ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์—์„œ ํ•„์ˆ˜๋กœ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  3. ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๊ธฐ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘  ๋น„์‹œ๊ฐ์  ์‚ฌ์šฉ์ž(์‹œ๊ฐ ์žฅ์• ์ธ)๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์Šคํฌ๋ฆฐ ๋ฆฌ๋”(Screen Reader)๋ž€?
    • ์‹œ๊ฐ ์žฅ์• ์ธ์ด ์›น์‚ฌ์ดํŠธ ๋ฐ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก UI ์š”์†Œ๋ฅผ ์Œ์„ฑ์œผ๋กœ ์•ˆ๋‚ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด.
  • ์ฃผ์š” ์Šคํฌ๋ฆฐ ๋ฆฌ๋”:
    • Windows: NVDA, JAWS
    • Mac: VoiceOver
    • Android: TalkBack
  • ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•:
    • ์›น ํŽ˜์ด์ง€์˜ aria-label, alt ์†์„ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
    • ํ‚ค๋ณด๋“œ๋งŒ์œผ๋กœ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ์˜ ์ค‘์š”์„ฑ
โœ… ์ฃผ์š” ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ๋„๊ตฌ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•
โœ… WCAG(Web Content Accessibility Guidelines) ํ‘œ์ค€


โœ… 10. AI/ML ๋ชจ๋ธ์˜ ํŽธํ–ฅ(Bias) ๋ฌธ์ œ

๋ฌธ์ œ 10. AI/ML ๋ชจ๋ธ์—์„œ ํŽธํ–ฅ(Bias)์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋ธ์ด ํ•ญ์ƒ ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ์…‹์„ ๋‹ค์–‘ํ™”ํ•˜๊ณ  ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric)๋ฅผ ์ ์šฉํ•œ๋‹ค.
  3. AI ๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.
  4. ๋ชจ๋ธ์˜ ์‹คํ–‰ ์†๋„๋ฅผ ๋ฐ˜๋ณต ์ธก์ •ํ•˜์—ฌ ๋™์ผํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๋ฐ์ดํ„ฐ์…‹์„ ๋‹ค์–‘ํ™”ํ•˜๊ณ  ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric)๋ฅผ ์ ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • AI ๋ชจ๋ธ์˜ ํŽธํ–ฅ(Bias)์ด๋ž€?
    • ํŠน์ • ์„ฑ๋ณ„, ์ธ์ข…, ์—ฐ๋ น๋Œ€๊ฐ€ ๋ชจ๋ธ ์˜ˆ์ธก์—์„œ ์ฐจ๋ณ„์ ์œผ๋กœ ๋‹ค๋ค„์ง€๋Š” ๋ฌธ์ œ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ๋ฐ์ดํ„ฐ์…‹ ๋‹ค์–‘ํ™”: ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์ด ๊ณตํ‰ํ•˜๊ฒŒ ํฌํ•จ๋˜๋„๋ก ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์„ฑ.
    • ๊ณต์ •์„ฑ ์ง€ํ‘œ(Fairness Metric) ์ ์šฉ: Equalized Odds, Demographic Parity ๋“ฑ ํ™œ์šฉ.
    • ํŽธํ–ฅ ์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ: ๋ชจ๋ธ ํ›ˆ๋ จ ์‹œ ๋ฐ์ดํ„ฐ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๊ธฐ๋ฒ• ํ™œ์šฉ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… AI ๋ชจ๋ธ์˜ ํŽธํ–ฅ(Bias) ๊ฐœ๋…
โœ… ๋ฐ์ดํ„ฐ์…‹ ๋‹ค์–‘์„ฑ ํ™•๋ณด ๋ฐฉ๋ฒ•
โœ… Fairness Metric (Equalized Odds, Demographic Parity


โœ… 11. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰ ๋ฌธ์ œ

๋ฌธ์ œ 11. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution)์„ ์ ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ๋ฌธ์ œ๋Š”?

  1. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.
  2. ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ณ‘๋ ฌ ์‹คํ–‰์„ ์ ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ๋‚˜์˜จ๋‹ค.
  4. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ณ ์ •ํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution)์˜ ์žฅ์ :
    • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์†๋„๋ฅผ ๋Œ€ํญ ๋‹จ์ถ•ํ•˜์—ฌ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ:
    • ๊ณต์œ  ๋ฆฌ์†Œ์Šค ์ถฉ๋Œ: ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” API๋ฅผ ๋™์‹œ์— ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
    • ๋™๊ธฐํ™” ๋ฌธ์ œ: ํŠน์ • ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒ.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
      • ํ…Œ์ŠคํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ (Test Data Isolation).
      • Mocking์„ ํ™œ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ค„์ž„.
      • Thread-safeํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution) ๊ฐœ๋…๊ณผ ์žฅ์ 
โœ… ๊ณต์œ  ๋ฆฌ์†Œ์Šค ์ถฉ๋Œ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
โœ… Mocking๊ณผ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ์ตœ์ ํ™” ์ „๋žต


โœ… 12. API ๋ณด์•ˆ ํ…Œ์ŠคํŠธ์—์„œ CSRF ๋ฌธ์ œ

๋ฌธ์ œ 12. CSRF(Cross-Site Request Forgery) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ๊ฒ€์ฆํ•œ๋‹ค.
  2. ๋ชจ๋“  ์š”์ฒญ์„ HTTPS๋กœ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
  3. HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์„œ๋ฒ„์—์„œ ์ด๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.
  4. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ IP ์ฃผ์†Œ๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข HTTP ์š”์ฒญ์— CSRF ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์„œ๋ฒ„์—์„œ ์ด๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • CSRF(Cross-Site Request Forgery)๋ž€?
    • ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ๋œ ์„ธ์…˜์„ ์•…์šฉํ•˜์—ฌ ์›ํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ณต๊ฒฉ.
  • ๋ฐฉ์ง€ ๋ฐฉ๋ฒ•:
    • CSRF ํ† ํฐ ์‚ฌ์šฉ:
      • ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋งˆ๋‹ค ๊ณ ์œ ํ•œ CSRF ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•˜๋„๋ก ์š”๊ตฌ.
    • SameSite ์ฟ ํ‚ค ์„ค์ •:
      • SameSite=Strict ๋˜๋Š” SameSite=Lax๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œ.
    • Referrer ๊ฒ€์ฆ:
      • ์š”์ฒญ ์ถœ์ฒ˜(Referrer)๋ฅผ ํ™•์ธํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ์ธ์ง€ ๊ฒ€์ฆ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… CSRF ๊ณต๊ฒฉ ๊ฐœ๋…๊ณผ ์‹ค์ œ ์‚ฌ๋ก€
โœ… CSRF ํ† ํฐ์˜ ์—ญํ• ๊ณผ ์ ์šฉ ๋ฐฉ๋ฒ•
โœ… SameSite ์ฟ ํ‚ค ์„ค์ •์˜ ์ค‘์š”์„ฑ


โœ… 13. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํŠœ๋‹ ๋ฌธ์ œ

๋ฌธ์ œ 13. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  2. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ณ„ํš(Execution Plan)์„ ๋ถ„์„ํ•˜๊ณ  ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  3. ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์œ„ํ•ด ํ•ญ์ƒ ORDER BY๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  4. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ฐ€์ ธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•„ํ„ฐ๋งํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ณ„ํš(Execution Plan)์„ ๋ถ„์„ํ•˜๊ณ  ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํŠœ๋‹ ํ•ต์‹ฌ:
    • ์‹คํ–‰ ๊ณ„ํš(Execution Plan) ๋ถ„์„:
      • ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋–ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ตœ์ ํ™”.
    • ์ธ๋ฑ์Šค ์ตœ์ ํ™”:
      • WHERE, JOIN, GROUP BY ์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„ .
    • ์บ์‹ฑ ํ™œ์šฉ:
      • Redis ๋˜๋Š” Memcached๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์ค„์ž„.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ–‰ ๊ณ„ํš(Execution Plan) ๋ถ„์„ ๋ฐฉ๋ฒ•
โœ… ์ธ๋ฑ์Šค ํŠœ๋‹ ์ „๋žต (Clustered Index vs. Non-Clustered Index)
โœ… ์บ์‹ฑ(Cache) ํ™œ์šฉ ๋ฐฉ๋ฒ•


โœ… 14. ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 14. ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Network Load Testing)์—์„œ ์ธก์ •ํ•ด์•ผ ํ•  ์ฃผ์š” ์ง€ํ‘œ๋Š”?

  1. ํด๋ผ์ด์–ธํŠธ์˜ CPU ์‚ฌ์šฉ๋Ÿ‰
  2. ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ
  3. ์š”์ฒญ ์ง€์—ฐ ์‹œ๊ฐ„(Latency)๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)
  4. ์‘๋‹ต ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋งŒ ์ธก์ •ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์š”์ฒญ ์ง€์—ฐ ์‹œ๊ฐ„(Latency)๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)

๐Ÿ” ํ•ด์„ค:

  • ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํ•ต์‹ฌ ์ง€ํ‘œ:
    1. ์ง€์—ฐ ์‹œ๊ฐ„(Latency): ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๋ฐ›๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„.
    2. ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput): ์ดˆ๋‹น ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜(TPS).
    3. ์—๋Ÿฌ์œจ(Error Rate): ์š”์ฒญ ์ค‘ ์‹คํŒจํ•œ ์š”์ฒญ์˜ ๋น„์œจ.
  • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ:
    • JMeter, Gatling, K6 ๋“ฑ ์‚ฌ์šฉ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฐœ๋…๊ณผ ์ง€ํ‘œ
โœ… Latency vs. Throughput ์ฐจ์ด
โœ… ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ (JMeter, K6, Gatling)


โœ… 15. AI/ML ๋ชจ๋ธ์˜ ๊ณผ์ ํ•ฉ ๋ฌธ์ œ

๋ฌธ์ œ 15. AI/ML ๋ชจ๋ธ์—์„œ ๊ณผ์ ํ•ฉ(Overfitting)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?

  1. ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์™€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•œ๋‹ค.
  2. ๋ฐ์ดํ„ฐ์…‹์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ๋ชจ๋ธ์„ ๋น ๋ฅด๊ฒŒ ํ•™์Šต์‹œํ‚จ๋‹ค.
  3. ์ •๊ทœํ™”(Regularization) ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜๊ณ  ๊ต์ฐจ ๊ฒ€์ฆ(Cross Validation)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ๋ชจ๋ธ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๋„๋ก ์กฐ์ •ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ข ์ •๊ทœํ™”(Regularization) ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜๊ณ  ๊ต์ฐจ ๊ฒ€์ฆ(Cross Validation)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๊ณผ์ ํ•ฉ(Overfitting)์ด๋ž€?
    • ๋ชจ๋ธ์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์—๋Š” ์ •ํ™•ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์—๋Š” ์ผ๋ฐ˜ํ™”๋˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ์ •๊ทœํ™”(Regularization): L1, L2 ์ •๊ทœํ™” ์ ์šฉํ•˜์—ฌ ๋ชจ๋ธ์ด ํŠน์ • ํŒจํ„ด์— ๊ณผ์ ํ•ฉ๋˜์ง€ ์•Š๋„๋ก ์กฐ์ •.
    • ๊ต์ฐจ ๊ฒ€์ฆ(Cross Validation): ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Fold๋กœ ๋‚˜๋ˆ„์–ด ํ•™์Šต ๋ฐ ํ‰๊ฐ€๋ฅผ ๋ฐ˜๋ณต.
    • Dropout ์ ์šฉ: ๋‰ด๋Ÿด ๋„คํŠธ์›Œํฌ์—์„œ ์ผ๋ถ€ ๋…ธ๋“œ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ผ๋ฐ˜ํ™” ์„ฑ๋Šฅ ํ–ฅ์ƒ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… AI/ML ๋ชจ๋ธ์˜ ๊ณผ์ ํ•ฉ(Overfitting) ๊ฐœ๋…
โœ… ์ •๊ทœํ™”(Regularization) ๋ฐ ๊ต์ฐจ ๊ฒ€์ฆ(Cross Validation) ๊ธฐ๋ฒ•
โœ… Dropout๊ณผ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•(Data Augmentation) ๋ฐฉ๋ฒ•


โœ… 16. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ์ œ

๋ฌธ์ œ 16. CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜์—ฌ ์†๋„๋ฅผ ๋†’์ธ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์œ ํ˜•์„ ๊ณ„์ธตํ™”ํ•˜๊ณ (๋‹จ์œ„ ํ…Œ์ŠคํŠธ → ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ → UI ํ…Œ์ŠคํŠธ) ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  3. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋ณด๋‹ค ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ๋ฐœ ๋‹จ๊ณ„๊ฐ€ ๋๋‚œ ํ›„ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์œ ํ˜•์„ ๊ณ„์ธตํ™”ํ•˜๊ณ (๋‹จ์œ„ ํ…Œ์ŠคํŠธ → ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ → UI ํ…Œ์ŠคํŠธ) ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • CI/CD์—์„œ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ตœ์ ํ™”:
    • ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ(Test Pyramid) ์ ์šฉ:
      • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test) → ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Integration Test) → UI ํ…Œ์ŠคํŠธ(End-to-End Test) ์ˆœ์œผ๋กœ ์‹คํ–‰.
    • ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution) ํ™œ์šฉ:
      • ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ‘๋ ฌ ์‹คํ–‰.
    • ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต:
      • ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์ „์ฒด ๋ฐฐํฌ ์ง€์—ฐ ๋ฐฉ์ง€.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ(Test Pyramid) ๊ฐœ๋…
โœ… CI/CD์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•
โœ… ๋ณ‘๋ ฌ ์‹คํ–‰(Parallel Execution)์˜ ์žฅ์ ๊ณผ ๊ณ ๋ ค ์‚ฌํ•ญ


โœ… 17. API ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ

๋ฌธ์ œ 17. API ์ธ์ฆ์—์„œ OAuth 2.0์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ์€?

  1. Access Token์„ ๋งŒ๋ฃŒ ์—†์ด ์œ ์ง€ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ธ๋‹ค.
  2. Refresh Token์„ ์‚ฌ์šฉํ•˜์—ฌ Access Token์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.
  3. API ํ‚ค๋ฅผ URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ Access Token์„ ์ƒ์„ฑํ•˜๋„๋ก ํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก Refresh Token์„ ์‚ฌ์šฉํ•˜์—ฌ Access Token์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • OAuth 2.0 ๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ:
    • Access Token์€ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์žˆ์–ด์•ผ ํ•จ.
    • Refresh Token์„ ์‚ฌ์šฉํ•˜์—ฌ Access Token์„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•จ.
    • API ํ‚ค๋ฅผ URL์— ์ง์ ‘ ํฌํ•จํ•˜๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ์žˆ์Œ → HTTP ํ—ค๋” ๋˜๋Š” Body์— ํฌํ•จํ•ด์•ผ ํ•จ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… OAuth 2.0์˜ Access Token๊ณผ Refresh Token ์ฐจ์ด
โœ… API ํ‚ค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•
โœ… OAuth 2.0 ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€


โœ… 18. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๋ฌธ์ œ

๋ฌธ์ œ 18. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์—์„œ "๋”ํ‹ฐ ๋ฆฌ๋“œ(Dirty Read)"๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€?

  1. Read Uncommitted
  2. Read Committed
  3. Repeatable Read
  4. Serializable

โœ… ์ •๋‹ต: โ‘  Read Uncommitted

๐Ÿ” ํ•ด์„ค:

  • ๋”ํ‹ฐ ๋ฆฌ๋“œ(Dirty Read)๋ž€?
    • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ.
  • ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๋ณ„ Dirty Read ๋ฐœ์ƒ ์—ฌ๋ถ€:
    • Read Uncommitted: Dirty Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ โœ…
    • Read Committed: Dirty Read ๋ฐฉ์ง€ โŒ
    • Repeatable Read: Dirty Read ๋ฐฉ์ง€ + ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์œ ์ง€ โŒ
    • Serializable: ๊ฐ€์žฅ ๋†’์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€, Dirty Read ์™„๋ฒฝ ๋ฐฉ์ง€ โŒ

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๊ฐœ๋…
โœ… Dirty Read, Non-Repeatable Read, Phantom Read ์ฐจ์ด
โœ… ํŠธ๋žœ์žญ์…˜ ACID ์›์น™


โœ… 19. ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ Latency์™€ Throughput ๋ฌธ์ œ

๋ฌธ์ œ 19. ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ "Latency"์™€ "Throughput"์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

  1. Latency๋Š” ์ดˆ๋‹น ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜์ด๋ฉฐ, Throughput์€ ์‘๋‹ต ์†๋„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  2. Latency๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์‘๋‹ต ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ, Throughput์ด ๋†’์„์ˆ˜๋ก ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Throughput์ด ์ฆ๊ฐ€ํ•˜๋ฉด ํ•ญ์ƒ Latency๋„ ์ฆ๊ฐ€ํ•œ๋‹ค.
  4. Latency์™€ Throughput์€ ๋™์ผํ•œ ๊ฐœ๋…์ด๋‹ค.

โœ… ์ •๋‹ต: โ‘ก Latency๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์‘๋‹ต ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ, Throughput์ด ๋†’์„์ˆ˜๋ก ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Latency(์ง€์—ฐ ์‹œ๊ฐ„):
    • ์š”์ฒญ์ด ์ „์†ก๋œ ํ›„ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.
    • ๋‹จ์œ„: ๋ฐ€๋ฆฌ์ดˆ(ms).
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰):
    • ์ดˆ๋‹น ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜(TPS, RPS).
    • ๋‹จ์œ„: ์š”์ฒญ/์ดˆ(Requests Per Second).

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… Latency์™€ Throughput์˜ ์ฐจ์ด
โœ… ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ง€ํ‘œ (TPS, RPS, P99 Latency)
โœ… ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(Load Testing) ๋ฐฉ๋ฒ•


โœ… 20. ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฌธ์ œ

๋ฌธ์ œ 20. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํšจ๊ณผ์ ์ธ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ๋ฒ•์€?

  1. ๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  2. ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋กœ๊น… ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.
  3. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•˜์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๋งŒ ํ™•์ธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋กœ๊น… ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ต์‹ฌ:
    • ๋กœ๊น…:
      • ๊ฐœ๋ณ„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋กœ๊น… ์‹œ์Šคํ…œ(ELK Stack, Loki, Fluentd) ํ™œ์šฉ.
    • ๋ชจ๋‹ˆํ„ฐ๋ง:
      • Prometheus, Grafana๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰(CPU, Memory, Network)์„ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น… ์‹œ์Šคํ…œ (ELK Stack, Loki)
โœ… Prometheus & Grafana๋ฅผ ํ™œ์šฉํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง
โœ… ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฐฉ์‹ (Stdout vs. Sidecar)


๐Ÿ”ฅ ๊ณ ๊ธ‰ QA ๊ฐœ๋… ์š”์•ฝ

๐Ÿ“Œ ์ด๋ฒˆ์— ๋‹ค๋ฃฌ 5๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐœ๋…

โœ… CI/CD์—์„œ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์ตœ์ ํ™” (Test Pyramid, ๋ณ‘๋ ฌ ์‹คํ–‰ ํ™œ์šฉ)
โœ… OAuth 2.0 ๋ณด์•ˆ (Access Token๊ณผ Refresh Token ์ฐจ์ด์ )
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ (Read Uncommitted → Dirty Read ๊ฐ€๋Šฅ)
โœ… ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ์ง€ํ‘œ (Latency vs. Throughput ๊ฐœ๋… ๋ฐ ์ฐจ์ด์ )
โœ… ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์˜ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ์ „๋žต (ELK, Prometheus, Grafana ํ™œ์šฉ)


โœ… 21. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ ๋™์  ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ฌธ์ œ

๋ฌธ์ œ 21. ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์—์„œ ๋™์  ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์€?

  1. ๋ชจ๋“  ํ…Œ์ŠคํŠธ์—์„œ ๋™์ผํ•œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ์‹คํ–‰๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•œ ํ›„ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.
  4. ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’์„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋‚ด์— ์ง์ ‘ ์ž‘์„ฑํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ํ…Œ์ŠคํŠธ ์‹คํ–‰๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ:
    • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฐ„ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•ด์•ผ ํ•จ.
  • ๋™์  ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•:
    • Setup & Teardown ํŒจํ„ด ์ ์šฉ:
      • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ „(setUp()) ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ.
      • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ํ›„(tearDown()) ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ •๋ฆฌ.
    • Mocking & Stubbing ํ™œ์šฉ:
      • ์™ธ๋ถ€ ์‹œ์Šคํ…œ์ด๋‚˜ DB์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , ๊ฐ€์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋™์  ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• (Setup & Teardown)
โœ… Mocking & Stubbing ๊ฐœ๋…๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•
โœ… ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ œ์ 


โœ… 22. API Rate Limiting์—์„œ Sliding Window ๊ธฐ๋ฒ• ๋ฌธ์ œ

๋ฌธ์ œ 22. API Rate Limiting์„ ์ ์šฉํ•  ๋•Œ "Sliding Window" ๊ธฐ๋ฒ•์˜ ์ฃผ์š” ํŠน์ง•์€?

  1. ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ—ˆ์šฉ๋œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋ชจ๋“  ์š”์ฒญ์„ ์ฐจ๋‹จํ•œ๋‹ค.
  2. ๊ณผ๊ฑฐ ์ผ์ • ์‹œ๊ฐ„ ๋‚ด ์š”์ฒญ ๊ฐœ์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ œํ•œ์„ ์ ์šฉํ•œ๋‹ค.
  3. ์š”์ฒญ์„ ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ง€์—ฐ์‹œํ‚จ ํ›„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  4. ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฉด ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘ก ๊ณผ๊ฑฐ ์ผ์ • ์‹œ๊ฐ„ ๋‚ด ์š”์ฒญ ๊ฐœ์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ œํ•œ์„ ์ ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • Sliding Window ๊ธฐ๋ฒ•์˜ ํŠน์ง•:
    • ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(์˜ˆ: 1๋ถ„) ๋™์•ˆ ํ—ˆ์šฉ๋œ ์š”์ฒญ ์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ API ์š”์ฒญ์„ ์ œํ•œ.
    • ์š”์ฒญ์ด ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ๋ถ„ํฌ๋˜๋„๋ก ์œ ๋„ํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐ.
  • ๊ธฐ์กด ๋ฐฉ๋ฒ•๊ณผ์˜ ์ฐจ์ด:
    • Fixed Window: ํŠน์ • ์‹œ๊ฐ„(์˜ˆ: 1๋ถ„) ๋™์•ˆ ์š”์ฒญ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œ (ํ•œ๊ณ„: ์œˆ๋„์šฐ๊ฐ€ ๊ฐฑ์‹ ๋  ๋•Œ ๊ธ‰๊ฒฉํ•œ ์š”์ฒญ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ).
    • Token Bucket: ์ผ์ • ์†๋„๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… API Rate Limiting ๊ธฐ๋ฒ• (Fixed Window vs. Sliding Window vs. Token Bucket)
โœ… Sliding Window์˜ ์‹ค๋ฌด ์ ์šฉ ๋ฐฉ์‹
โœ… Rate Limiting์ด ํ•„์š”ํ•œ ์ด์œ 


โœ… 23. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ๋“œ๋ฝ ๋ฌธ์ œ

๋ฌธ์ œ 23. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ๋“œ๋ฝ(Deadlock)์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์ƒํ™ฉ์€?

  1. ๋‘ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทธ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.
  2. ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์‹คํ–‰๋œ๋‹ค.
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ READ ONLY๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  4. ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘  ๋‘ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทธ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • ๋ฐ๋“œ๋ฝ(Deadlock)์ด๋ž€?
    • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ๊ฐ€ ๋ณด์œ ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ.
  • ๋ฐœ์ƒ ์›์ธ:
    • ํŠธ๋žœ์žญ์…˜ A๊ฐ€ ๋ฆฌ์†Œ์Šค X๋ฅผ ์ž ๊ทผ ํ›„, ๋ฆฌ์†Œ์Šค Y๋ฅผ ์š”์ฒญ.
    • ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ๋ฆฌ์†Œ์Šค Y๋ฅผ ์ž ๊ทผ ํ›„, ๋ฆฌ์†Œ์Šค X๋ฅผ ์š”์ฒญ → ๊ต์ฐฉ ์ƒํƒœ ๋ฐœ์ƒ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • ํŠธ๋žœ์žญ์…˜์ด ํ•ญ์ƒ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ž ๊ทธ๋„๋ก ๊ฐ•์ œ.
    • ํŠธ๋žœ์žญ์…˜ ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•˜์—ฌ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ฐ•์ œ ํ•ด์ œ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… ๋ฐ๋“œ๋ฝ(Deadlock)์˜ ์ •์˜์™€ ๋ฐœ์ƒ ์กฐ๊ฑด
โœ… ๋ฐ๋“œ๋ฝ ๋ฐฉ์ง€ ๋ฐฉ๋ฒ• (Lock Ordering, Timeout ์„ค์ •)
โœ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๊ณผ์˜ ๊ด€๊ณ„


โœ… 24. ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ P99 Latency ๋ฌธ์ œ

๋ฌธ์ œ 24. ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ "P99 Latency"๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€?

  1. 99%์˜ ์š”์ฒญ์ด ํŠน์ • ์‘๋‹ต ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  2. ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.
  3. ์ตœ์†Œ ์‘๋‹ต ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.
  4. ์ดˆ๋‹น ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ์ˆ˜(TPS)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

โœ… ์ •๋‹ต: โ‘  99%์˜ ์š”์ฒญ์ด ํŠน์ • ์‘๋‹ต ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ” ํ•ด์„ค:

  • P99 Latency๋ž€?
    • 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜(Percentile 99) ์‘๋‹ต ์‹œ๊ฐ„.
    • 99%์˜ ์š”์ฒญ์ด P99 ๊ฐ’ ์ดํ•˜์˜ ์‘๋‹ต ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ์˜๋ฏธ.
  • ์„ฑ๋Šฅ ํ‰๊ฐ€ ์‹œ ์ค‘์š”์„ฑ:
    • ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„(Mean Latency)๋ณด๋‹ค P99 Latency๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋ฐ˜์˜.
    • ์˜ˆ:
      • P50 Latency = 50%์˜ ์š”์ฒญ์ด ์ด ์‹œ๊ฐ„๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋จ.
      • P99 Latency = 99%์˜ ์š”์ฒญ์ด ์ด ์‹œ๊ฐ„๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋จ.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… P50, P90, P99 Latency ๊ฐœ๋…
โœ… ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„ vs. ๋ฐฑ๋ถ„์œ„ ์‘๋‹ต ์‹œ๊ฐ„์˜ ์ฐจ์ด
โœ… ์„ฑ๋Šฅ ์ตœ์ ํ™” ์‹œ P99 Latency ๊ณ ๋ ค ๋ฐฉ๋ฒ•


โœ… 25. ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ ๋ฌธ์ œ

๋ฌธ์ œ 25. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ "Bridge Network" ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?

  1. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  2. ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๊ฒฉ๋ฆฌ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  3. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ.
  4. ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ.

โœ… ์ •๋‹ต: โ‘ก ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๊ฒฉ๋ฆฌ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ.

๐Ÿ” ํ•ด์„ค:

  • Bridge Network๋ž€?
    • Docker์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ ๋ฐ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ.
  • ์ฃผ์š” ํŠน์ง•:
    • ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๋‚ด ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ๋Š” ํ†ต์‹  ๊ฐ€๋Šฅ.
    • ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์›ํ•˜๋ฉด ํฌํŠธ ๋งคํ•‘(port mapping) ํ•„์š”.
  • ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ๊ณผ์˜ ๋น„๊ต:
    • Host Network: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉ.
    • Overlay Network: ์—ฌ๋Ÿฌ ๋…ธ๋“œ(cluster)์—์„œ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ์ง€์›.

๐Ÿ“Œ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…:
โœ… Bridge Network, Host Network, Overlay Network ์ฐจ์ด
โœ… ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋ฐฉ์‹
โœ… ํฌํŠธ ๋งคํ•‘(Port Mapping)๊ณผ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ


# ์ถ”๊ฐ€ CS ์ง€์‹

๐Ÿ”ต 1xx (์ •๋ณด ์‘๋‹ต, Informational)

์š”์ฒญ์ด ์ˆ˜๋ฝ๋˜์—ˆ์œผ๋ฉฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณ„์† ์ง„ํ–‰ ์ค‘์ผ ๋•Œ ์‚ฌ์šฉ๋ผ.

  • 100 Continue
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ํ—ค๋”๋ฅผ ์ „์†กํ–ˆ๊ณ , ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ๋ฐ›์•„๋“ค์—ฌ ๋ณธ๋ฌธ์„ ๊ณ„์† ์ „์†กํ•˜๋ผ๊ณ  ์•Œ๋ ค์คŒ.
  • 101 Switching Protocols
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ”„๋กœํ† ์ฝœ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ–ˆ๊ณ , ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์Šน์ธํ•จ. (์˜ˆ: HTTP → WebSocket)
  • 102 Processing (WebDAV)
    ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ์ค‘์ด๋ฉฐ ์•„์ง ์‘๋‹ต์„ ์ค„ ์ˆ˜ ์—†์Œ์„ ์•Œ๋ฆผ.
  • 103 Early Hints
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๋„๋ก ์œ ๋„ํ•˜๋Š” ์ƒํƒœ ์ฝ”๋“œ.

๐ŸŸข 2xx (์„ฑ๊ณต, Success)

์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ด.

  • 200 OK
    ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋จ. (GET: ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜, POST: ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ๋จ)
  • 201 Created
    ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋จ.
  • 202 Accepted
    ์š”์ฒญ์ด ์ˆ˜๋ฝ๋˜์—ˆ์ง€๋งŒ, ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์Œ. (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋“ฑ)
  • 203 Non-Authoritative Information
    ์š”์ฒญ์€ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ, ์‘๋‹ต์ด ์›๋ณธ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์†Œ์Šค์—์„œ ์ œ๊ณต๋จ.
  • 204 No Content
    ์š”์ฒญ์€ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ, ์‘๋‹ต ๋ณธ๋ฌธ์ด ์—†์Œ. (์˜ˆ: DELETE ์š”์ฒญ)
  • 205 Reset Content
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž…๋ ฅ ์–‘์‹์„ ์ดˆ๊ธฐํ™”ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ์‘๋‹ต.
  • 206 Partial Content
    ์ผ๋ถ€ ๋ฒ”์œ„๋งŒ ๋ฐ˜ํ™˜๋จ. (์˜ˆ: ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ์ค‘ ์ผ๋ถ€๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ)
  • 207 Multi-Status (WebDAV)
    ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต.

๐ŸŸก 3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜, Redirection)

์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ด๋™๋˜์—ˆ๊ฑฐ๋‚˜, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ URL๋กœ ์ด๋™ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋ผ.

  • 300 Multiple Choices
    ์š”์ฒญ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํƒํ•ด์•ผ ํ•จ.
  • 301 Moved Permanently
    ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™๋จ. (SEO์—์„œ ์ค‘์š”, ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๊ฐ€๋Šฅ)
  • 302 Found (Temporary Redirect)
    ๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ด๋™๋จ. (๊ธฐ์กด์—๋Š” ์ž„์‹œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Œ)
  • 303 See Other
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ URL๋กœ ์š”์ฒญํ•ด์•ผ ํ•จ. (์˜ˆ: POST ํ›„ GET์œผ๋กœ ์ด๋™)
  • 304 Not Modified
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์บ์‹œ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • 307 Temporary Redirect
    302์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ.
  • 308 Permanent Redirect
    301๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•จ.

๐Ÿ”ด 4xx (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜, Client Error)

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ๊ถŒํ•œ์ด ์—†์„ ๋•Œ ์‚ฌ์šฉ๋ผ.

  • 400 Bad Request
    ์š”์ฒญ์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์„œ๋ฒ„๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ.
  • 401 Unauthorized
    ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ œ๊ณต๋˜์ง€ ์•Š์Œ.
  • 402 Payment Required (๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)
    ๊ฒฐ์ œ๊ฐ€ ํ•„์š”ํ•จ.
  • 403 Forbidden
    ์ธ์ฆ์€ ๋˜์—ˆ์ง€๋งŒ, ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†์Œ.
  • 404 Not Found
    ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ.
  • 405 Method Not Allowed
    ์š”์ฒญํ•œ HTTP ๋ฉ”์„œ๋“œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ. (์˜ˆ: GET๋งŒ ๊ฐ€๋Šฅํ•œ๋ฐ POST ์š”์ฒญํ•œ ๊ฒฝ์šฐ)
  • 406 Not Acceptable
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ํ˜•์‹์ด ์ง€์›๋˜์ง€ ์•Š์Œ.
  • 407 Proxy Authentication Required
    ํ”„๋ก์‹œ ์ธ์ฆ์ด ํ•„์š”ํ•จ.
  • 408 Request Timeout
    ์š”์ฒญ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋จ.
  • 409 Conflict
    ์š”์ฒญ์ด ํ˜„์žฌ ๋ฆฌ์†Œ์Šค ์ƒํƒœ์™€ ์ถฉ๋Œํ•จ. (์˜ˆ: ๋ฐ์ดํ„ฐ ์ค‘๋ณต, ๋™์‹œ ์ˆ˜์ • ์ถฉ๋Œ)
  • 410 Gone
    ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ๋จ. (404์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์‚ญ์ œ๋œ ๊ฒƒ์ด ํ™•์‹คํ•œ ๊ฒฝ์šฐ)
  • 411 Length Required
    Content-Length ํ—ค๋”๊ฐ€ ํ•„์š”ํ•จ.
  • 412 Precondition Failed
    ์š”์ฒญ์ด ์ง€์ •๋œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•จ.
  • 413 Payload Too Large
    ์š”์ฒญ ๋ณธ๋ฌธ์ด ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํผ.
  • 414 URI Too Long
    ์š”์ฒญ URL์ด ๋„ˆ๋ฌด ๊น€.
  • 415 Unsupported Media Type
    ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ์ฝ˜ํ…์ธ  ํƒ€์ž…์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ.
  • 416 Range Not Satisfiable
    ์š”์ฒญํ•œ ๋ฒ”์œ„๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Œ.
  • 417 Expectation Failed
    Expect ํ—ค๋”์˜ ์š”๊ตฌ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•  ์ˆ˜ ์—†์Œ.
  • 418 I'm a teapot (๋†๋‹ด ์ฝ”๋“œ, RFC 2324)
    ์„œ๋ฒ„๊ฐ€ ์ฐป์ฃผ์ „์ž๋ผ์„œ ์ปคํ”ผ๋ฅผ ๋“์ผ ์ˆ˜ ์—†์Œ.
  • 421 Misdirected Request
    ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ.
  • 425 Too Early
    ์„œ๋ฒ„๊ฐ€ ์žฌ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์ „์— ์‘๋‹ต์„ ๋ณด๋‚ด๊ธฐ์—๋Š” ์ด๋ฆ„.
  • 426 Upgrade Required
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ”„๋กœํ† ์ฝœ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•จ.
  • 428 Precondition Required
    ์š”์ฒญ์— ์„ ํ–‰ ์กฐ๊ฑด์ด ํ•„์š”ํ•จ.
  • 429 Too Many Requests
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋ƒ„. (Rate Limiting)
  • 431 Request Header Fields Too Large
    ์š”์ฒญ ํ—ค๋”๊ฐ€ ๋„ˆ๋ฌด ํผ.
  • 451 Unavailable For Legal Reasons
    ๋ฒ•์  ์ด์œ ๋กœ ์ธํ•ด ์ ‘๊ทผ์ด ์ œํ•œ๋จ.

โšซ 5xx (์„œ๋ฒ„ ์˜ค๋ฅ˜, Server Error)

์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‚ฌ์šฉ๋ผ.

  • 500 Internal Server Error
    ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜. (์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ ์—๋Ÿฌ)
  • 501 Not Implemented
    ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ.
  • 502 Bad Gateway
    ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž˜๋ชป๋œ ์‘๋‹ต์„ ๋ฐ›์Œ.
  • 503 Service Unavailable
    ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์ด๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜ ์ค‘์ด๋ผ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•จ.
  • 504 Gateway Timeout
    ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•จ.
  • 505 HTTP Version Not Supported
    ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ HTTP ๋ฒ„์ „์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ.
  • 506 Variant Also Negotiates
    ์š”์ฒญ๋œ ์ฝ˜ํ…์ธ  ํ˜‘์ƒ์ด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง.
  • 507 Insufficient Storage (WebDAV)
    ์„œ๋ฒ„์˜ ์ €์žฅ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•จ.
  • 508 Loop Detected (WebDAV)
    ์š”์ฒญ์ด ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๊ฐ์ง€ํ•จ.
  • 510 Not Extended
    ์ถ”๊ฐ€ ํ™•์žฅ์ด ํ•„์š”ํ•จ.
  • 511 Network Authentication Required
    ๋„คํŠธ์›Œํฌ ์ธ์ฆ์ด ํ•„์š”ํ•จ.

# SOAP API

SOAP API๋Š” Simple Object Access Protocol์˜ ์•ฝ์ž๋กœ, ์ฃผ๋กœ ์›น ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด์•ผ. SOAP๋Š” ๋ฉ”์‹œ์ง€ ํ˜•์‹๊ณผ ํ†ต์‹  ๊ทœ์•ฝ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ณด์•ˆ์„ฑ๊ณผ ํ‘œ์ค€ํ™”๊ฐ€ ์ค‘์š”ํ•œ ๊ธฐ์—… ์‹œ์Šคํ…œ์ด๋‚˜ ์ •๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ผ.

์ด์ œ ์ข€ ๋” ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋‚˜์”ฉ ์„ค๋ช…ํ•ด ์ค„๊ฒŒ.


๐Ÿ“Œ SOAP API์˜ ํŠน์ง•

  1. XML ๊ธฐ๋ฐ˜
    • SOAP๋Š” **XML (Extensible Markup Language)**์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ , ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ด.
    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ XML ํ˜•์‹์œผ๋กœ ์ง๋ ฌํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด ๊ฐ„ ํ˜ธํ™˜์ด ์‰ฌ์›Œ.
  2. HTTP ๋˜๋Š” ๋‹ค๋ฅธ ์ „์†ก ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๋Œ€๋ถ€๋ถ„ HTTP๋‚˜ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, FTP๋‚˜ SMTP ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด.
  3. ์—„๊ฒฉํ•œ ํ‘œ์ค€ ๋ฐ ๊ตฌ์กฐ
    • SOAP์€ W3C (World Wide Web Consortium)์—์„œ ํ‘œ์ค€์œผ๋กœ ์ •์˜๋œ ํ”„๋กœํ† ์ฝœ๋กœ, ๋ช…ํ™•ํ•œ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ๊ฐ€ ์žˆ์–ด.
    • ๋ฉ”์‹œ์ง€๋Š” ํ•ญ์ƒ ํŠน์ •ํ•œ XML ํฌ๋งท์„ ๋”ฐ๋ฅด๋ฉฐ, ์ž˜๋ชป๋œ ๊ตฌ์กฐ๋ผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด.
  4. WSDL (Web Service Description Language) ์ง€์›
    • SOAP์€ ์„œ๋น„์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” WSDL ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ผ.
    • WSDL์€ ์–ด๋–ค ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ)๋“ค์ด ์žˆ๋Š”์ง€, ์–ด๋–ค ํ˜•์‹์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€ ๋ช…์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ด.

๐Ÿ“‹ SOAP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

SOAP ๋ฉ”์‹œ์ง€๋Š” ๋ณดํ†ต XML๋กœ ์ž‘์„ฑ๋˜๊ณ , ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ผ.

xml
๋ณต์‚ฌํŽธ์ง‘
<soap:Envelope> <soap:Header> <!-- ์„ ํƒ์  ์š”์†Œ --> <!-- ์ธ์ฆ ์ •๋ณด๋‚˜ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ํฌํ•จ --> </soap:Header> <soap:Body> <!-- ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ --> </soap:Body> <soap:Fault> <!-- ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ --> <!-- ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜ ์ •๋ณด --> </soap:Fault> </soap:Envelope>
  • Envelope: ์ „์ฒด ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ์‹ธ๋Š” ๋ฃจํŠธ ์š”์†Œ
  • Header: ์ถ”๊ฐ€ ์ •๋ณด(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์ธ์ฆ ๋“ฑ)๋ฅผ ํฌํ•จ (์„ ํƒ์  ์š”์†Œ)
  • Body: ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต ๋‚ด์šฉ์„ ํฌํ•จ
  • Fault: ์˜ค๋ฅ˜๋‚˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋˜๋Š” ์˜ค๋ฅ˜ ์ •๋ณด

โœจ SOAP API ์˜ˆ์‹œ


๐Ÿš€ SOAP vs REST ๋น„๊ต

ํŠน์ง•SOAPREST

ํ”„๋กœํ† ์ฝœ ํ”„๋กœํ† ์ฝœ (W3C ํ‘œ์ค€) ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ
๋ฉ”์‹œ์ง€ ํ˜•์‹ XML JSON, XML, ํ…์ŠคํŠธ ๋“ฑ
์ „์†ก ํ”„๋กœํ† ์ฝœ HTTP, SMTP, FTP ๋“ฑ ๋‹ค์–‘ HTTP (GET, POST, PUT, DELETE ๋“ฑ)
๋ณด์•ˆ ๋†’์€ ๋ณด์•ˆ (WS-Security ๋“ฑ ์ง€์›) HTTPS ๊ธฐ๋ฐ˜ ๋ณด์•ˆ
์ƒํƒœ ์œ ์ง€ ์ƒํƒœ ๋น„์ €์žฅ (Stateless) ์ƒํƒœ ์œ ์ง€ ๋ฐ ์ƒํƒœ ๋น„์ €์žฅ ๋ชจ๋‘ ๊ฐ€๋Šฅ
์†๋„ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆผ (XML ๋ณ€ํ™˜์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ) ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„
์œ ์—ฐ์„ฑ ๋‚ฎ์Œ (์—„๊ฒฉํ•œ ๊ตฌ์กฐ) ๋†’์Œ (๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ง€์›)
์ ์šฉ ๋ถ„์•ผ ๊ธฐ์—…/๊ธˆ์œต/์ •๋ถ€ ์‹œ์Šคํ…œ ๋“ฑ ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ๊ณณ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ API
๊ณ„์•ฝ(WSDL) WSDL ํŒŒ์ผ ํ•„์ˆ˜ ๊ณ„์•ฝ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐Ÿ“š SOAP API๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ

  1. ์€ํ–‰, ๊ธˆ์œต ์„œ๋น„์Šค
    • ๋ณด์•ˆ์ด ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณณ์—์„œ SOAP์€ ์ฃผ๋กœ ์‚ฌ์šฉ๋ผ.
    • WS-Security๋‚˜ SSL ๊ฐ™์€ ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ธฐ๋Šฅ๋“ค์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์•ผ.
  2. ๊ธฐ์—… ๋‚ด๋ถ€ ์‹œ์Šคํ…œ ํ†ตํ•ฉ (Enterprise Application Integration)
    • SAP, Oracle ๊ฐ™์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์—ฌ์ „ํžˆ SOAP ๊ธฐ๋ฐ˜ ํ†ต์‹ ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ด.
  3. ์ •๋ถ€ ๋˜๋Š” ๊ณต๊ณต ์„œ๋น„์Šค API
    • ๊ณต๊ณต ์„œ๋น„์Šค์—์„œ๋Š” ํ‘œ์ค€ํ™”๋œ ํ†ต์‹  ๋ฐฉ์‹์ด ์ค‘์š”ํ•œ๋ฐ, SOAP์ด WSDL๋กœ ๋ช…ํ™•ํžˆ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋ผ.
  4. ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ
    • ์˜ค๋ž˜๋œ ์‹œ์Šคํ…œ์€ ์—ฌ์ „ํžˆ SOAP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„.

๐Ÿ” SOAP์˜ ์žฅ์ 

  • ์—„๊ฒฉํ•œ ํ‘œ์ค€์œผ๋กœ ์ธํ•ด ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์ด ๋†’์Œ.
  • ๋‹ค์–‘ํ•œ ์ „์†ก ํ”„๋กœํ† ์ฝœ์„ ์ง€์› (HTTP, SMTP, FTP ๋“ฑ)
  • WSDL๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฌธ์„œํ™”ํ•˜์—ฌ ์ž๋™ํ™”๋œ ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ
  • XML ๊ธฐ๋ฐ˜์œผ๋กœ ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘

โš ๏ธ SOAP์˜ ๋‹จ์ 

  • XML ๊ธฐ๋ฐ˜์ด๋ผ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ณ  ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ฆผ.
  • REST API์— ๋น„ํ•ด ๊ตฌํ˜„์ด ๋ณต์žกํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€.
  • HTTP ๊ธฐ๋ฐ˜ ์š”์ฒญ์—์„œ ๋ฉ”์„œ๋“œ(GET, POST ๋“ฑ)๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ณ  ๋น„ํšจ์œจ์ .

๐Ÿ’ก ์ •๋ฆฌ

SOAP์€ ์—„๊ฒฉํ•œ ํ‘œ์ค€๊ณผ ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ค‘์š”ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ์—ฌ์ „ํžˆ ๋งŽ์ด ์‚ฌ์šฉ๋ผ.
ํ•˜์ง€๋งŒ ์ตœ๊ทผ์—๋Š” REST API๋‚˜ GraphQL์ฒ˜๋Ÿผ ๋” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ API ๋ฐฉ์‹์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด.

๊ทธ๋ž˜๋„ ๊ธˆ์œต, ์ •๋ถ€ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ๋Š” ๋ณด์•ˆ๊ณผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SOAP์ด ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•œ ์„ ํƒ์ด์•ผ! ๐Ÿ˜Ž
ํ˜น์‹œ ๋” ๊ถ๊ธˆํ•œ ์  ์žˆ์œผ๋ฉด ๋ฌผ์–ด๋ด!

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค(Index)๋ž€?

**์ธ๋ฑ์Šค(Index)**๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์•ผ.
๋งˆ์น˜ ์ฑ…์˜ **์ƒ‰์ธ(Index)**์ฒ˜๋Ÿผ, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์ •๋ฆฌ๋œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•ด.


๐Ÿ“Œ ์ธ๋ฑ์Šค์˜ ํ•ต์‹ฌ ๊ฐœ๋…

1๏ธโƒฃ ์ธ๋ฑ์Šค ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ• (Full Table Scan)

  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” **"Full Table Scan"**์„ ์ˆ˜ํ–‰ํ•ด.
  • ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„ ๋• ๊ดœ์ฐฎ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด.

์˜ˆ์‹œ
๐Ÿ‘‰ ์ง์› ํ…Œ์ด๋ธ”์—์„œ employee_id = 1004์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ

`SELECT * FROM employees WHERE employee_id = 1004;`
 

๐Ÿ”ด (์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ)

  • DB๋Š” employees ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์‚ฌ (Full Table Scan)
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

2๏ธโƒฃ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰ ๋ฐฉ์‹

  • ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฏธ๋ฆฌ ์ •๋ฆฌํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์•ผ.
  • ๋งˆ์น˜ **์ฑ…์˜ ๋ชฉ์ฐจ(์ƒ‰์ธ)**์ฒ˜๋Ÿผ, ์›ํ•˜๋Š” ํŽ˜์ด์ง€(๋ฐ์ดํ„ฐ)์˜ ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด.

์˜ˆ์‹œ
๐Ÿ“š ์ฑ…์„ ์ฝ์„ ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด?

  • "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค" ๊ด€๋ จ ๋‚ด์šฉ์„ ์ฐพ์„ ๋•Œ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฝ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ‰์ธ์—์„œ "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค"์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ ํ›„ ๋ฐ”๋กœ ์ฐพ์•„๊ฐ.

๐Ÿ“Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ๋น„์Šทํ•œ ๊ฐœ๋…!

  • ํŠน์ • ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ Full Table Scan์„ ํ”ผํ•˜๊ณ , ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด.
 
`CREATE INDEX idx_employee_id ON employees(employee_id);`
  • ์œ„์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, employee_id ์ปฌ๋Ÿผ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ง.

๐Ÿ” ์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋Š” ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด.

1๏ธโƒฃ B-Tree (Balanced Tree)

๐Ÿ“Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์Šค ๊ตฌ์กฐ (MySQL, PostgreSQL, Oracle ๋“ฑ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ)

  • B-Tree๋Š” ๊ท ํ˜• ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์–ด, ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋ชจ๋‘ **O(log n)**์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง.
  • ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Œ.

โœ” ํŠน์ง•

  • ์ •๋ ฌ๋œ ๊ตฌ์กฐ๋ผ์„œ ๋ฒ”์œ„ ๊ฒ€์ƒ‰(RANGE QUERY) ๋„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ ์‹œ ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ์œ ์ง€
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋จ

โœ” ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • WHERE ์กฐ๊ฑด์—์„œ ํŠน์ • ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ
  • ORDER BY, GROUP BY ์—ฐ์‚ฐ์ด ๋งŽ์„ ๋•Œ
  • ๋ฒ”์œ„ ๊ฒ€์ƒ‰ (BETWEEN, >, < ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•  ๋•Œ

2๏ธโƒฃ Hash Index

๐Ÿ“Œ ํ•ด์‹œ(Hash) ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๋ฐฉ์‹

  • ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ, = (๊ฐ™์Œ) ์—ฐ์‚ฐ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • BETWEEN, LIKE ๊ฐ™์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ

โœ” ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • WHERE email = 'test@example.com' ๊ฐ™์€ ์ •ํ™•ํ•œ ๊ฐ’ ์กฐํšŒ
  • ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • MEMORY ์—”์ง„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ (MySQL InnoDB๋Š” Hash Index๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Œ)

โŒ ๋ถ€์ ํ•ฉํ•œ ๊ฒฝ์šฐ

  • BETWEEN, LIKE, ORDER BY ๋“ฑ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๊ท ์ผํ•˜๊ฒŒ ๋ถ„ํฌ๋˜์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋จ

๐Ÿ›  ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

1๏ธโƒฃ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค (Primary Index)

  • ๊ธฐ๋ณธ ํ‚ค(PRIMARY KEY) ์ปฌ๋Ÿผ์— ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ธ๋ฑ์Šค
  • ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ
 
`CREATE TABLE employees ( employee_id INT PRIMARY KEY, name VARCHAR(50) );`

2๏ธโƒฃ ๊ณ ์œ  ์ธ๋ฑ์Šค (Unique Index)

  • ํŠน์ • ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๋Š” ์ธ๋ฑ์Šค
 
`CREATE UNIQUE INDEX idx_email ON users(email);`

3๏ธโƒฃ ๋ณตํ•ฉ(๋‹ค์ค‘) ์ธ๋ฑ์Šค (Composite Index)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋กœ ์ƒ์„ฑ
 
`CREATE INDEX idx_name_age ON employees(name, age);`
  • WHERE name = 'John' AND age = 30 ๊ฐ™์€ ๊ฒ€์ƒ‰์— ์ตœ์ ํ™”๋จ

4๏ธโƒฃ ์ „์ฒด ํ…์ŠคํŠธ ์ธ๋ฑ์Šค (Full-Text Index)

  • ๋Œ€๋Ÿ‰์˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์Šค
  • MySQL์˜ FULLTEXT, Elasticsearch ๊ฐ™์€ ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ์‚ฌ์šฉ๋จ
 
`CREATE FULLTEXT INDEX idx_description ON products(description);`

5๏ธโƒฃ ๊ณต๊ฐ„(Spatial) ์ธ๋ฑ์Šค

  • ์ขŒํ‘œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ (GIS ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ)
 
`CREATE SPATIAL INDEX idx_location ON places(location);`

โš ๏ธ ์ธ๋ฑ์Šค์˜ ๋‹จ์ 

1๏ธโƒฃ ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ํ•„์š”

  • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ฒŒ ๋จ.
  • ํŠนํžˆ, ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ.

2๏ธโƒฃ INSERT, UPDATE, DELETE ์„ฑ๋Šฅ ์ €ํ•˜

  • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…(INSERT)ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •(UPDATE)ํ•˜๋ฉด, ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ๊ฐฑ์‹ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์“ฐ๊ธฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋จ.

3๏ธโƒฃ ๋„ˆ๋ฌด ๋งŽ์€ ์ธ๋ฑ์Šค๋Š” ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ด

  • ๋ชจ๋“  ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ฒ€์ƒ‰ ์†๋„๋Š” ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์ˆ˜์ • ์‹œ ์„ฑ๋Šฅ์ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Œ.
  • ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ์ปฌ๋Ÿผ์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ.

โœ… ๊ฒฐ๋ก : ์–ธ์ œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

โœ… ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

  • WHERE ์กฐ๊ฑด์—์„œ ์ž์ฃผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ปฌ๋Ÿผ
  • ORDER BY, GROUP BY๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ปฌ๋Ÿผ
  • JOIN ์—ฐ์‚ฐ ์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ์ปฌ๋Ÿผ (Foreign Key)
  • BETWEEN, IN ๊ฐ™์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ปฌ๋Ÿผ

โŒ ์ธ๋ฑ์Šค๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ

  • ์ž์ฃผ ๋ณ€๊ฒฝ(INSERT/UPDATE/DELETE)๋˜๋Š” ์ปฌ๋Ÿผ
  • LOW SELECTIVITY (์ค‘๋ณต ๊ฐ’์ด ๋งŽ์€ ์ปฌ๋Ÿผ, ์˜ˆ: ์„ฑ๋ณ„, ๊ตญ๊ฐ€ ์ฝ”๋“œ)
  • ๋„ˆ๋ฌด ๋งŽ์€ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์„ฑ๋Šฅ์ด ์˜คํžˆ๋ ค ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ


::์ถœ์ฒ˜::

https://github.com/VSFe/Tech-Interview?tab=readme-ov-file

https://github.com/WooVictory/Ready-For-Tech-Interview

https://github.com/gyoogle/tech-interview-for-developer

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT