
소프트웨어 품질에 있어 QA(Quality Assurance)와 QC(Quality Control)는 종종 혼용된다.
두 개념은 모두 소프트웨어 품질을 보장하기 위한 활동이지만, 접근 방식과 책임이 엄연히 다르다.
차이점을 짚기 전에 우선 각 개념이 어떠한 역할을 하는지부터 살펴보자.
QA(Quality Assurance)는 '품질 보증' 을 의미하며 소프트웨어 개발 프로세스 전반에 걸쳐서 품질을 보장하는 활동을 일컫는다. QA는 소프트웨어가 요구된 품질 수준을 만족하는지를 확인하는 프로세스 중심의 접근법을 취하며, 목표는 문제를 예방하는 것이다. 즉, QA 활동은 소프트웨어 개발과정에서 오류가 발생하지 않도록 프로세스를 개선하고, 최적화하며 품질을 보증하는 데 중점을 둔다.
예) 리뷰 프로세스를 통해 코드 품질을 사전에 점검, 빌드 시스템을 점검하여 빌드 실패를 사전에 방지
QC(Quality Control)는 '품질 관리'를 의미하며 개발된 소프트웨어의 품질을 검증하고, 측정하는 활동에 중점을 둔다. 또, 개발된 제품에 대해 오류를 찾아내고 수정하는 데 집중한다. 즉, QC는 결과 중심의 접근법으로, 제품의 최종 품질을 평가하고 보증하는 역할을 한다.
예) 버그 리포트 작성 후 개발팀과 협업하여 버그 수정, 자동화 테스트를 통해 기능이 정상적으로 작동하는지 검증
| 항목 | QA(Quality Assurance): 품질 보증 | QC(Quality Control): 품질 관리 |
|---|---|---|
| 목표 | 품질을 예방하는 것(과정 중심) | 품질을 검증하는 것(결과 중심) |
| 활동 범위 | 개발 프로세스의 전반적인 개선 및 관리 | 소프트웨어 제품에서의 오류나 결함을 찾아내고 수정 |
| 주요 초점 | 프로세스 개선, 표준화, 리스크 관리, 예방 조치 등 | 결함 발견, 테스트, 품질 평가 |
| 타임라인 | 프로젝트 초기에 계획되고 지속적으로 관리 | 개발 후, 최종 제품에 대해 테스트 후 검증 |
QA와 QC는 조직이나 프로젝트마다 다르게 적용될 수 있는 것 같고 위와 같은 차이점으로 구분지을 수도 있다. 하지만 짧은 경험으로 결론을 짓자면, QA와 QC는 많은 경우에 통합되어 운영되고 있으며 일관된 품질을 보장하는 과정으로 두 개념 모두 함께 적용된다고 생각한다.