소프트웨어 개발 과정에서 버그를 수정하는 것은 일상적인 일입니다. 개발자는 버그를 수정하고, QA는 수정된 기능이 잘 동작하는지 확인합니다. 하지만 이 과정에서 많은 팀이 치명적인 실수를 저지르곤 합니다. 바로 '하나를 고쳤더니, 엉뚱한 다른 하나가 망가지는' 문제입니다.
이러한 재앙을 막기 위해 우리는 확인 테스팅(Confirmation Testing)과 회귀 테스팅(Regression Testing)이라는 두 가지 중요한 안전장치를 이해해야 합니다. 이 두 테스트는 종종 혼동되지만, 그 목적과 범위는 완전히 다릅니다. 이 글에서는 두 테스트의 차이점을 명확히 하고, 어떻게 함께 동작하여 소프트웨어의 안정성을 지키는지 알아보겠습니다.
확인 테스팅, 또는 재테스트(Re-testing)는 매우 단순하고 명확한 목적을 가집니다.
이 과정은 마치 의사가 특정 질병을 치료한 후, "그 병이 완치되었는지"만 다시 검사하는 것과 같습니다. 확인 테스팅이 성공하면, 우리는 해당 버그 티켓을 '완료(Closed)' 처리할 수 있습니다.
확인 테스팅이 끝났다고 안심하기는 이릅니다. 코드 수정은 마치 젠가(Jenga) 게임에서 블록 하나를 빼는 것과 같아서, 예상치 못한 부작용(Side Effect)을 일으킬 수 있습니다. 이때 필요한 것이 바로 회귀 테스팅입니다.
auth.js
라는 JavaScript 라이브러리를 수정했습니다. 이 변경이 다른 기능에 미칠 영향을 검증해야 합니다. auth.js
를 사용하는 회원가입 페이지의 '가입하기' 버튼은 정상 작동하는가? 회귀 테스트는 범위가 넓고 반복적으로 수행되므로, 자동화가 필수적입니다. 잘 구축된 자동화 회귀 테스트 스위트는 개발팀에게 "언제든 안심하고 코드를 변경할 수 있다"는 자신감을 줍니다.
구분 | 확인 테스팅 (Confirmation Testing) | 회귀 테스팅 (Regression Testing) |
---|---|---|
목적 | 특정 버그가 수정되었는지 검증 | 변경으로 새로운 버그가 생기지 않았는지 검증 |
범위 | 좁고 깊음 (Narrow and Deep) – 특정 버그 하나 | 넓고 얕음 (Broad and Shallow) – 시스템 전반 |
테스트 케이스 | 실패했던 기존 테스트 케이스 재실행 | 미리 정의된 광범위한 테스트 스위트 실행 |
자동화 | 수동으로도 가능 | 자동화가 매우 중요 |