“버그 고쳤다는데, 뭘 테스트해야 하죠?” ‘재확인 테스트’와 ‘회귀 테스트’의 차이

개발자로부터 “로그인 버그 수정 완료했습니다! 확인 부탁드려요.” 라는 메시지를 받았습니다.

이제 QA는 이 수정 사항을 검증해야 합니다.

이때 QA는 두 가지의 중요한 질문을 스스로에게 던져야 합니다.

첫째, “그 버그가 정말로 고쳐졌는가?”

둘째, “그 버그를 고치다가, 다른 멀쩡한 기능을 망가뜨리지는 않았는가?”

이 두 가지 질문에 답하는 활동이 바로, 이름은 비슷하지만 목적은 완전히 다른 ‘재확인 테스트’와 ‘회귀 테스트’입니다.

Q. ‘재확인 테스트(Confirmation Testing)’, 정확히 무엇인가요?

‘재확인 테스트’는 보고된 버그가 ‘의도한 대로 정확히 수정되었는지’를 확인하는 테스트입니다.

‘재테스트(Re-testing)’라고도 불립니다.

  • 핵심 목표:
    • 원래 버그를 보고했던 ‘버그 리포트’의 재현 경로를 똑같이 따라가 봅니다.
    • 그리고 더 이상 문제가 발생하지 않음을 확인하는, 매우 집중적이고 명확한 목표를 가진 활동입니다.
  • 비유:
    • 의사가 환자의 부러진 팔에 깁스를 해준 후, 깁스를 풀고 나서 “팔이 원래대로 잘 움직이는지” 확인하는 과정과 같습니다.
    • 이때 의사는 다리나 허리의 상태는 보지 않고, 오직 ‘부러졌던 그 팔’의 상태에만 집중합니다.

Q. ‘회귀 테스트(Regression Testing)’, 그럼 이건 무엇인가요?

‘회귀 테스트’는 특정 코드 수정(버그 픽스, 기능 추가 등)으로 인해, ‘기존에 잘 동작하던 다른 기능’에 의도치 않은 문제가 생기지 않았는지 확인하는 테스트입니다.

소프트웨어의 기능이 과거의 안정적인 상태에서 더 나쁜 상태로 ‘퇴보(regress)’하지 않았는지를 검증하는 것입니다.

  • 핵심 목표:
    • 코드 수정으로 인한 ‘부작용(Side Effect)’을 찾아내는 것입니다.
  • 비유:
    • 의사가 부러진 팔을 치료한 후, “혹시 치료 과정에서 신경을 잘못 건드려 손가락이 저리거나, 어깨가 결리는 등의 다른 문제는 없는지” 몸의 다른 부분을 함께 살펴보는 과정과 같습니다.

Q. ‘재확인 테스트’와 ‘회귀 테스트’의 핵심 차이점

두 테스트는 목적과 범위에서 명확한 차이를 보입니다.

구분재확인 테스트 (Confirmation Testing)회귀 테스트 (Regression Testing)
목표버그가 수정되었는지 ‘확인’수정으로 인한 ‘부작용’이 없는지 확인
범위좁고 깊음 (특정 버그 하나에 집중)넓고 얕음 (관련된 기능 전반)
기준원래의 버그 리포트기존의 테스트 케이스 스위트
질문“그 버그는 고쳐졌는가?”“다른 기능은 여전히 괜찮은가?”

Q. 실제 업무에서는 어떻게 적용되나요?

개발자가 ‘잘못된 비밀번호를 입력해도 로그인이 되는’ 심각한 버그를 수정했다고 가정해 봅시다.

1. ‘재확인 테스트’ 수행:

  • QA는 해당 버그 리포트에 적힌 재현 경로를 그대로 따라갑니다.
  • ‘잘못된 비밀번호’를 입력하고 ‘로그인’ 버튼을 클릭합니다.
  • 예상 결과대로 “비밀번호가 틀렸습니다”라는 에러 메시지가 잘 뜨는지 확인합니다.
  • 여기까지가 ‘재확인 테스트’의 역할입니다.

2. ‘회귀 테스트’ 수행:

  • 이제 QA는 생각의 범위를 넓힙니다. “로그인 인증 로직을 건드렸으니, 혹시 다른 기능에 문제가 생기지 않았을까?”
  • 다음과 같은 관련 기능들을 추가로 테스트합니다.
    • ‘올바른 아이디와 비밀번호’로 로그인은 여전히 잘 되는가?
    • ‘비밀번호 찾기’ 기능은 정상 동작하는가?
    • ‘소셜 로그인’ 기능은 문제가 없는가?
    • 로그인 후 ‘회원정보 수정’ 페이지 접근은 잘 되는가?
  • 이처럼 수정된 부분의 주변부를 넓게 살펴보는 것이 바로 ‘회귀 테스트’입니다.

결론: 버그 수정의 완벽한 마무리

‘재확인 테스트’와 ‘회귀 테스트’는 버그 수정 검증 과정의 ‘필수적인 한 쌍’입니다.

어느 하나라도 소홀히 하면, 수정된 버그가 다시 발생하거나, 더 큰 부작용으로 인한 장애가 발생할 수 있습니다.

‘재확인 테스트’를 통해 문제 자체의 해결을 보장하고, ‘회귀 테스트’를 통해 수정으로 인한 시스템의 안정성을 보장하는 것.

이 두 가지 테스트의 차이점을 명확히 이해하고 상황에 맞게 적절한 범위의 테스트를 수행하는 것은, 신뢰도 높은 QA의 중요한 역량입니다.

참고 자료 (References)

댓글 남기기