Regression Test(회귀 테스트) 란 무엇인가?

Dahun Yoo·2021년 10월 24일
2

QA or Test

목록 보기
20/38
post-thumbnail

Regression Test에 대해 기재해봅니다.


Regression Test

회귀 버그를 찾는 모든 소프트웨어 테스트 방식은 회귀 테스트(regression testing, non-regression testing)라 할 수 있다. 회귀 버그는 이전에 제대로 작동하던 소프트웨어 기능에 문제가 생기는 것을 가리킨다. 일반적으로 회귀 버그는 프로그램 변경 중 뜻하지 않게 발생한다.

회귀 테스트로는 이전의 실행 테스트를 재 실행하며 이전에 고쳐졌던 오류가 재현되는지 검사하는 방법이 많이 사용된다.

https://ko.wikipedia.org/wiki/%ED%9A%8C%EA%B7%80_%ED%85%8C%EC%8A%A4%ED%8A%B8

위 설명과 같이 프로그램 변경 중 뜻하지 않게 발생하는 버그를 회귀 버그, Regression bug라고 합니다.
신규 기능을 추가하였을 때, 신규 기능의 추가로 인하여 기존 기능에 영향이 발생할 수 있기에, 이전의 실행한 테스트를 재실행 하여 기존 기능에 issue가 없는지 체크합니다.

Regression Testcase

회귀 테스트케이스의 추가 및 선정은, 프로덕트에 기능이 새롭게 추가된다면, 통상적으로 매 버전마다 이루어져야합니다.
여기서 어떤 내용을 회귀 테스트케이스 내용으로 사용할지는 상황마다 다를 수 있다고 생각하는데요, 경우에 따라서 아래와 같을 것 입니다.

  1. 이번 버전에서 진행한 테스트 케이스에 대해, 다시 한 번 수행하는 것.
  2. 기존에 관리하고 있던 회귀 테스트케이스들을, 이번 테스트케이스와는 별개로 수행해볼 것.

1번의 경우라면, 회귀 테스트라기 보단 버그가 잘 수정되었는지를 확인하는 확인테스트에 가까울 것 입니다.

회귀 테스트 케이스의 관리로는 팀내부 방침에 따라 작성하는데, 보통 기존 기능들의 regular pattern을 추려 작성해놓고, 매 버전마다 추가 및 관리해주며 사용합니다.

Regression Test type

회귀 테스트에는 몇가지 유형이 있습니다.

Retest All

기존에 가지고 있던 모든 회귀 테스트 및 데이터들을 다시 이용하여 테스트를 진행합니다.
테스트 커버리지는 향상될 수 있겠으나 테스트에 시간이 많이 걸립니다.
좀 더 자세히 설명하자면, 개발단계에서의 Unit Test / Integration Test의 경우라면 시간이 많이 걸리지 않을 수도 있으나 그 이후 System Test, Acceptance Test에서, 사람이 직접 진행하는 Manual Test의 경우 시간이 많이 걸릴 것 입니다.

Selective

신규 기능을 검토하여 영향이 있을 것 같은 기존 기능들을 선택적으로 추려내어 테스트를 진행합니다.
테스트 수행 범위가 최소화되어 시간과 코스트를 절약할 수 있으나, 테스트 커버리지가 부족하여 프로덕트에 결함이 존재할 확률이 높아집니다. 또한 선택범위 검토가 잘못될 확률도 있습니다.

Priority

프로덕트의 핵심 기능을 위주로 우선순위를 책정하여 테스트를 수행합니다.
중요도/위험도에 따라 테스트를 수행하며 전체 테스트케이스 재수행보다 코스트가 절감하게 됩니다.
그러나 이 역시 우선순위가 잘못 검토되었을 시 결함이 존재할 확률이 높아집니다.

Automate Regression test

기존에 수행했던 테스트케이스들을 매 버전마다 재수행하기 때문에, 회귀 테스트는 자동화의 고려대상으로도 많이 거론됩니다.
했던 작업을 반복해서 한다면 human error가 발생하기 쉽기에 결함이 있어도 놓칠 확률도 높기도 합니다.
회귀 테스트를 자동화할 때는 크게 2가지 정도의 방법이 있을 것 같습니다.

  • 3rd party제품을 활용한 Recording & Play
  • 직접적인 코딩을 통한 자동 회귀 테스트 구축

그러나 위에서 말씀드렸다시피, 회귀 테스트란 매 버전마다 테스트케이스를 관리해주어야할 필요가 있으므로, 자동 테스트를 구축하면 그만큼 유지보수 비용이 발생하게 됩니다. 또한 UI를 기반으로한 자동 테스트라면, UI가 자주 변경되는 테스트의 경우에는 적합하지 않을 수 있습니다.

근본적으로, 어떠한 관점으로, 어느 기능을 어떻게 테스트할 것인지, 테스트 시나리오, 즉 테스트 설계가 잘 이루어져 있어야만 자동 회귀 테스트의 효과가 올라갈 것입니다.(잘짜여진 테스트케이스가 필요)

ref.

profile
QA Engineer

0개의 댓글