“똑같은 유형의 버그가 계속해서 반복적으로 발생하나요?
“버그를 분명히 수정했는데도, 얼마 지나지 않아 비슷한 문제가 또 생기지는 않나요?”
이런 비효율적인 악순환을 끊기 위해 반드시 필요한 활동이 바로 ‘근본 원인 분석(Root Cause Analysis, RCA)’입니다.
이번 글에서는 QA의 중요한 역량 중 하나인 ‘근본 원인 분석’에 대해 깊이 있게 알아보겠습니다.

Q. ‘근본 원인 분석(RCA)’, 정확히 무엇인가요?
‘근본 원인 분석’은 어떤 문제가 발생했을 때, 눈에 보이는 ‘현상’에만 집중하여 임시방편으로 해결하는 것이 아닙니다.
그 문제를 일으킨 가장 깊숙한 곳의 ‘핵심 원인’을 찾아내고, 이를 해결하여 문제의 재발을 원천적으로 방지하는 체계적인 문제 해결 기법입니다.
QA의 관점에서 ‘근본 원인 분석’은, 버그 리포트에 적힌 현상을 넘어 ‘왜 이 버그가 애초에 만들어질 수밖에 없었는가’를 파고드는 과정입니다.
Q. 왜 QA에게 ‘근본 원인 분석’이 중요한가요?
QA의 역할을 ‘버그 발견자’에서 ‘프로세스 개선자’로 확장시켜주기 때문입니다.
좋은 ‘근본 원인 분석’은 다음과 같은 높은 가치를 제공합니다.
- 동일 버그 재발 방지:
- 표면적인 증상만 치료하는 것이 아니라, 병의 뿌리를 뽑아 똑같은 실수가 반복되지 않도록 합니다. ‘근본 원인 분석’ 없는 버그 수정은 임시방편일 뿐입니다.
- 개발 프로세스 개선:
- ‘근본 원인 분석’ 결과, “특정 모듈의 코드 복잡도가 너무 높아서 실수가 잦다”거나 “요구사항 자체가 모호해서 개발자가 오해했다”는 사실을 발견할 수 있습니다.
- 이를 개선하면, 미래에 발생할 수많은 버그를 사전에 예방할 수 있습니다.
- 팀 전체의 성장:
- ‘근본 원인 분석’은 ‘누가’ 잘못했는지를 따지는 것이 아닙니다.
- ‘무엇이’ 문제였는지를 팀 전체가 함께 분석하며, 같은 실수를 반복하지 않는 학습 조직으로 성장하도록 돕습니다.
Q. 가장 쉬운 ‘근본 원인 분석’ 기법, ‘5 Whys’는 무엇인가요?
‘5 Whys’는 어떤 문제에 대해 “왜?”라는 질문을 다섯 번(또는 그 이상) 반복하여, 점차 깊이 파고들어 마침내 근본 원인에 도달하는 간단하지만 강력한 ‘근본 원인 분석’ 기법입니다.
‘5 Whys’를 활용한 ‘근본 원인 분석’ 예시:
- 문제 현상: 사용자가 주문 버튼을 눌렀을 때, 가끔 주문이 실패한다.
- Why 1? 왜 주문이 실패했는가?
- -> 데이터베이스에 주문 정보가 정상적으로 저장되지 않았다. (표면적인 기술 현상)
- Why 2? 왜 데이터베이스에 저장되지 않았는가?
- -> 서버가 데이터베이스로부터 타임아웃 응답을 받았기 때문이다.
- Why 3? 왜 타임아웃이 발생했는가?
- -> 데이터베이스의 특정 테이블에 락(Lock)이 너무 오래 걸려 있었기 때문이다.
- Why 4? 왜 락이 오래 걸렸는가?
- -> 주문 처리 트랜잭션과 실시간 재고 확인 트랜잭션이 서로 충돌했기 때문이다.
- Why 5? (근본 원인) 왜 트랜잭션이 충돌했는가?
- -> 재고 확인 로직에 비효율적인 쿼리가 포함되어 있어, 트랜잭션 격리 레벨과 충돌할 가능성이 설계 단계에서 충분히 고려되지 않았다.
이 ‘근본 원인 분석’을 통해, 우리는 단순히 ‘주문 실패’라는 현상을 넘어 ‘설계 단계의 문제’라는 핵심 원인을 찾을 수 있었습니다.
Q. 성공적인 ‘근본 원인 분석’을 위한 QA의 자세는 무엇인가요?
성공적인 ‘근본 원인 분석’은 올바른 기술만큼이나 올바른 ‘자세’가 중요합니다.
- 비난이 아닌 분석:
근본 원인 분석의 목적은 ‘누가’ 잘못했는지 범인을 찾는 것이 절대 아닙니다.- ‘어떤 시스템’과 ‘어떤 프로세스’가 문제를 유발했는지 객관적으로 함께 분석하는 협업의 과정입니다.
- 데이터 기반 접근:
- “그럴 것 같다”는 추측이 아닌, 로그, 모니터링 데이터, 테스트 결과 등 명확한 데이터를 근거로 원인을 추적해야 성공적인 ‘근본 원인 분석’이 가능합니다.
- 끈기 있는 질문:
- “왜?”라는 질문을 멈추지 않고, 문제의 가장 깊은 곳까지 파고들려는 집요함이 필요합니다.
결론: 버그가 태어나지 못할 환경을 만드는 것
‘근본 원인 분석(RCA)’은 하나의 버그를 해결하는 것을 넘어, 미래에 발생할 수십 개의 버그를 예방하는 매우 가치 있는 활동입니다.
QA가 ‘근본 원인 분석’에 적극적으로 참여할 때, 팀은 단순히 버그를 수정하는 것을 넘어, 지속적으로 성장하고 발전하는 학습 조직이 될 수 있습니다.
훌륭한 QA는 버그를 잘 찾는 사람이지만, 위대한 QA는 버그가 다시는 태어나지 못할 환경을 만드는 사람입니다. 그 핵심에 바로 ‘근본 원인 분석’이 있습니다.