재테스트는 이전 테스트에서 실패한 기능을 검증하는 과정입니다. 실행 중에 버그가 발견된 테스트 케이스가 수정되었는지 확인하기 위해 수행됩니다.
소프트웨어 개발 생명주기에서 중요한 요소는 소프트웨어의 기능, 성능, 보안 등을 테스트하는 것이며, 이는 소프트웨어의 오류를 확인하는 과정을 포함합니다. 그러나 가장 중요한 도전은 타겟 사용자의 요구를 충족시키는 소프트웨어 작동을 검증하는 것입니다. 개발된 소프트웨어의 효과성과 신뢰성을 보장하는 것이 중요하며, 이때 재테스트가 구원의 역할을 합니다.
소프트웨어 테스트의 주요 목표는 소프트웨어 애플리케이션의 오류나 버그를 식별하는 것입니다. 테스트 엔지니어는 이를 판별하고 개발팀에 보고하여 추가 평가를 진행합니다. 이후 문제가 해결되고 재검증을 위해 다시 테스트 엔지니어에게 전달됩니다.
재테스트는 소프트웨어 출시 중 추가 문제가 발생하지 않도록 보장합니다. 이 과정은 특정한 테스트 케이스 세트를 사용하여 수동으로 실행될 수 있습니다. 재테스트에 포함된 복잡성에 관계없이, 이는 고품질 제품을 제공하기 위한 소프트웨어 테스트의 중요한 부분임을 이해해야 합니다.
재테스트란?
소프트웨어 테스트 중 버그를 찾는 것은 테스트 엔지니어의 역할이라는 사실에 익숙해져야 합니다. 이러한 작업 중 일부에서 오류나 문제를 수정하고 개발자에게 다시 보내 문제를 해결하도록 합니다. 여기에서 재테스트가 필요합니다. 이를 더 명확히 이해해 봅시다.
소프트웨어 개발에서 재테스팅은 개발자들이 제공한 빌드를 검증하여 오류가 수정되었는지 확인하는 과정입니다. 간단히 말해, “빌드 번호 1″인 소프트웨어를 테스트하고, 오류가 발견되면 그 오류 ID가 예를 들어 A1이라고 가정합시다. 그런 다음, 테스터는 이러한 오류를 테스트하고 “빌드 번호 2″라고 명명합니다.
다른 말로, 빌드 번호 1에서 발견된 오류가 빌드 번호 2에서 다시 테스트되어 개발자가 오류를 수정했는지 확인합니다. 여기서 테스터는 실패한 사례를 재테스트하여 개발자들이 수정한 내용을 검증합니다.
이는 실패한 테스트 사례의 테스팅이 이루어지는 결함 수명 주기의 일부로, 이전 테스트 시점에 기능하지 않았던 사례들이 개발자에 의해 수정되었습니다.
재테스트 과정에 대한 자세한 정보를 얻기 위해 다음 사항을 따르세요:
- 보고된 버그와 관련된 실패한 테스트 사례를 재테스트합니다.
- 재테스팅의 다른 이름은 확인 테스팅입니다.
- 새 빌드에서 보고된 오류의 재현성을 검증하기 위해 비슷한 테스트 데이터와 프로세스를 사용해야 합니다.
A comprehensive example of the retest process will help you get a clearer picture.
재테스팅이 왜 중요한가?
재테스팅은 소프트웨어 테스팅 수명 주기의 일부로서 제품의 효과적인 전달과 관련된 여러 가지 중요성을 갖고 있습니다. 분명히, 이것은 표준 소프트웨어 테스팅 프로세스의 주요 부분입니다. 그러나 또한, 이는 최종 사용자에게 제품이 출시되기 전에 기술적, 기능적 성과를 검사하여 제품에 추가적인 보장 층을 제공합니다.
기업들은 이러한 경쟁이 치열한 소프트웨어 개발 시장에서 고품질의 디지털 애플리케이션을 보장해야 합니다. 이는 최종 제품의 품질에 어떤 타협도 없이 이루어져야 합니다.
자동화 테스팅 플랫폼은 종종 출시된 제품에 대한 더 나은 ROI를 얻을 수 있도록 도와줍니다. 그러나 재테스트는 모든 버그를 확인함으로써 더 많은 신뢰를 줍니다. 초기 테스팅 과정과 비교해보면, 테스트 리소스에 추가 비용을 발생시키지 않으며 많은 시간을 소비하지도 않습니다. 이는 실패한 테스트 사례와 관련된 유사한 데이터가 있는 동일한 환경에서 수행된다고 알려져 있습니다.
또한, 재테스트 과정은 특정 애플리케이션 모듈에서 발견된 특정 문제나 버그를 해결합니다. 따라서 애플리케이션의 품질을 확인하기 위해 종단 간 테스팅에 더 많은 노력을 기울이거나 새로운 테스팅 환경을 설정할 필요가 없습니다.
재테스팅의 예
위에서 설명한 예시는 겉핥기 정도의 정보를 얻을 수 있지만, 아래에서는 그와 유사한 예시를 더 깊은 시각으로 살펴볼 것입니다.
시나리오
소프트웨어 개발 과정의 일환으로 Build 2.0이 출시되었습니다. 이 빌드의 테스팅 중에 팀은 결함(예: Defect 2.0.1)을 식별하고 출시했습니다. 이와 유사한 Defect 2.0.1은 Build 2.1에서 테스트되어야 합니다(이 결함이 Build 2.1의 릴리스 노트에 언급되어 있는 경우).
실행 과정
버그 수명 주기에 따르면, 버그가 기록되면 즉시 개발 팀에 공유되거나 보고됩니다. 그 후 그 상태는 “신규”로 표시됩니다. 이제 개발 팀이 버그를 수락하거나 거부하는 문제입니다.
버그가 수락되면 개발자가 수정하고 다음 단계에서 배포합니다. 그 상태는 “QA 준비”로 표시됩니다. 현재 테스터는 버그의 해결책을 확인하기 위해 버그를 확인합니다. 따라서 리테스트는 계획된 테스트라고 할 수 있습니다.
테스터는 이전 빌드에서 동일한 테스트 케이스와 테스트 데이터를 사용합니다. 버그가 발견되지 않으면 그 상태는 “수정됨”으로 표시됩니다. 반면에 상태는 “수정되지 않음”으로 남아있습니다. 그런 다음 결함 재테스트 문서가 개발 팀과 공유됩니다.
리테스트에 대한 좋은 통찰력을 가지려면 핵심 기능을 알아야 합니다. 이를 통해 테스트를 다양화하고 소프트웨어 품질 구축의 차원을 확대할 수 있습니다.
리테스트의 특징
최고의 사용자 경험을 위한 소프트웨어 테스팅은 반복적인 프로세스를 따릅니다. 이를 위해 리테스트 프로세스의 중요한 측면에 대한 정보를 유지하면 더 나은 애플리케이션 제공이 가능합니다.
다음은 그 주요 기능입니다.
- 이전과 동일한 문서에서 구현되며 새 빌드에서 프로세스를 진행합니다.
- 특정 테스트 케이스가 실패로 간주될 때 실행됩니다.
- 완전한 소프트웨어가 품질을 검증하기 위해 리테스트가 필요할 때 발생합니다.
- 재테스트할 테스트 케이스를 자동화하는 것은 불가능합니다.
- 재테스트 프로세스는 개발팀에 의존하며, 이들은 버그를 수락하거나 거부하는 책임이 있습니다.
- 테스터는 기능의 변경된 측면에 대한 세부 사항을 고려합니다.
언제 재테스트를 수행해야 하나요?
테스터로서, 언제 재테스트를 수행해야 하는지 결정하는 것이 중요합니다. 이에 대한 답은 간단합니다. 먼저, 테스팅이 필요한 프로젝트의 크기와 특징을 고려해야 합니다.
예를 들어, 조직이 다양한 제품에 걸쳐 광범위한 제품라인을 보유하고 있다면 재테스트가 정상적으로 이루어집니다. 이는 소프트웨어 애플리케이션의 시기적절한 출시가 필요하기 때문이며, 이로 인해 시스템의 다양한 부분에 영향을 미칠 수 있습니다.
재테스트를 프로세스로 사용할 수 있는 다양한 시나리오가 있습니다. 아래에 일부를 설명하겠습니다:
거부된 버그 발견 시
테스터가 발행한 버그가 개발자에 의해 ‘재현 불가능’로 거부되는 경우가 잦을 수 있습니다. 이러한 경우, 같은 버그에 대한 재테스트를 수행하여 개발자에게 문제가 재현 가능하고 유효함을 알립니다.
릴리스 노트에서 강조된 버그 수정 필요성
소프트웨어 개발 과정에서 개발팀이 새로운 빌드를 릴리스할 때, 재테스트가 진행됩니다. 여기서 테스터는 이전에 보고된 버그를 테스트하여 그 수정을 확인합니다.
고객 요청
소프트웨어 품질은 모든 조직에게 중요한 문제입니다. 이를 보장하기 위해, 고객은 특정 사용 사례에 대해 재테스트를 요청할 수 있습니다. 제품의 품질을 확인하기 위해서입니다.
다른 시나리오
버그가 수정될 때마다 개발자들이 추가 테스트 케이스를 생성한다는 점을 중요하게留意해야 합니다. 이는 테스트 케이스 작성에 더 많은 시간을 소비해야 하며, 수정하는 것보다 더 중요하다는 의미입니다. 그러나 코드베이스에 대한 신뢰가 높더라도, 각 배포 시에 애플리케이션의 중요한 부분을 재테스트하는 것이 여전히 중요합니다.
예를 들어, 새로운 기능이 예상치 못한 동작을 유발하고, 버그를 최초로 감지하는 데 어려움을 겪을 수 있습니다. 이러한 문제는 테스트 중이나 사용자 피드백을 기반으로 문제가 명확해질 때 가능합니다. 이 상황에서는 새로 발견된 버그에 대한 의구심을 극복하기 위해 “재테스트”를 수행해야 합니다.
재테스트의 이점
소프트웨어 애플리케이션의 품질은 재테스트 과정의 성공에 달려 있습니다. 이는 소프트웨어 개발 수명 주기에서 애플리케이션의 안정성을 보장합니다.
다음은 그 주요 이점들입니다:
- 버그가 수정되었는지 확인합니다.
- 제품과 애플리케이션의 품질을 향상시킵니다.
- 사용자의 기대에 부합하는 애플리케이션 또는 제품의 작동을 확인합니다.
- 지정된 문제를 목표로 하므로 버그 수정에 소요되는 시간이 적습니다.
- 새로운 빌드에서 동일한 데이터와 프로세스를 사용하여 작동합니다.
- 새로운 테스트 환경 설정이 필요하지 않습니다.
재테스트 과정은 여러 가지 이점이 있지만, 몇 가지 단점도 있습니다. 아래에 제시된 섹션에서 이를 이해해 보겠습니다.
재테스트의 단점
A retest process also has some drawbacks, which can hamper or create challenges in the testing process. Knowing such limitations will help you address those while retesting to avoid any issues.
이들이 무엇인지 이해해 보겠습니다:
- 결함의 인증을 위해 새로운 빌드가 필요합니다.
- 재테스트가 시작되어야만 테스트 사례를 가져올 수 있습니다.
- 테스트 사례를 자동화하여 재테스트할 수 없습니다.
- 실패한 테스트 사례의 재테스트는 추가적인 시간과 노력이 필요합니다.
- 버그가 발견되거나 수정된 경우를 제외하고는 재테스트가 테스트 과정의 일부로 보장되지 않습니다.
재테스트의 단점에 대처하여, 재테스트가 일부 테스터에게는 어려울 수 있다고 말할 수 있습니다. 특히 신입 테스터는 문제를 해결하기 위한 대안을 찾으려고 시도합니다. 여기서 그들을 혼란스럽게 하는 것은 회귀 테스트라는 용어입니다. 그러나 회귀 테스트와 재테스트는 중요한 차이점이 있습니다.
회귀 테스트와 재테스트의 차이점은 무엇인가?
소프트웨어 테스팅에 익숙하지 않다면, “재테스트”와 “회귀 테스트”라는 용어가 비슷하다고 생각할 수 있습니다. 그러나 이 둘은 관련이 있지만 서로 다른 사실입니다. 이 섹션에서는 재테스트 과정이 회귀 테스트와 어떻게 다른지 살펴보겠습니다.
먼저, 회귀 및 재테스트는 소프트웨어 개발 과정에서 소프트웨어 검증의 일부입니다. 재테스트는 주로 개발의 특정 단계가 끝날 때 수행됩니다. 즉, 작동하는 제품이 이전 테스트의 버그로 가득 차지 않았는지 확인하려면 재테스트를 수행합니다. 반면에 회귀 테스트는 코드의 특정 측면이 올바르게 작동하는지 확인하기 위해 개발 단계 중 어느 것에서나 실행할 수 있습니다.
특정 상황에서 테스터는 이전 테스트 결과나 보고서를 읽어 문제 및 수정을 확인하여 재테스트를 실행할 수 있습니다. 종합적인 조사를 위해 이전 사례를 개별적으로 확인하여 처리되었는지 확인할 수도 있습니다. 그러나 회귀 테스트는 주로 테스트 계획을 수립하고 최신 버전부터 시작하여 모든 애플리케이션 버전에 대해 실행하여 수행됩니다. 이러한 접근 방식에서는 모든 애플리케이션 변경 사항이 적절하게 테스트되었는지 확인해야 합니다.
다음은 회귀 및 재테스트 프로세스 간의 차이에 대한 몇 가지 주요 포인터입니다.
Component | Regression Testing | Retesting |
---|---|---|
Purpose | It is executed to check the impact of the code level changes, which often require retests. | It is done to ensure changes executed in the software that doesn’t lead to regressions. |
Method | It is executed with the use of automation testing tools. | It is done manually as it checks for particular defects |
Target | It is done to check existing bugs in the software. | Retest verifies the functionality of the software. |
Time involved | It is more time-consuming because extensive research is needed in previous software versions. | It is less time-consuming because a specific defect is only retested. |
Focus | It aims to check if the functionality of prior versions is maintained corresponding to the update or change to the application. | It does not focus on the functionality of previous versions. Instead, it aims to ensure the restoration of functionality following a bug fix. |
예를 통한 회귀 테스트 및 재테스트 이해
회귀와 재테스트의 차이는 아래 예를 통해 설명할 수 있습니다.
만약 은행 웹 애플리케이션의 로그인 페이지에 문제가 있어 고객이 자신의 계정 정보에 접근할 수 없는 경우를 가정해 보겠습니다. 다시 로그인하라는 메시지가 표시되었지만, 계정에 로그인하지 못했습니다. 지원팀은 이 문제를 조사하고 이런 일이 다시 발생하지 않도록 확인했습니다.
개발팀은 모든 브라우저에서 계정 페이지에 성공적으로 로그인할 수 있도록 코드 수준에서 변경을引入했습니다. 그러나 여기서의 테스트는 로그인 페이지뿐만 아니라 코드 변경이 은행 웹 애플리케이션의 다른 기능에 영향을 주지 않는지 확인하는 것도 포함됩니다. 여기서 수행되는 테스트는 애플리케이션의 수정을 테스트합니다. 이를 회귀 테스트라고 합니다.
수정에 대한 이슈를 다시 확인하는 동안, 테스트 팀은 페이지에 로그인하려고 시도했지만 실패했습니다. 지원 팀은 관련 개발자와 소통하며 이슈를 설명했습니다. 그러나 개발자는 문제를 해결했음을 통보했습니다. QA 팀은 웹 애플리케이션의 작동 여부를 확인하기 위해 문제가 해결되었는지 확인하는 테스트를 수행하며, 이를 재테스트라고 합니다.
따라서, 재테스트는 소프트웨어 테스트 프로세스에서 필수적이며, 그 작동을 보장하기 위한 선결 조건입니다.
재테스트 프로세스의 중요성을 설명하며, 소프트웨어 테스트와의 관계를 이해할 수 있습니다. 먼저, 소프트웨어 테스트에서 재테스트의 일반적인 응용 사례를 이해해 보겠습니다. 다음은 소프트웨어 테스트에서 재테스트의 응용 사례 중 일부입니다:
- 특정 오류나 버그를 수정하기 위해 적용됩니다.
- 최종 기능을 확인하기 위해 전체 시스템의 작동을 확인합니다.
- 시스템의 특정 부분의 품질을 확인합니다.
재테스트의 단계
재테스트 프로세스는 수동 접근 방식을 포함합니다. 또한 소프트웨어 애플리케이션 테스트의 주요 단계를 고려합니다.
다음은 재테스트 프로세스에 포함된 단계입니다:
1. 테스트 사례 선택
테스트 선택은 테스트 슈트에서 특정 테스트 사례를 실행하여 소프트웨어의 오류 수정이 이루어졌는지 감시하는 방법입니다. 일반적으로 테스트 사례는 재사용 가능한 것과 더 이상 사용되지 않는 것으로 구분되며, 재사용 가능한 테스트 사례는 재테스트에 사용됩니다.
2. 테스트 사례 적용
재테스트 과정의 주요 초점은 테스트 사례의 예상 출력을 비교하는 것입니다. 따라서 표준 사전 실행 결과 시트가 있는 테스트 사례를 적용해야 합니다.
3. 시간 추정
테스트 사례를 식별할 때 테스터는 재테스트에 걸리는 총 실행 시간을 고려해야 합니다. 테스트 사례 평가와 같은 요소가 추가 시간을 초래할 수 있습니다.
4. 모듈 추적
테스트 사례가 실패하는 경우, 오류와 관련된 모듈을 식별하는 것이 주요 과제입니다. 따라서 소프트웨어 부분은 다양한 개별 모듈로 나누어집니다.
이를 위해 특정 개별 모듈에 대한 작은 테스트 사례가 구현됩니다. 예상되는 결과를 보이지 않는 모듈은 결함 모듈로 표시됩니다. 이러한 방식으로 결함 모듈의 추적이 이루어집니다.
5. 모듈 재테스트
결함 모듈이 수정될 때까지 재테스트합니다.
6. 모듈 재통합
결함 모듈이 수정되면 테스트 사례의 완전한 통합이 소프트웨어에 적용됩니다. 또한 소프트웨어의 작동을 확인합니다.
How to Perform Retesting?
소프트웨어 애플리케이션의 재시험은 수동 접근 방식을 통해만 수행할 수 있습니다. 위의 섹션에서 강조한 바와 같이, 주요 이유는 특정 결함에만 집중하기 때문입니다. 따라서 수동 시험 접근 방식에 적합하며, 자동화된 방법보다 정확하게 수행할 수 있습니다.
재시험을 수행하려면 시험 팀은 소프트웨어 애플리케이션의 현재 상태에 대한 충분한 지식을 가져야 합니다. 소프트웨어의 작동 방식과 버그를 수정하여 효과적으로 만드는 방법에 대한 지식은 수동 접근 방식을 간소화합니다.
테스터는 애플리케이션에서 변경된 내용을 검증하기 위해 수동으로 테스트 케이스를 실행합니다. 이는 변경 사항이 추가적인 결함을 유발하지 않도록 보장하고, 새로운 배포에서 식별된 실패 케이스를 제거하는 데 사용됩니다. 소프트웨어를 변경하고 결함을 수정하며 소프트웨어 테스트 주기를 완료한 후 수동 재시험을 수행할 수 있습니다.
수동으로 재시험을 수행하려면 아래 단계를 따르세요:
- 소프트웨어 애플리케이션의 변경 사항과 재시험을 필요로 하는 영역을 결정합니다.
- 변경 사항에 따라 재시험을 필요로 하는 테스트 케이스를 검토하고 업데이트합니다.
- 개발된 테스트 케이스는 수동으로 실행해야 합니다.
- 실제 출력과 기대 결과를 분석하여 변경 사항이 새로운 결함을 유발하지 않도록 평가합니다.
- 결함이 식별되면 문서화하고 개발 팀에 보고합니다.
- 모든 결함이 수정될 때까지 수동 재시험 프로세스를 반복합니다.
그러나 왜 재시험을 자동화된 접근 방식으로 수행할 수 없는지 궁금할 수 있습니다. 이에 대한 이유는 여러 가지가 있습니다. 아래 섹션에서 이에 대한 아이디어를 얻어보겠습니다:
재시험을 자동화할 수 없나요?
응용 프로그램을 자동화된 접근 방식으로 재시험할 수 없습니다. 일반적인 이유들을 아래에서 강조하겠습니다:
- 복잡성: 일부 실패한 케이스는 소프트웨어의 복잡성으로 인해 발생할 수 있습니다. 따라서 이러한 실패한 케이스는 자동화하기 어렵습니다.
- 예상치 못한 결과: 소프트웨어에서 변경된 내용이 예상치 못한 결과를 초래할 수 있습니다. 이러한 상황에서의 실패 케이스는 결과를 확인하기 위해 수동 테스트가 필요합니다.
- 비용과 자원: 재시험 프로세스를 자동화하는 것은 추가 하드웨어와 소프트웨어를 사용하는 데 비용이 들 수 있습니다. 소프트웨어의 미소한 변경에 대한 비용을 정당화하는 것이 문제가 될 수 있습니다.
- 시간 제약: 재시험 프로세스를 자동화하는 것은 많은 시간을 소요하며, 시간에 대한 압박이 있을 때 수동 접근 방식이 가장 좋은 선택이 될 수 있습니다.
재시험을 할 때 고려해야 할 사항들
이제 우리는 재시험 프로세스의 중요성과 그를 수행하는 방법을 이해했습니다. 그러나 재시험에서 유효한 고려 사항이 존재하며 주의가 필요합니다. 아래는 고려해야 할 몇 가지 포인트입니다.
- 문제가 첫 보고서에 기반하여 수정된 후, 새로운 소프트웨어 빌드를 형성하는 것이 재시험 프로세스에 필요합니다.
- 코드 수준의 변경이 있을 가능성이 있는 소프트웨어가 재테스트를 위해 전송될 수 있습니다. 따라서 애플리케이션 출시 전에 회귀 테스트를 실시하는 것이 필수적입니다.
- 문제 해결 후에만 재테스트 범위와 범위를 알 수 있습니다. 결과적으로 재테스트와 같은 회귀에 대해 자동화를 실행할 수 없습니다.
- 재테스트에서 발견된 문제가 계속 존재하면 애플리케이션의 개발 시간이 급증할 수 있습니다. 근본 원인을 조사하기 위해 보다 포괄적이고 전략적인 평가가 필요합니다.
그러나 재테스트 프로세스에서 겪는 어려움에도 불구하고 조직은 테스트 방법에 명확한 주의를 기울여야 합니다. 이는 클라우드에서 재테스트를 실행하여 더 잘 수행할 수 있습니다. 자세히 살펴보겠습니다.
클라우드에서 재테스트를 수행하는 방법?
재테스트 프로세스를 자동화하는 것은 항상 가능하지 않으며 소프트웨어 품질을 보장하기 위해 수동 테스트가 필요합니다. 그러나 일부 경우에는 시간이 많이 소요되고 확장 가능한 프로세스가 아닐 수 있습니다. 클라우드 테스팅 플랫폼은 테스트 인프라 관련 문제를 극복하는 데 도움이 됩니다.
Source:
https://dzone.com/articles/retesting-tutorial-a-comprehensive-guide-with-exam