회귀 테스트
위키백과 ― 우리 모두의 백과사전.
회귀 버그를 찾는 모든 소프트웨어 테스트 방식은 회귀 테스트라 할 수 있다. 회귀 버그는 이전에 제대로 작동하던 소프트웨어 기능에 문제가 생기는 것을 가리킨다. 일반적으로 회귀 버그는 프로그램 변경 중 뜻하지 않게 발생한다.
회귀 테스트로는 이전의 실행 테스트를 재 실행하며 이전에 고쳐졌던 오류가 재현되는지 검사하는 방법이 많이 사용된다.
경험적으로 이러한 오류 재현 방법은 꽤 효과적이다. 왜냐면 부실한 버전 관리로 인해 이전의 버그 픽스를 유실하고 이로 인해 버그가 재발하는 경우가 종종 있으며, 또한 그저 자주 픽스하는 방법은 프로그램을 지저분하게 하는 임시 방편일뿐 근본적인 해결은 되지 못하기 때문이다. 임시적인 픽스들은 프로그램의 다른 부분을 변경할 경우 무용지물이 되는 경우가 많다. 즉, 리팩토링을 통해서 몇몇 기능을 재디자인할 경우 동일한 문제가 이전에 고쳐진 부분에서 다시 발생하는 경우가 많다.
그러므로, 버그가 발생했을 경우 이를 픽스하면서 해당 버그를 발견할 수 있는 테스트를 작성하고 이를 이용해 프로그램을 변경할 때마다 테스트를 다시 수행하는 것이 좋다. 수동으로 할 수도 있지만, 보통은 테스트 자동화 툴을 사용한다. 일반적으로 '테스트 수트'들은 회귀 테스트 케이스들을 자동으로 처리해주는 테스트 환경을 제공한다. 어떤 테스트 수트들은 자동으로 전체 회귀 테스트를 정해진 시각에 수행하고 그 결과를 보고해주는 기능도 제공한다. 일반적으로 (작은 규모의 프로젝트일 경우는) 컴파일이 이뤄졌을 때에, (덩치가 좀 되는 프로젝트일 경우는) 매일 밤 또는 매주마다 전체 테스트를 실행한다.
회귀 테스트는 익스트림 프로그래밍의 중요한 부분이다. 이 방법론에 따르면 디자인 문서는 처음 작성된 후에도 소프트웨어 개발 주기 상의 모든 단계마다 업데이트된다. 그러한 업데이트는 전체 소프트웨어 패키지에 대한 확산적이며 반복적인 자동화 테스트를 통해 이뤄진다.
[편집] 사용
회귀 테스트는 프로그램의 정확성뿐만 아니라 그 결과물의 품질을 지속적으로 기록하기에도 유용하다. 컴파일러 디자인 상의 인스턴스를 위해 회귀 테스트는 테스트 수트의 코드 크기, 시뮬레이션 시간과 컴파일 시간을 지속적으로 기록해야 한다.
[편집] 인용
- "새로운 버그가 발견될 때마다 프로그램 유지 보수를 위해서 각 상태 별로 더 많은 시스템 테스트가 필요하게 된다. 이론적으로는 예기치 않은 문제의 발생을 방지하기 위해서 각각의 버그 픽스 후에는 반드시 이전에 실행했던 전체 배치 테스트를 수행해야한다. 그러나 실제로 이런 회귀 테스트는 이론에나 부합되는 굉장한 아이디어긴 하지만 상당한 비용을 지불해야된다는 것을 깨닫게 된다." -- 프레더릭 브룩스, 《인월 미신》 (p 122)
[편집] 더 보기
- 품질 관리
- 소프트웨어 개발 프로세스
- 유닛 테스트
분류: 정리가 필요한 문서 | 소프트웨어 테스트 | 익스트림 프로그래밍