• 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

14. QA Process

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

Quality Assurance Process

  • How to get developers to
    • write tests
    • use static analysis
    • appreciate testers

Learning Goals

  • QA์˜ Process ์ธก๋ฉด ์ดํ•ด
  • QA ๊ธฐ์ˆ ๋“ค์˜ Tradeoffs ์„ค๋ช…
  • ์ฃผ์–ด์ง„ ํ”„๋กœ์ ํŠธ์™€ Quality attribute์— ์ ํ•ฉํ•œ QA ๊ธฐ์ˆ  ์„ ํƒ
  • QA์˜ ์‹œ์ (When)๊ณผ ๋ถ„๋Ÿ‰(How much) ๊ฒฐ์ •
  • Process ๋‚ด์—์„œ QA ๊ธฐ์ˆ ์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐœ๋… ๊ฐœ์š”
  • Tools์™€ Policies๋ฅผ Process์— ํ†ตํ•ฉํ•˜๋Š” ์‹œ์ ๊ณผ ๋ฐฉ๋ฒ• ์„ ํƒ: Daily builds, Continuous integration, Test automation, Static analysis, Issue tracking ๋“ฑ
  • QA ๊ธฐ์ˆ  ๋„์ž… ์‹œ์˜ ์ธ๊ฐ„์  ๋ฐ ์‚ฌํšŒ์  ๊ณผ์ œ(Human and social challenges) ์ดํ•ด
  • Process์™€ Tool ๊ฐœ์„ ์ด ๊ธฐ๋Šฅ(Features)๊ณผ ํ’ˆ์งˆ(Quality) ์‚ฌ์ด์˜ ๋”œ๋ ˆ๋งˆ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ด

QA Process Considerations

  • ์šฐ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€ QA ๊ธฐ์ˆ ์„ (๊ฐ„๋žตํžˆ) ๋‹ค๋ฃจ์—ˆ์Œ
    • Formal verification
    • Unit testing, Test driven development
    • Quality attributes๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ Advanced testing (GUI testing, Fuzz testing ๋“ฑ)
    • Static analysis
    • Dynamic analysis
    • Formal inspections ๋ฐ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ Code reviews
  • ๊ทธ๋Ÿฌ๋‚˜: ์–ธ์ œ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€? ์–ด๋–ค ๊ธฐ์ˆ ์„? ์–ผ๋งˆ๋‚˜? ์–ด๋–ป๊ฒŒ ๋„์ž…ํ•  ๊ฒƒ์ธ๊ฐ€? Quality culture๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•๋ฆฝํ•  ๊ฒƒ์ธ๊ฐ€? ๊ทœ์ • ์ค€์ˆ˜(Compliance)๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•  ๊ฒƒ์ธ๊ฐ€? Social issues๋Š”? ์™ธ๋ถ€ Components๋Š” ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?

Case Study: Googleโ€™s Tricorder

Integrate Static Analysis in Review Process

  • Code review ๋„๊ตฌ ๋‚ด์˜ Bots์œผ๋กœ์„œ์˜ Static analysis
    • ๊ฐ Commit๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ ์šฉ๋จ
    • ๊ฒฐ๊ณผ๊ฐ€ Author์™€ Reviewers์—๊ฒŒ ๋ณด์ž„
  • ๊ฐ€๋ฒผ์šด Checkers, ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •์ด ์šฉ์ดํ•จ
  • ํšจ๊ณผ์ ์ด์ง€ ์•Š์€ Checkers๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ Feedback buttons ์ œ๊ณต

Tricorder

  • Sadowski, Caitlin, et al. "Tricorder: Building a program analysis ecosystem." 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering. Vol. 1. IEEE, 2015.

Case Study: QA (previously) at Microsoft

How does Microsoft Work?

Microsoft's Culture

  • ์ตœ๊ณ ์˜ Developers ์ฑ„์šฉ
    • "IBM์ด ์ˆ˜์ฒœ ๋ช…์ด ํ•„์š”ํ•œ ์ผ์„ Microsoft๋Š” ์ˆ˜๋ฐฑ ๋ช…์˜ ์ผ๋ฅ˜ Developers๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ"
  • ๊ทธ๋“ค์—๊ฒŒ ์ž์œ  ๋ถ€์—ฌ
  • ์ œํ’ˆ๋ณ„ Teams๊ฐ€ ํฌ๊ฒŒ ๋…๋ฆฝ์ ์ž„
  • ๋น„๊ต์  ์งง์€ Development cycles
    • Version updates (์˜ˆ: Excel 3->4) 1-2๊ฐœ์›”
    • New products 1-4๋…„
    • Release date์— ์˜ํ•ด ์ฃผ๋„๋จ
  • ์‚ฌ์ „ Specification์ด ๊ฑฐ์˜ ์—†์œผ๋ฉฐ, ๋ณ€๊ฒฝ ๋ฐ ๊ธฐ๋Šฅ ์ถ•์†Œ(Cutting features)์— ์œ ์—ฐํ•จ

Early Days (1984): Separate Testing from Development

  • Hardware manufacturers๋กœ๋ถ€ํ„ฐ์˜ Bug ๋ถˆ๋งŒ ์ œ๊ธฐ ํ›„ (์˜ˆ: BASIC์˜ ์ž˜๋ชป๋œ ๊ณ„์‚ฐ)
  • Customers๊ฐ€ ์ œํ’ˆ์— ๋Œ€ํ•ด ๋ถˆ๋งŒ ์ œ๊ธฐ
  • IBM์€ Microsoft๊ฐ€ ๊ฐœ๋ฐœ ๋ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ(Quality control) Process๋ฅผ ๊ฐœ์„ ํ•  ๊ฒƒ์„ ์ฃผ์žฅ
  • ์‹ฌ๊ฐํ•œ ๋ฐ์ดํ„ฐ ํŒŒ๊ดด Bug๋กœ ์ธํ•ด Microsoft๋Š” 20,000๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ๊ฐ $10์˜ ๋น„์šฉ์„ ๋“ค์—ฌ Multiplan ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฐ์†กํ•ด์•ผ ํ–ˆ์Œ
  • Developers์™€ ์ผ๋ถ€ Management(Balmer ํฌํ•จ)์˜ ์ €ํ•ญ: "Developers๊ฐ€ ์Šค์Šค๋กœ ์ž์‹ ์˜ ์ œํ’ˆ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ€๋” ๊ณ ๋“ฑํ•™์ƒ, ๋น„์„œ, ์™ธ๋ถ€ ๊ณ„์•ฝ์ง์˜ ๋„์›€์„ ๋ฐ›์œผ๋ฉด ๋จ"
  • ์™ธ๋ถ€ Testers ๊ณ ์šฉ
  • Formal inspections์˜ ๊ด€๋ฃŒ์ฃผ์˜, ๋‹จ๊ณ„ ๊ฐ„ Signoff, ๋˜๋Š” ์‹œ๊ฐ„ ๊ธฐ๋ก(Time logging)์„ ํšŒํ”ผ
  • ๋ณ„๋„์˜ Testing group; Automated tests; ์‹ ๊ทœ ์ž…์‚ฌ์ž ๋ฐ Critical components์— ๋Œ€ํ•œ Code reviews

Early Days (1986): Testing Groups

  • "Developers๊ฐ€ ๊ฒŒ์„๋Ÿฌ์ง", QA๋ฅผ Test team์— ์˜์กด
  • "Infinite defects" - Developers๊ฐ€ ์ˆ˜์ •ํ•˜๋Š” ์†๋„๋ณด๋‹ค Testers๊ฐ€ Defects๋ฅผ ๋” ๋นจ๋ฆฌ ์ฐพ์•„๋ƒ„
  • ๋Šฆ๊ณ  ๊ฑฐ๋Œ€ํ•œ Integrations ("Big bang") - ๊ธด Testing periods, ์ถœ์‹œ ์ง€์—ฐ
  • Mac Word 3 ์žฌ์•™: 8๊ฐœ์›” ์ง€์—ฐ, ์ˆ˜๋ฐฑ ๊ฐœ์˜ Bugs (Crashing ๋ฐ ๋ฐ์ดํ„ฐ ํŒŒ๊ดด Bugs ํฌํ•จ); ๋ฌด๋ฃŒ ์—…๊ทธ๋ ˆ์ด๋“œ์— 100๋งŒ ๋‹ฌ๋Ÿฌ ์†Œ์š”
  • ํ’ˆ์งˆ ์ „๋‹ฌ(Delivering quality)์— ๋Œ€ํ•œ ์••๋ฐ• ์ฆ๊ฐ€

1989 Retreat and โ€œZero defectsโ€

alt text

Zero-Defect Rules for Excel 4

  • ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Compile ๋ฐ Link ๋˜์–ด์•ผ ํ•จ
  • ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Mac ๋ฐ Windows์—์„œ Automated quick tests๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•จ
  • ํ• ๋‹น๋œ Open bugs๊ฐ€ 10๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” Developer๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ด๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•จ

Testing Buddies

  • Development์™€ Test teams๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋Œ€๋žต ๋น„์Šทํ•œ ๊ทœ๋ชจ
  • Developers๋Š” ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  Automated tests๋ฅผ ๋งค์ผ ์‹คํ–‰
  • ๊ฐœ๋ณ„ Testers๊ฐ€ ์ข…์ข… ํ•œ ๋ช…์˜ Developer์—๊ฒŒ ๋ฐฐ์ •๋จ
    • ๊ทธ๋“ค์˜ Private releases (Branch)๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ , ์ฝ”๋“œ๊ฐ€ Merge ๋˜๊ธฐ ์ „์— ์ด๋ฉ”์ผ๋กœ ์ง์ ‘์ ์ด๊ณ  ์‹ ์†ํ•œ Feedback ์ œ๊ณต

Testers

  • Support team ๋ฐ Customers์™€ ์†Œํ†ตํ•˜๊ณ , ๋ฏธ๋””์–ด ํ‰๊ฐ€๋ฅผ ๊ฒ€ํ† ํ•˜๋„๋ก ์žฅ๋ ค๋จ
  • High-risk ์˜์—ญ์— ๋Œ€ํ•œ Testing strategy ๊ฐœ๋ฐœ
  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ Testing ์ˆ˜ํ–‰ (๋‚ด๋ถ€์ ์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๋ช…์นญ): Unstructured testing, Ad hoc testing, Gorilla testing, Free-form Fridays

Early-mid 90s

  • Zero defect ๋ชฉํ‘œ (1989 memo)
  • Milestones (1988๋…„ Publisher 1.0์—์„œ ์ฒ˜์Œ ๋„์ž…)
  • Version control, Branches, ๋นˆ๋ฒˆํ•œ Integration
  • Daily builds
  • Automated tests ("Quick autotest") - Checkin ์ „์— ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณตํ•ด์•ผ ํ•จ
  • Usability labs
  • Beta testing (Win 95์˜ ๊ฒฝ์šฐ 400,000๋ช…์˜ Beta testers), Instrumentation ํฌํ•จ
  • ๊ฐ„๋žตํ•œ Formal design reviews; ์„ ๋ณ„๋œ Code reviews
  • Defect tracking ๋ฐ Metrics
  • Developers๊ฐ€ ํ•œ Release cycle ์ด์ƒ Product group์— ๋จธ๋ฌด๋ฆ„

Metrics

  • Severity(์‹ฌ๊ฐ๋„) ๋ณ„ Open bugs ์ˆ˜
    • Open bugs ์ˆ˜๋Š” Milestone ์ „์— ๊ฐ์†Œํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋จ
    • ์•Œ๋ ค์ง„ ๋ชจ๋“  ์‹ฌ๊ฐํ•œ Bugs๋Š” Release ์ „์— ์ˆ˜์ •๋˜์–ด์•ผ ํ•จ
    • Severity 1 (Product crash), Severity 2 (Feature crash), Severity 3 (Bug with workaround), Severity 4 (Cosmetic/Minor)
    • Releases ๋ฐ Projects ์ „๋ฐ˜์— ๊ฑธ์ณ Metrics ์ถ”์ 
  • Performance metrics
  • Bug data๋Š” "์ถœ์‹œ ์ค€๋น„ ์™„๋ฃŒ(Ready to ship)" ๊ฒฐ์ •์— ์‚ฌ์šฉ๋จ
    • ์ ˆ๋Œ€์ ์ธ ๊ด€์ ์ด ์•„๋‹Œ ์ƒ๋Œ€์ ์ด๊ณ  ์‹ค์šฉ์ ์ธ ๊ด€์ 
    • "์‹œ์žฅ์€ ๋Šฆ๋Š” ๊ฒƒ์€ ์šฉ์„œํ•˜์ง€๋งŒ, ๋ฒ„๊ทธ๊ฐ€ ๋งŽ์€ ๊ฒƒ์€ ์šฉ์„œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค"

Challenges of Microsoftโ€™s Culture

  • Product teams ๊ฐ„์˜ ์†Œํ†ต์ด ๊ฑฐ์˜ ์—†์Œ
  • Developers์™€ Testers๊ฐ€ ์ข…์ข… "Software engineering ๋ฌธํ—Œ์„ ์ž˜ ์ฝ์ง€ ์•Š์•„, ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…(Reinventing the wheel)ํ•จ"
    • Architecture, Design, Components ๊ณต์œ , Quality metrics ๋“ฑ์„ ์˜ค๋žซ๋™์•ˆ ๊ณผ์†Œํ‰๊ฐ€ํ•จ
  • Developers๊ฐ€ ๋ณ€ํ™”์™€ "๊ด€๋ฃŒ์ฃผ์˜(Bureaucracy)"์— ์ €ํ•ญํ•จ

Project Postmortem

  • ์ฒด๊ณ„์ ์ธ ๋ฌธ์ œ์ ๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์‹๋ณ„ (10-150 ํŽ˜์ด์ง€ ๋ณด๊ณ ์„œ)
    • ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ œ์™€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ด€ํ–‰ ๋ฌธ์„œํ™”
    • ์˜ˆ
      • Breadth-first โ†’ Depth-first & Tested milestones
      • ๋ถˆ์ถฉ๋ถ„ํ•œ Specification
      • Commits๋ฅผ ๋ฆฌ๋ทฐํ•˜์ง€ ์•Š์Œ
      • ๊ฐ€์ •(Assumptions)์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด Asserts ์‚ฌ์šฉ
      • ์ ์ ˆํ•œ Tools ๋ถ€์กฑ โ†’ Automated tests
      • Testers์™€ Beta releases๋ฅผ ์œ„ํ•œ Instrumented versions
      • Zero defect rule์ด Developers์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹˜
  • ๋ฉ”๋ชจ(Memos)๋กœ ํ†ต์ฐฐ๋ ฅ์„ ์ˆœํ™˜์‹œํ‚ค๊ณ , Team ๊ฐ„ ํ•™์Šต ์žฅ๋ ค

Process Audits

  • ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” Projects์— ๋Œ€ํ•œ ๋น„๊ณต์‹์ ์ธ 1์ฃผ Audits
  • Metrics ๋ถ„์„, Team members ์ธํ„ฐ๋ทฐ
  • ๋‹ค๋ฅธ Teams์˜ Best practices๋ฅผ ์ฑ„ํƒํ•˜๋„๋ก ๊ถŒ๊ณ 
    • Daily builds, Automated tests, Milestones, Reviews

The 2002 Trustworthy Computing Memo

  • Microsoft๊ฐ€ ๊ณ ๊ฐ์˜ ์‹ ๋ขฐ๋ฅผ ํ™•๋ณดํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํšŒ์‚ฌ ์ฐจ์›์—์„œ ํ•ด์•ผ ํ•  ๋งŽ์€ ๋ณ€ํ™”๋“ค์ด ์žˆ์Œ - Software ๊ฐœ๋ฐœ ๋ฐฉ์‹๋ถ€ํ„ฐ ์ง€์› ๋…ธ๋ ฅ, ์šด์˜ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€ํ–‰์— ์ด๋ฅด๊ธฐ๊นŒ์ง€
  • Software๊ฐ€ ๋”์šฑ ๋ณต์žกํ•ด์ง€๊ณ , ์ƒํ˜ธ ์˜์กด์ ์ด๋ฉฐ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋จ์— ๋”ฐ๋ผ, ํšŒ์‚ฌ๋กœ์„œ์˜ ํ‰ํŒ ๋˜ํ•œ ๋” ์ทจ์•ฝํ•ด์กŒ์Œ
  • ๋‹จ์ผ Microsoft ์ œํ’ˆ, ์„œ๋น„์Šค ๋˜๋Š” ์ •์ฑ…์˜ ๊ฒฐํ•จ(Flaws)์€ Platform ๋ฐ Services ์ „๋ฐ˜์˜ ํ’ˆ์งˆ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํšŒ์‚ฌ์— ๋Œ€ํ•œ ๊ณ ๊ฐ์˜ ์‹œ๊ฐ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นจ

Code Reviews

  • ์ž์ฒด Code review ๋„๊ตฌ ๋ณด์œ  (Passaround style)
  • Reviews๊ฐ€ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ์ ์ธ์ง€์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์—ฐ๊ตฌ
  • Code reviews๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€ Tools

SLAM/SDV (since 2000)

  • ๋ชฉํ‘œ: ์ข…์ข… Drivers์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” Blue screens ๊ฐ์†Œ
  • C ์–ธ์–ด์šฉ Driver verification tool
  • Model checking ๊ธฐ์ˆ 
  • ์ข์€ ๋ฒ”์œ„์˜ Protocol ์œ„๋ฐ˜(Violations) ํด๋ž˜์Šค ๋ฐœ๊ฒฌ
    • Drivers์˜ ํŠน์„ฑ ์‚ฌ์šฉ (์ผ๋ฐ˜ C ์ฝ”๋“œ๊ฐ€ ์•„๋‹˜)
    • Microsoft์˜ ์ž˜ ํ…Œ์ŠคํŠธ๋œ ์ƒ˜ํ”Œ Drivers์—์„œ ์—ฌ๋Ÿฌ Bugs ๋ฐœ๊ฒฌ
  • Microsoft compiler suite์—์„œ ์™„์ „ํžˆ ์ž๋™ํ™”๋จ
  • ๋ฌด๋ฃŒ๋กœ ์ด์šฉ ๊ฐ€๋Šฅ
  • Driver certification program์„ ํ†ตํ•ด ๊ฐ•์ œ๋จ
  • ๊ฐ•๋ ฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ๋ก€: ๋Œ€๋ถ€๋ถ„์˜ Blue screens ์ œ๊ฑฐ
  • Model checking์˜ ๊ธฐ์ดˆ ๊ณผํ•™์— ๊ธฐ๋ฐ˜: ๊ณต๊ณต ์ž๊ธˆ ์ง€์›์„ ๋ฐ›์€ ๋Œ€ํ•™ ์—ฐ๊ตฌ์‹ค์—์„œ ์œ ๋ž˜

2010: Agile

  • Web-based services ๋ฐ C++ ์ง„ํ™”๋Š” ๋” ๋น ๋ฅธ Iteration ์š”๊ตฌ
  • Agile ๋ฐฉ๋ฒ•๋ก  ์ˆ˜์šฉ
  • Testing team์˜ ๋Œ€๊ทœ๋ชจ ์ถ•์†Œ (Developer ๋‹น 2๋ช…์˜ Testers์—์„œ 1๋ช… ๋ฏธ๋งŒ์œผ๋กœ): ์ด์ œ Developers๊ฐ€ ์ž์‹ ์˜ Testing์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋จ

Annotation

  • ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ Unannotated code๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ Developers์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•  ๊ฒƒ์ธ๊ฐ€?
  • Microsoft์˜ ์ ‘๊ทผ ๋ฐฉ์‹
    • Checkin ์‹œ Annotations ์š”๊ตฌ (์˜ˆ: __ecount()๊ฐ€ ์—†๋Š” char*๊ฐ€ ํฌํ•จ๋œ ์ฝ”๋“œ ๊ฑฐ๋ถ€)
    • ์–ด์ฐจํ”ผ ์ฃผ์„(Comment)์— ๋„ฃ์„ ๋‚ด์šฉ์ฒ˜๋Ÿผ Annotations๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ฆ
  • ์ด์ œ ๊ธฐ๊ณ„๊ฐ€ ํ™•์ธ ๊ฐ€๋Šฅ(Machine checkable)
  • Engineering practices์™€ ๋งž์ง€ ์•Š๋Š” Formality ํšŒํ”ผ
    • ์ ์ง„์„ฑ(Incrementality)
  • ๋ชจ๋“  Compile ๋งˆ๋‹ค Code design consistency ํ™•์ธ
  • ๋…ธ๋ ฅ์˜ ๊ฐ ์ฆ๊ฐ€๋ถ„(Increment)์— ๋Œ€ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ๋ณด์ƒ
    • ๋ถ€๋ถ„์ ์ธ Code์— Annotations๋ฅผ ๋‹ฌ์•„๋„ ์ด์  ์ œ๊ณต
    • Code์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์— ๋จผ์ € ์ง‘์ค‘ ๊ฐ€๋Šฅ
    • ํ•‘๊ณ„ ๋ฐฉ์ง€: ๋งˆ๊ฐ์ผ ์ดํ›„์— ํ•˜๊ฒ ๋‹ค
  • Annotations๋ฅผ ์ถ”๋ก (Infer)ํ•˜๋Š” Tools ๊ตฌ์ถ•
    • Inference๋Š” ๊ทผ์‚ฌ์ ์ด์–ด์„œ Annotations ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ „๋ฐ˜์ ์ธ ์ž‘์—… ์ ˆ์•ฝ
    • ๋ถˆํ–‰ํžˆ๋„ Microsoft ์™ธ๋ถ€์—์„œ๋Š” ์•„์ง ์‚ฌ์šฉ ๋ถˆ๊ฐ€

SAGE

  • White-box fuzz testing (Symbolic-execution ๊ธฐ๋ฐ˜ Test generation)
  • ํŠนํžˆ File ๋ฐ Protocol parsing routines์˜ Security issues ๋Œ€์ƒ
    • "Image processors, Media players, File decoders, Document parsers๋ฅผ ํฌํ•จํ•œ ์ˆ˜๋ฐฑ ๊ฐœ์˜ Microsoft applications์—์„œ ์ด์ „์— ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋งŽ์€ Security vulnerabilities ๋ฐœ๊ฒฌ"
  • ์ž์ฒด SMT constraint solver (Z3)
  • Research project์—์„œ Large-scale deployment๋กœ ๋ฐœ์ „
    • 200๋Œ€์˜ ๋จธ์‹ ์—์„œ ๋Œ€๊ทœ๋ชจ ์‹คํ–‰

Bug Prediction

  • Metrics
  • Software repositories ๋งˆ์ด๋‹(Mining)
  • ๊ฒฐ๊ณผ ์˜ˆ์‹œ
    • Distributed development๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, Organizational distance๋Š” ์ค‘์š”ํ•จ
  • ํ˜„์žฌ Testing effort ์šฐ์„ ์ˆœ์œ„ ์ง€์ •์— ํ™œ์šฉ ์ค‘

Boogie, Dafny, ...

  • Intermediate Verification Language
  • "์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Formal verification"
    • Dafny ์–ธ์–ด...
  • ํ˜„์žฌ ํ™œ๋ฐœํžˆ ์—ฐ๊ตฌ ์ค‘...

Case Study: Microsoft

  • Microsoft๋Š” Features ๋‹จ์œ„๋กœ Software ๊ณ„ํš
  • Release ๋‹น 3-4๊ฐœ์˜ Milestones
  • ๊ฐ Milestone ์ดํ›„, ์–ด๋–ค Features๋ฅผ ์—ฌ์ „ํžˆ ๊ตฌํ˜„ํ•ด์•ผ ํ• ์ง€ ์žฌ๊ณ 
  • Milestone ๋ง์— Stabilization ๋ฐ Freeze

Prepare Servicing Strategy for Windows 10 Updates

alt text

QA Process Considerations

  • ์šฐ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€ QA ๊ธฐ์ˆ ์„ (๊ฐ„๋žตํžˆ) ๋‹ค๋ฃจ์—ˆ์Œ
    • Formal verification
    • Unit testing, Test driven development
    • Quality attributes๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ Advanced testing (GUI testing, Fuzz testing ๋“ฑ)
    • Static analysis
    • Dynamic analysis
    • Formal inspections ๋ฐ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ Code reviews
  • ๊ทธ๋Ÿฌ๋‚˜: ์–ธ์ œ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€? ์–ด๋–ค ๊ธฐ์ˆ ์„? ์–ผ๋งˆ๋‚˜? ์–ด๋–ป๊ฒŒ ๋„์ž…ํ•  ๊ฒƒ์ธ๊ฐ€? Quality culture๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•๋ฆฝํ•  ๊ฒƒ์ธ๊ฐ€? ๊ทœ์ • ์ค€์ˆ˜(Compliance)๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•  ๊ฒƒ์ธ๊ฐ€? Social issues๋Š”? ์™ธ๋ถ€ Components๋Š” ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?

Start QA As Soon As Possible

alt text

Qualities and Risks

  • ์–ด๋–ค Qualities๊ฐ€ ์š”๊ตฌ๋˜๋Š”๊ฐ€? (Requirements engineering)
  • ์–ด๋–ค Risks๊ฐ€ ์˜ˆ์ƒ๋˜๋Š”๊ฐ€?
  • Qualities์™€ Risks์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ QA strategy ์กฐ์ •(Align)

Test Plans Linking Development and Testing

alt text

Example: SQL Injection Attacks

์–ด๋–ค QA strategy๊ฐ€ ์ ํ•ฉํ•œ๊ฐ€? alt text

Example: Scalability

  • ์–ด๋–ค QA strategy๊ฐ€ ์ ํ•ฉํ•œ๊ฐ€?

Example: Usability

  • ์–ด๋–ค QA strategy๊ฐ€ ์ ํ•ฉํ•œ๊ฐ€?

QA Tradeoffs

  • QA ์ ‘๊ทผ ๋ฐฉ์‹์˜ ํ•œ๊ณ„ ์ดํ•ด
    • ์˜ˆ: Testing ๋Œ€ Static analysis, Formal verification ๋Œ€ Inspection ๋“ฑ
  • ๊ธฐ์ˆ ๋“ค์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ(Mix and match)
  • ๋‹ค๋ฅธ Qualities๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ธฐ์ˆ  ์‚ฌ์šฉ

QA within the Process

QA as Part of the Process

  • Milestones์—์„œ์˜ QA ์‚ฐ์ถœ๋ฌผ(Deliverables) ๋ณด์œ  (Management policy)
    • Milestone ์ „ Inspection / Test report
  • Development practices ๋ณ€๊ฒฝ (Developer์˜ ๋™์˜ ํ•„์š”)
    • ์˜ˆ: Continuous integration, Pair programming, Reviewed checkins, Zerobug, Checking ์ „ Static analysis
  • Code review์˜ ์ผ๋ถ€๋กœ์„œ์˜ Static analysis (Google)
  • Bugs ๋ฐ ๊ธฐํƒ€ Quality metrics ์ถ”์ 

Defect Tracking

  • Issues: Bug, Feature request, Query
  • ์ธก์ •(Measurement)์˜ ๊ธฐ์ดˆ
    • ์–ด๋–ค Phase์—์„œ ๋ณด๊ณ ๋˜์—ˆ๋Š”๊ฐ€
    • ์ˆ˜๋ฆฌ ๊ธฐ๊ฐ„, ๋‚œ์ด๋„
    • ๋ถ„๋ฅ˜(Categorization)
    • โ†’ Root cause analysis
  • ์˜์‚ฌ์†Œํ†ต ์ด‰์ง„(Facilitates communication)
    • ๋ณด๊ณ ์ž์—๊ฒŒ ๋‹ค์‹œ ์งˆ๋ฌธ
    • ๋ณด๊ณ ์„œ๊ฐ€ ์žŠํžˆ์ง€ ์•Š๋„๋ก ๋ณด์žฅ
  • ์ฑ…์ž„(Accountability)

Enforcement

  • Microsoft: Check in gates
    • Analysis suite๊ฐ€ ์‹คํ–‰๋˜์–ด ์˜ค๋ฅ˜๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„์•ผ Code๋ฅผ Check in ๊ฐ€๋Šฅ
    • Test coverage, Dependency violation, ๋ถˆ์ถฉ๋ถ„/๋‚˜์œ Design intent, Integer overflow, Allocation arithmetic, Buffer overruns, Memory errors, Security issues
  • eBay: Dev/QA handoff
    • Developers๋Š” ๋ฐ์Šคํฌํƒ‘์—์„œ FindBugs ์‹คํ–‰
    • QA๋Š” Code ์ˆ˜์‹  ์‹œ FindBugs ์‹คํ–‰, ๊ฒฐ๊ณผ ๊ฒŒ์‹œ, ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์ˆ˜์ • ์š”๊ตฌ
  • Google: Commits์— ๋Œ€ํ•œ Static analysis, Review์— ํ‘œ์‹œ๋จ
  • ์„ฑ๊ณต์„ ์œ„ํ•œ ์š”๊ตฌ์‚ฌํ•ญ
    • ๋‚ฎ์€ False positives
    • False positive ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œ(Override)ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• (์ผ๋ฐ˜์ ์œผ๋กœ Inspection์„ ํ†ตํ•ด)
    • Developers๊ฐ€ ๋จผ์ € Static analysis๋ฅผ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•จ

Social Aspects

Social Issues

  • Defects์— ๋Œ€ํ•œ Developer์˜ ํƒœ๋„
  • Security์— ๋Œ€ํ•œ Developer ๊ต์œก
  • QA practices ๊ฐ•์ œ๋ฅผ ์œ„ํ•ด ๋™๋ฃŒ ์••๋ ฅ(Peer pressure) ์‚ฌ์šฉ
    • Breaking the build - ๋‹ค์–‘ํ•œ ๊ทœ์น™๋“ค
  • Developer ๋Œ€ Tester ๋ฌธํ™”
  • Testers๋Š” ๋‚˜์œ ์†Œ์‹์„ ์ „ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ
  • ์„ฑ๊ณผ ํ‰๊ฐ€(Performance evaluations)์— Defects ํฌํ•จ?
  • Issues ๋Œ€ Defects
  • ์ข‹์€ Test suits๋Š” ์‹ ๋ขฐ๋„(Confidence)๋ฅผ ๋†’์ด๊ณ , Shared code ownership ์žฅ๋ ค

Reporting Defects

  • ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ(Reproducible) Defects
  • ๊ฐ„๋‹จํ•˜๊ณ  ์ผ๋ฐ˜์ ์ž„(Simple and general)
  • ๋ณด๊ณ ์„œ ๋‹น ํ•˜๋‚˜์˜ Defect
  • ์ ๋Œ€์ ์ด์ง€ ์•Š์Œ(Non-antagonistic)
    • (Testers๋Š” ๋ณดํ†ต ๋‚˜์œ ์†Œ์‹์„ ๊ฐ€์ ธ์˜ด)
    • ๋ฌธ์ œ(Problem)๋ฅผ ์ง„์ˆ 
    • ๋น„๋‚œํ•˜์ง€ ์•Š์Œ(Don't blame)

Reporting Defects (BAD)

Reporting Defects (GOOD)

Summary

  • QA plan ๊ฐœ๋ฐœ
    • Quality goals ๋ฐ Risks ์‹๋ณ„
    • ์ ‘๊ทผ ๋ฐฉ์‹ ํ˜ผํ•ฉ ๋ฐ ๋งค์นญ(Mix and match)
    • QA ๊ฐ•์ œ(Enforce), ๊ด€ํ–‰(Practices) ํ™•๋ฆฝ
  • Microsoft์˜ Case study
  • Process ๋‚ด QA ํ†ตํ•ฉ
  • QA์˜ Social issues
์ตœ๊ทผ ์ˆ˜์ •: 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