14. QA Process
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โ

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

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

Qualities and Risks
- ์ด๋ค Qualities๊ฐ ์๊ตฌ๋๋๊ฐ? (Requirements engineering)
- ์ด๋ค Risks๊ฐ ์์๋๋๊ฐ?
- Qualities์ Risks์ ๊ธฐ๋ฐํ์ฌ QA strategy ์กฐ์ (Align)
Test Plans Linking Development and Testing

Example: SQL Injection Attacks
์ด๋ค QA strategy๊ฐ ์ ํฉํ๊ฐ?
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


