회귀 테스트 (Regression Test)란?

회귀테스트 (Regression Testing)란


회귀(回歸) 테스트란 프로그램의 기능 변경, 환경 수정 등에 의해 예전에 이미 테스트되었고 기존에 정상적으로 작동했던 부분에 예상외의 영향을 주지 않는지 검증하는 테스트입니다. Regression 테스트는 소프트웨어의 안정성과 신뢰성을 유지하기 위해 매우 중요합니다.

 

Regression Test

소프트웨어 개발 과정에서 결함이 발견되거나 새로운 기능을 추가하거나 로직을 변경하기 위해 프로그램이 수정되는 경우가 많지만, 그 수정의 영향을 받아 정상적으로 동작하고 있었던 부분이 이상을 일으키게 버그를 일으키는 때가 있습니다.

이러한 현상을 “디그레이드” 혹은 “리그레션” 등이라고 합니다. 이것을 피하기 위해 기능 추가나 버그 수정등으로 코드의 일부가 수정 된 뒤, 지금까지의 동작에 의도하지 않은 변경이나 문제가 생기고 있는지 확인하는 테스트를 Regression 테스트라고 합니다.

범위나 대상을 좁히지 않고 실시하는 테스트를 “Full Regression Test” 혹은 “Retest All” 기법이라고 하고, 일부를 변경할 때마다 모든 기능이나 코드를 다시 테스트하는 것은 시간이나 비용의 부담이 크기 때문에, 영향을 미칠 가능성이 있는 프로그램의 범위를 판별하고 중요한 기능을 우선하여 테스트하는 등의 운용이 이루어지는 경우가 많다. 그 외에 변경 대상 위주로 실시하는 기법을 “Selective” 기법, 시스템 핵심 기능 위주로 실시하는 기법을 “Priority“기법이라고 합니다.

또한, 개발 환경의 변경이나, 운용 개시 후의 운영 체제(OS)나 프로그램 실행 환경, 데이터베이스 관리 시스템(DBMS)등의 미들웨어의 갱신(업데이트 및 업그레이드)에 수반해 Regression가 일어나는 일도 있어, 이와 같이 환경 변경시에도 회귀 테스트가 수행됩니다.

 

 

Regression 테스트의 목적 및 특징


1. 변경사항 검증:

소프트웨어에 새로운 기능이나 수정이 이루어지면, 해당 변경사항이 다른 기능에 부정적인 영향을 미치지 않는지 확인합니다.

 

2. 버그 감지:

새로운 코드가 기존 코드와 상호작용할 때 발생할 수 있는 잠재적인 버그를 찾아내기 위해 사용됩니다.

 

3. 품질 보증:

Regression 테스트를 통해 변경된 부분과 그 주변 코드의 품질을 보장하고, 실제 사용 환경에서 예기치 못한 문제를 방지합니다.

 

4. 자동화 가능성:

반복적이고 예측 가능한 테스트 케이스는 자동화하여 효율적으로 수행할 수 있습니다.

 

5. 그 외 결함조시 확인, 신규 오류 확인, 정합성 확인 등이 있습니다.

 

 

 

Regression 테스트를 수행하는 방법


Regression 테스트를 수행하는 방법에는 수동 테스트와 자동 테스트가 포함됩니다. 수동 테스트는 QA 엔지니어가 직접 소프트웨어를 테스트하는 것이며, 자동 테스트는 스크립트나 도구를 사용하여 자동화된 방식으로 테스트를 수행하는 것입니다. 자동 테스트 도구 중 가장 널리 쓰이는 툴에는 셀레니움, IBM Rational 기능 테스터, 테스트시그마 등이 있습니다.

자동화된 Regression 테스트는 특히 큰 코드베이스나 빈번한 변경이 있는 프로젝트에서 효과적입니다. 자동화된 테스트는 반복적이고 일관된 검증을 보장하며, 빠르게 실행되어 개발자와 QA 팀에 빠른 피드백을 제공합니다. 이는 소프트웨어의 빠른 개발 주기와 지속적인 통합 (CI) 및 지속적인 제공 (CD) 프로세스에 중요합니다.

 

 

 

리그레션 테스트 절차


1. Record & replay 테스트

케이스툴을 이용하여 최초 테스트 상황을 확인(Recording)한 후, DataPool을 이용하여 테스트 데이터를 변경시켜면서 반복적으로 테스트 ➡ 테스트 비용 절감

 

2. 전략적 Test case 설계

회귀테스트케이스 시나리오는 가변적이므로 최초에 테스트케이스를 미리 예측해 작성하는 것은 많은 어려움이 있다. 테스트를 진행하면서 수행하는 결함조치 결과에 기반한 시나리오로 테스트케이스 유동적으로 신규 작성하는 테스트 계획수립이 필요합니다.

 

3. 주요 대상 선정

응집도가 높은 모듈 내부 보다는 모듈간 결합도가 높은 부분에 집중해서 반복 수행합니다.

 

4. 반복횟수 선정

회귀테스트 반복횟수 지정 기준 마련합니다. (예: 기본적으로 해당 부분에 2회 이상 반복 수행하고, 결함발생율이 이전보다 10% 미만으로 떨어지면 회귀테스트를 완료한다.)

 

 

 

마무리


시스템 개발에 있어서 프로그램의 변경은 항상 일어날 수 있는 것이고 또 큰 리스크에 연결될 수 있는 것이기도 하기 때문에 검출하기 위한 리그레션 테스트는 매우 중요합니다.

회귀 테스트로 인해 제품 품질이 향상되고 일부 변경 후에도 제품이 문제 없이 제대로 작동하게 됩니다. 가능한 한 프로젝트의 계획 단계부터 회귀 테스트 및 그 자동화까지를 전망하는 것이 프로젝트 운영이나 시스템의 추가 안정화 및 신뢰성·품질의 향상으로 이어진다고 말할 수 있습니다.

 

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤