• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

13. Intro to QA Testing

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

Learning Goals

  • Testing์„ (๋น„๊ตฌ์กฐ์ ) ์ฐจ์›์—์„œ coverage๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ™œ๋™์œผ๋กœ ๊ฐ„์ฃผ
  • Usability, reliability, security, robustness (์ผ๋ฐ˜ ๋ฐ ์•„ํ‚คํ…์ฒ˜), performance, integration๊ณผ ๊ฐ™์€ ํ’ˆ์งˆ ์†์„ฑ ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ testing ์ „๋žต ์—ด๊ฑฐ
  • Trade-off๋ฅผ ์ œ์‹œํ•˜๊ณ  ๊ฐ technique์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์  ์‹๋ณ„
  • Testing์„ ํ”„๋กœ์ ํŠธ์˜ lifecycle ๋ฐ practice์— ํ†ตํ•ฉ
  • Test plan ๊ฐœ์š” ์ž‘์„ฑ

Quality Assurance (QA) is HARD

  • QA & Software Testing์€ MS์—์„œ ๋„์ „์ ์ธ ๊ณผ์ œ
  • Microsoft์™€ ๊ฐ™์€ ๋Œ€ํ˜• ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด ํšŒ์‚ฌ์—์„œ๋Š” development๋งŒํผ testing ์ˆ˜ํ–‰
  • Developer๋งŒํผ ๋งŽ์€ tester ๋ณด์œ . Tester๋Š” ํ•ญ์ƒ testing ์ˆ˜ํ–‰, developer๋Š” ์•ฝ ์ ˆ๋ฐ˜์˜ ์‹œ๊ฐ„์„ testing ๊ณผ์ •์— ์ฐธ์—ฌ
  • Test case๋Š” ๋งค์šฐ ๋น„์Œˆ. ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๋ณด๋‹ค test harness์— ๋” ๋งŽ์€ code ๋ผ์ธ ์กด์žฌ (์ข…์ข… ์•ฝ 3:1 ๋น„์œจ)
  • Time Estimates (in hours):
ActivityEstimatedActual
Testing plans30
Unit testing31
Validation testing42
Test data11

alt text

QA has Many Facets

  • Questions
  • Specification์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”๊ฐ€?
  • ์‹œ์Šคํ…œ์ด specification์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”๊ฐ€?
  • ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”๊ฐ€?
  • ์‹œ์Šคํ…œ์ด ์ž˜๋ชป ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”์ง€ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”๊ฐ€?

Verification vs Validation

  • Verification: ์‹œ์Šคํ…œ์ด specification์„ ์ถฉ์กฑํ•˜๋Š”๊ฐ€?
    • ์ฆ‰, ์‹œ์Šคํ…œ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ–ˆ๋Š”๊ฐ€?
  • Verification: Design ๋˜๋Š” code์— ๊ฒฐํ•จ์ด ์žˆ๋Š”๊ฐ€?
    • ์ฆ‰, ์ž˜๋ชป๋œ design ๋˜๋Š” implementation ๊ฒฐ์ •์ด ์žˆ๋Š”๊ฐ€?
  • Validation: ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๋Š”๊ฐ€?
    • ์ฆ‰, ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ๋Š”๊ฐ€?
  • Validation: Specification์— ๊ฒฐํ•จ์ด ์žˆ๋Š”๊ฐ€?
    • ์ฆ‰, requirements ์บก์ฒ˜๋ฅผ ์ž˜๋ชป ์ˆ˜ํ–‰ํ–ˆ๋Š”๊ฐ€?

Brief Case Discussion

alt text

์–ด๋–ค qualities๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, ์–ด๋–ป๊ฒŒ ๊ทธ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ?

Very Important

  • ๋ชจ๋“  ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ analysis technique์€ ์—†์Œ
  • ์–ด๋–ค technique์ด ์ ์ ˆํ•œ์ง€๋Š” ์—ฌ๋Ÿฌ ์š”์ธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
    • ํ•ด๋‹น ์‹œ์Šคํ…œ (๋ฐ ํฌ๊ธฐ/๋ณต์žก์„ฑ), ํ’ˆ์งˆ ๋ชฉํ‘œ, ๊ฐ€์šฉ resource, ์•ˆ์ „/๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ

Definition: Software Analysis

Software artifact์˜ ์†์„ฑ์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ฒด๊ณ„์ ์ธ ์กฐ์‚ฌ

  • ํฌ๊ด„์ ์ด ๋˜๋ ค๋Š” ์‹œ๋„
    • ์˜ˆ: Test coverage, inspection check list, exhaustive model checking
  • ์ž๋™: Regression testing, static analysis, dynamic analysis
  • ์ˆ˜๋™: Manual testing, inspection, modeling
  • Code, system, module, execution trace, test case, design ๋˜๋Š” requirements ๋ฌธ์„œ

Principle Techniques

  • Dynamic:
    • Testing: ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ test data๋กœ code๋ฅผ ์ง์ ‘ ์‹คํ–‰
    • Analysis: Test run์—์„œ data๋ฅผ ์ถ”์ถœํ•˜๋Š” tool
  • Static:
    • Inspection: Code, design ๋ฌธ์„œ (spec ๋ฐ model), ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ธ๊ฐ„์˜ ํ‰๊ฐ€
    • Analysis: Tool์ด program์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  reasoning

No Single Technique

  • ๋ชจ๋“  ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ analysis technique์€ ์—†์Œ
  • ์–ด๋–ค technique์ด ์ ์ ˆํ•œ์ง€๋Š” ์—ฌ๋Ÿฌ ์š”์ธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
    • ํ•ด๋‹น ์‹œ์Šคํ…œ (๋ฐ ํฌ๊ธฐ/๋ณต์žก์„ฑ), ํ’ˆ์งˆ ๋ชฉํ‘œ, ๊ฐ€์šฉ resource, ์•ˆ์ „/๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ

What is Testing?

  • ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ test data๋กœ code๋ฅผ ์ง์ ‘ ์‹คํ–‰
  • ์ฃผ์š” ๋ชฉํ‘œ:
    • Verification: Program์ด ํ’ˆ์งˆ ์†์„ฑ์„ ํฌํ•จํ•œ requirements๋ฅผ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธ
    • Defect testing: Failure ๋ฐœ๊ฒฌ
  • ๊ธฐํƒ€ ๋ชฉํ‘œ:
    • Reveal bugs (์ฃผ์š” ๋ชฉํ‘œ)
    • Assess quality (์ •๋Ÿ‰ํ™” ์–ด๋ ค์›€)
    • Clarify the specification, documentation
    • Verify contracts
  • "Testing shows the presence, not the absence of bugs.โ€ -Edsger W. Dijkstra 1969

Software Errors

  • Functional errors
  • Performance errors
  • Deadlock
  • Race conditions
  • Boundary errors
  • Buffer overflow
  • Integration errors
  • Usability errors
  • Robustness errors
  • Load errors
  • Design defects
  • Versioning and configuration errors
  • Hardware errors
  • State management errors
  • Metadata errors
  • Error-handling errors
  • User interface errors
  • API usage errors
  • โ€ฆ

What are We Covering?

  • Program/system ๊ธฐ๋Šฅ:
    • Execution space (white box!)
    • Input ๋˜๋Š” requirements space (black box!)
  • ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ (usability)
    • GUI testing, A/B testing
  • ์˜ˆ์ƒ๋˜๋Š” performance envelope (performance, reliability, robustness, integration)
    • Security, robustness, fuzz, infrastructure testing
    • Performance ๋ฐ reliability: soak ๋ฐ stress testing
    • Integration ๋ฐ reliability: API/protocol testing

โ€œTraditionalโ€ Coverage

  • Statement
  • Branch
  • Function
  • Path (?)
  • MC/DC

We Can Measure Coverage on Almost Anything

  • Testing์„ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ adequacy criteria๋Š” program execution ๋˜๋Š” specification space์˜ ์ „์ฒด "coverage"์— ๊ทผ์ ‘
  • ์ฃผ์–ด์ง„ verification ํ™œ๋™์ด ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•œ ์ •๋„๋ฅผ ์ธก์ •. ํ™œ๋™์˜ adequacy ๊ทผ์‚ฌ
  • ๊ฐ€์žฅ ์ž์ฃผ testing์— ์ ์šฉ๋˜์ง€๋งŒ, ๋ชจ๋“  verification ํ™œ๋™์— ์ ์šฉ ๊ฐ€๋Šฅ
  • ์ธก์ •๋œ ํ•ญ๋ชฉ ์ค‘ ์ ์–ด๋„ ํ•œ ๋ฒˆ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ํ‰๊ฐ€๋œ ํ•ญ๋ชฉ์˜ ์ด ์ˆ˜์— ๋Œ€ํ•œ ๋น„์œจ๋กœ ํ‘œํ˜„. ๋ณดํ†ต ๋ฐฑ๋ถ„์œจ๋กœ ํ‘œํ˜„

Testing Levels

  • Unit testing
  • Integration testing
  • System testing

JUnit

  • Java๋ฅผ ์œ„ํ•œ ์ธ๊ธฐ ์žˆ๋Š” unit-testing framework
  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›€
  • Tool ์ง€์› ๊ฐ€๋Šฅ
  • Design mechanism์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Test Driven Development

  • Test ์šฐ์„ !
  • ์ธ๊ธฐ ์žˆ๋Š” agile technique
  • Code ์ž‘์„ฑ ์ „ specification์œผ๋กœ test ์ž‘์„ฑ
  • ์‹คํŒจํ•˜๋Š” test ์—†์ด code ์ž‘์„ฑ ๊ธˆ์ง€
  • ์ฃผ์žฅ:
    • Testable design์„ ํ–ฅํ•œ design ์ ‘๊ทผ ๋ฐฉ์‹
    • Interface ์šฐ์„  ๊ณ ๋ ค
    • ๋ถˆํ•„์š”ํ•œ code ์ž‘์„ฑ ๋ฐฉ์ง€
    • ๋” ๋†’์€ ์ œํ’ˆ ํ’ˆ์งˆ (์˜ˆ: ๋” ๋‚˜์€ code, ๋” ์ ์€ defect)
    • ๋” ๋†’์€ test suite ํ’ˆ์งˆ
    • ๋” ๋†’์€ ์ „๋ฐ˜์ ์ธ ์ƒ์‚ฐ์„ฑ

Continuous Integration

  • ์ž๋™์œผ๋กœ build, test ๋ฐ ๊ฒฐ๊ณผ ํ‘œ์‹œ

Regression Testing

  • ์ผ๋ฐ˜์ ์ธ model:
    • Bug fix ๋“ฑ์„ ์œ„ํ•ด regression test ๋„์ž…
    • Code๊ฐ€ evolveํ•จ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ ๋น„๊ต
  • Code1 + TestSet -> TestResults1
  • Code2 + TestSet -> TestResults2
  • Code๊ฐ€ evolveํ•จ์— ๋”ฐ๋ผ TestResults1์„ TestResults2 ๋“ฑ๊ณผ ๋น„๊ต
  • Specification์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ๋™์ผํ•ด์•ผ ํ•จ
  • ์ด์ :
    • Bug fix๊ฐ€ ์œ ์ง€๋˜๊ณ  bug๊ฐ€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋„๋ก ๋ณด์žฅ
    • Specification์— ๋Œ€ํ•œ ์˜์กด๋„ ๊ฐ์†Œ

The Oracle Problem

What are We Covering?

  • Program/system ๊ธฐ๋Šฅ:
    • Execution space (white box!)
    • Input ๋˜๋Š” requirements space (black box!)
  • ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ (usability)
    • GUI testing, A/B testing
  • ์˜ˆ์ƒ๋˜๋Š” performance envelope (performance, reliability, robustness, integration)
    • Security, robustness, fuzz, infrastructure testing
    • Performance ๋ฐ reliability: soak ๋ฐ stress testing
    • Integration ๋ฐ reliability: API/protocol testing

Usability Testing

  • Specification?
  • Test harness? Environment?
  • Nondeterminism?
  • Unit testing?
  • Automation?
  • Coverage?

Automating GUI/Web Testing

  • ์–ด๋ ค์›€
  • Capture and Replay Strategy
    • Mouse actions
    • System events
  • Test Scripts: ("Start" ๋ฒ„ํŠผ ํด๋ฆญ, Y ํ•„๋“œ์— ๊ฐ’ X ์˜ˆ์ƒ)
  • ๋งŽ์€ tool ๋ฐ framework
    • ์˜ˆ: JUnit + Jemmy (Java/Swing)
    • Selenium (Web)
  • (Model์„ GUI์™€ ๋ถ„๋ฆฌํ•˜์—ฌ GUI testing ๋ถ€ํ•˜ ๋ฐฉ์ง€)
  • Functional correctness๋ฅผ ๋„˜์–ด์„œ?

Manual Testing?

  • Live System?
  • Extra Testing System?
  • Check output / assertions?
  • Effort, Costs?
  • Reproducible?

Usability: A/B Testing

  • Control (A)๊ณผ treatment (B)์ธ ๋‘ ๊ฐ€์ง€ variant๋ฅผ ์ด์šฉํ•œ ํ†ต์ œ๋œ ๋ฌด์ž‘์œ„ experiment
  • ํ•œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์—๋Š” A (ํ˜„์žฌ ์‹œ์Šคํ…œ) ์ œ๊ณต, ๋‹ค๋ฅธ ๋ฌด์ž‘์œ„ ๊ทธ๋ฃน์—๋Š” B ์ œ์‹œ. ๊ฒฐ๊ณผ ๋น„๊ต
  • Web ๋˜๋Š” GUI ๊ธฐ๋ฐ˜ application์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋จ (ํŠนํžˆ ๊ด‘๊ณ  ๋˜๋Š” GUI ์š”์†Œ ๋ฐฐ์น˜/design ๊ฒฐ์ • test)

Example

What are We Covering?

  • Program/system ๊ธฐ๋Šฅ:
    • Execution space (white box!)
    • Input ๋˜๋Š” requirements space (black box!)
  • ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ (usability)
    • GUI testing, A/B testing
  • ์˜ˆ์ƒ๋˜๋Š” performance envelope (performance, reliability, robustness, integration)
    • Security, robustness, fuzz, infrastructure testing
    • Performance ๋ฐ reliability: soak ๋ฐ stress testing
    • Integration ๋ฐ reliability: API/protocol testing

Security/Robustness Testing

  • Specification?
  • Test harness? Environment?
  • Nondeterminism?
  • Unit testing?
  • Automation?
  • Coverage?

Random Testing

  • Program์˜ input domain์—์„œ ๋ฌด์ž‘์œ„๋กœ input ๋…๋ฆฝ์  ์„ ํƒ
    • Program์˜ input domain ์‹๋ณ„
    • ๋‚œ์ˆ˜๋ฅผ ํ•ด๋‹น input domain์— mapping
    • ํŠน์ • ํ™•๋ฅ  ๋ถ„ํฌ์— ๋”ฐ๋ผ input domain์—์„œ input ์„ ํƒ
    • ํ•ด๋‹น input์— ๋Œ€ํ•ด program์ด ์ ์ ˆํ•œ output์„ ๋‹ฌ์„ฑํ•˜๋Š”์ง€ ํ™•์ธ
  • Random testing์€ program์˜ faultiness์— ๋Œ€ํ•œ ํ™•๋ฅ ์  ๋ณด์žฅ ์ œ๊ณต
  • ์˜ˆ: Failure ์—†์ด ์•ฝ 23,000๊ฐœ input (N = 23,000)์„ ์‚ฌ์šฉํ•œ random testing์€ 90% ์‹ ๋ขฐ๋„ (C = 0.9)๋กœ program์ด 10,000๋ฒˆ ์ค‘ 1๋ฒˆ (F = 104) ์ด์ƒ failureํ•˜์ง€ ์•Š์Œ์„ ์ž…์ฆ

Reliability: Fuzz Testing

  • Program, device ๋˜๋Š” system์— malformed (๋น„์ •์ƒ) ๋ฐ unexpected input data๋ฅผ feedํ•˜์—ฌ security ๊ด€๋ จ defect ๋˜๋Š” denial of service, degradation of service ๋˜๋Š” ๊ธฐํƒ€ ์›์น˜ ์•Š๋Š” behavior๋กœ ์ด์–ด์ง€๋Š” critical flaw๋ฅผ ์ฐพ๋Š” negative software testing ๋ฐฉ๋ฒ• (A. Takanen et al, 2008)
  • Fuzz test๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ fuzz testing์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” program ๋ฐ framework๋ฅผ fuzzer๋ผ๊ณ  ํ•จ

Types of Faulty Found

  • Pointer/array errors
  • Not checking return codes
  • Invalid/out of boundary data
  • Data corruption
  • Signed characters
  • Race conditions
  • Undocumented features
  • ...Possible tradeoffs?

Fuzzing Process

  • Seed pool
  • ๋ชจ๋“  seed input i1์— ๋Œ€ํ•ด
  1. ์„ ํƒ:
  • ์„ ํ˜ธ๋˜๋Š” input ์šฐ์„ 
  1. ์ˆ˜์ •:
  • Bitflip
  • Byteflip
  • ...
  • (Modified seed input)
  • (One cycle)
  1. ์ƒˆ path๋ฅผ coverํ•˜์ง€ ์•Š๋Š” input ๋ฒ„๋ฆฌ๊ธฐ
  2. ์ƒˆ path๋ฅผ coverํ•˜๋Š” input์„ pool์— ์ถ”๊ฐ€

Unit and Regression Testing for Performance

  • Critical component์˜ execution time ์ธก์ •
  • Execution time์„ log๋กœ ๊ธฐ๋กํ•˜๊ณ  ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋น„๊ต

Profiling

  • Execution time ๋ฐ memory ๋ณ‘๋ชฉ ํ˜„์ƒ ์ฐพ๊ธฐ

Performance Testing During Design

  • Modeling ๋ฐ simulation
    • ์˜ˆ: queuing theory

Stress Testing

  • Robustness testing technique: ์ •์ƒ ์ž‘๋™ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด test
  • System granularity์˜ ๋ชจ๋“  level์—์„œ ์ ์šฉ ๊ฐ€๋Šฅ
  • Stress test๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ heavy load ํ•˜์—์„œ์˜ robustness, availability, error handling์— ์ค‘์ 

Soak Testing

  • ๋ฌธ์ œ: System์ด ์ธ์œ„์ ์œผ๋กœ ์ œํ•œ๋œ execution ์กฐ๊ฑด ํ•˜์—์„œ๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Œ
    • ์˜ˆ: Memory leak์€ failure๋กœ ์ด์–ด์ง€๋Š” ๋ฐ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ
  • Soak testing: ์ƒ๋‹นํ•œ load ํ•˜์— ์ƒ๋‹นํ•œ time ๋™์•ˆ system์„ testing (๊ธ์ •)
  • ์ฃผ์–ด์ง„ duration๊ณผ threshold ํ•˜์—์„œ simulated ํ™˜๊ฒฝ์˜ test ๋Œ€์ƒ ๋ฐ˜์‘ ํ™•์ธ์— ์‚ฌ์šฉ

Chaos Engineering

Chaos Monkey

  • Netflix infrastructure testing system
  • "์•…์˜์ ์ธ" program์ด component, network, datacenter, AWS instance ๋“ฑ์„ ๋ฌด์ž‘์œ„๋กœ ์†์ƒ
  • Chaos monkey๊ฐ€ ์ตœ์ดˆ โ€“ production instance๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๋น„ํ™œ์„ฑํ™”
  • ๋‹ค๋ฅธ monkey๋กœ๋Š” Latency Monkey, Doctor Monkey, Conformity Monkey ๋“ฑ์ด ์žˆ์Œ. Infrastructure level์—์„œ์˜ Fuzz testing
  • System architecture๊ฐ€ ๊ณ„ํš๋˜์ง€ ์•Š์€/๋ฌด์ž‘์œ„ outage์— resilientํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด component์˜ failure ๊ฐ•์ œ
  • Netflix๋Š” chaos monkey code๋ฅผ open-source๋กœ ๊ณต๊ฐœ

Brief Case Discussion

What are We Covering?

  • Program/system ๊ธฐ๋Šฅ:
    • Execution space (white box!)
    • Input ๋˜๋Š” requirements space (black box!)
  • ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ (usability)
    • GUI testing, A/B testing
  • ์˜ˆ์ƒ๋˜๋Š” performance envelope (performance, reliability, robustness, integration)
    • Security, robustness, fuzz, infrastructure testing
    • Performance ๋ฐ reliability: soak ๋ฐ stress testing
    • Integration ๋ฐ reliability: API/protocol testing

Completeness?

  • ํ†ต๊ณ„์  threshold
    • ๋ณด๊ณ ๋œ/์ˆ˜๋ฆฌ๋œ defect
    • Defect ์ข…๋ฅ˜์˜ ์ƒ๋Œ€์  ๋น„์œจ
    • "Going gold" ์˜ˆ์ธก ๋ณ€์ˆ˜
  • Coverage criterion
    • ์˜ˆ: ํ•ญ๊ณต software์— 100% coverage ํ•„์š”
    • Software ์™œ๊ณก
    • Matrix: Test case๋ฅผ requirements use case์— mapping
  • ๊ณผ๊ฑฐ data ์ฐธ์กฐ ๊ฐ€๋Šฅ
    • ์กฐ์ง ๋‚ด์—์„œ project ๊ฐ„ ๋น„๊ต ๊ฐ€๋Šฅ. ๊ธฐ๋Œ€์น˜ ๋ฐ ์˜ˆ์ธก ๋ณ€์ˆ˜ ๊ฐœ๋ฐœ
    • ์กฐ์ง ๊ฐ„์—๋Š” commensurability์˜ ์–ด๋ ค์›€์œผ๋กœ ์ธํ•ด ๋” ์–ด๋ ค์›€ (์˜ˆ: ํ•ญ๊ณต software vs. ์†Œ๋น„์ž software)
  • ๊ฒฝํ—˜ ๋ฒ•์น™: Error detection rate๊ฐ€ ๋–จ์–ด์งˆ ๋•Œ (testing investment ๋Œ€๋น„ diminishing returns ์˜๋ฏธ)
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ : Time ๋˜๋Š” money ์†Œ์ง„

Limits of Testing

  • ์‹คํ–‰๋˜์ง€ ์•Š์€ code์˜ bug๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉฐ, bug ๋ถ€์žฌ ๋ณด์žฅ ๋ถˆ๊ฐ€
  • Oracle problem
  • Nondeterminism, flaky tests
    • ํŠน์ • ์ข…๋ฅ˜์˜ bug๋Š” ๋งค์šฐ ๋“œ๋ฌธ ์กฐ๊ฑด์—์„œ๋งŒ ๋ฐœ์ƒ
  • Specification ๊ด€์ฐฐ/๋‹จ์–ธ ์–ด๋ ค์›€
    • Memory leaks, information flow, โ€ฆ
  • ์ž ์žฌ์ ์œผ๋กœ ๋น„์‹ธ๊ณ  ๊ธด ์‹คํ–‰ time
  • ์ž ์žฌ์ ์œผ๋กœ ๋†’์€ manual effort
  • Verification, not validation
  • ...
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License