확인 테스팅, 회귀 테스팅

DoTheTest·2025년 7월 23일
0

테스트 지식

목록 보기
8/24

소프트웨어 개발 과정에서 버그를 수정하는 것은 일상적인 일입니다. 개발자는 버그를 수정하고, QA는 수정된 기능이 잘 동작하는지 확인합니다. 하지만 이 과정에서 많은 팀이 치명적인 실수를 저지르곤 합니다. 바로 '하나를 고쳤더니, 엉뚱한 다른 하나가 망가지는' 문제입니다.
이러한 재앙을 막기 위해 우리는 확인 테스팅(Confirmation Testing)회귀 테스팅(Regression Testing)이라는 두 가지 중요한 안전장치를 이해해야 합니다. 이 두 테스트는 종종 혼동되지만, 그 목적과 범위는 완전히 다릅니다. 이 글에서는 두 테스트의 차이점을 명확히 하고, 어떻게 함께 동작하여 소프트웨어의 안정성을 지키는지 알아보겠습니다.


1. 확인 테스팅 (Confirmation Testing): "정말로 고쳐졌는가?"

확인 테스팅, 또는 재테스트(Re-testing)는 매우 단순하고 명확한 목적을 가집니다.

  • 정의: 이전에 발견되었던 결함(버그)이 의도대로 수정되었는지 확인하기 위해 수행하는 테스트입니다.
  • 핵심 질문: "우리가 고치려고 했던 바로 그 버그가 정말로 고쳐졌는가?"
  • 관점: 좁고 깊게(Narrow and Deep) – 오직 해당 버그 하나에만 집중합니다.

구체적 예시

  • 버그 리포트: "Firefox 브라우저에서 '로그인' 버튼을 클릭해도 아무런 반응이 없음."
  • 개발자의 수정: Firefox 브라우저와 호환되지 않는 JavaScript 코드를 수정합니다.
  • 확인 테스팅 수행:
    1. 테스터가 Firefox 브라우저를 엽니다.
    2. 로그인 페이지로 이동하여 '로그인' 버튼을 클릭합니다.
    3. 로그인이 성공적으로 이루어지는지 확인합니다.

이 과정은 마치 의사가 특정 질병을 치료한 후, "그 병이 완치되었는지"만 다시 검사하는 것과 같습니다. 확인 테스팅이 성공하면, 우리는 해당 버그 티켓을 '완료(Closed)' 처리할 수 있습니다.


2. 회귀 테스팅 (Regression Testing): "다른 건 안 망가졌는가?"

확인 테스팅이 끝났다고 안심하기는 이릅니다. 코드 수정은 마치 젠가(Jenga) 게임에서 블록 하나를 빼는 것과 같아서, 예상치 못한 부작용(Side Effect)을 일으킬 수 있습니다. 이때 필요한 것이 바로 회귀 테스팅입니다.

  • 정의: 코드 변경(버그 수정, 기능 추가 등)으로 인해, 기존에 잘 동작하던 기능에 새로운 결함이 발생하지 않았는지 확인하기 위해 수행하는 테스트입니다.
  • 핵심 질문: "이번 수정으로 인해, 엉뚱한 다른 기능이 고장 나지는 않았는가?"
  • 관점: 넓고 얕게(Broad and Shallow) – 시스템 전반의 안정성을 점검합니다. '회귀(Regression)'란 '좋았던 상태가 나빠짐'을 의미합니다.

구체적 예시

  • 상황: 위 예시의 "Firefox 로그인 버튼 버그"를 수정하기 위해, 여러 기능에서 공통으로 사용하는 auth.js라는 JavaScript 라이브러리를 수정했습니다. 이 변경이 다른 기능에 미칠 영향을 검증해야 합니다.
  • 회귀 테스팅 수행:
    • 로그인 기능: Chrome, Safari 등 다른 브라우저에서도 로그인이 여전히 잘 되는가?
    • 회원가입 기능: auth.js를 사용하는 회원가입 페이지의 '가입하기' 버튼은 정상 작동하는가?
    • 비밀번호 찾기 기능: '비밀번호 찾기' 링크나 기능은 문제없는가?
    • 주요 기능: 이 외에도 시스템의 핵심 기능들(상품 검색, 장바구니 담기 등)을 포괄적으로 점검합니다.

회귀 테스트는 범위가 넓고 반복적으로 수행되므로, 자동화가 필수적입니다. 잘 구축된 자동화 회귀 테스트 스위트는 개발팀에게 "언제든 안심하고 코드를 변경할 수 있다"는 자신감을 줍니다.


3. 핵심 차이점 요약

구분확인 테스팅 (Confirmation Testing)회귀 테스팅 (Regression Testing)
목적특정 버그가 수정되었는지 검증변경으로 새로운 버그가 생기지 않았는지 검증
범위좁고 깊음 (Narrow and Deep) – 특정 버그 하나넓고 얕음 (Broad and Shallow) – 시스템 전반
테스트 케이스실패했던 기존 테스트 케이스 재실행미리 정의된 광범위한 테스트 스위트 실행
자동화수동으로도 가능자동화가 매우 중요

0개의 댓글