인수테스트란 무엇인가?
개요
nextstep이라는 교육기관을 보면 ATDD에 대한 강의가 존재합니다.
테스트 주도 개발(TDD)에 A가 붙어있습니다.
이때의 AT는 Acceptance Test의 약어로 인수 테스트를 의미합니다.
인수테스트를 도입하기 앞서 "인수테스트가 무엇인가?" 에 대해 알아보고자 합니다.
우리가 흔히 진행하는 구현과 테스트
검증(Verification)과 검수(Validation)를 통해 소프트웨어를 만들어나갑니다.
V모델이라고 불리며 각 단계를 완전히 종료한 후 다음 단계로 넘어가는 방식으로 변경이 발생했을 때 가장 비용이 많이 발생합니다.
인수테스트란?
Acceptance Test라고 불리며 인수테스트 혹은 수락 테스트라고 불립니다.
Accetance는 영어로 수락이라는 의미를 가집니다.
인수라는 의미는 "업무를 인수하다 인계하다" 라는 의미로 사용됩니다.
인수테스트를 간단하게 설명하자면 고객의 요구 사항들이 만족되었는가를 분석하기 위해 실시하는 시험입니다.
고객에게 내가 만든 소프트웨어를 인계하기 위해 최종적으로 진행하는 테스트로 이해하였습니다.
단위 테스트가 하위 구현에 대한 테스트라면 인수 테스트는 사용자 관점에서 올바르게 작동하는지 여부를 테스트합니다.
통합테스트 vs 인수테스트
둘은 유사하지만 비슷하지만 목적의 차이가 존재합니다.
인수테스트가 통합테스트를 포함하고 있다고 생각하지만 인수테스트는 사용자의 요구사항에 따라 서비스가 제대로 동작하는지 검증해야 합니다.
인수테스트의 예시
구독에 대한 인수테스트 예시를 만들어 보았습니다.
- 사용자가 카드를 등록한다.
- 사용자는 구독을 요청한다.
- 결제 이력, 결제 수단을 조회할 수 있다.
- 정기 결제 중간에 결제 수단을 변경할 수 있다.
- 정기 결제가 수행된다.
- 사용자는 환불을 수행할 수 있다.
- 환불 후에 환불 이력을 조회할 수 있다.
인수테스트의 장점
- 신규 인원이 프로젝트를 파악하는데 좋은 지도가 될 수 있다.
- 사용자 관점에서 기능이 문제없이 동작하는지 테스트하기 용이하다.
- 빠른 피드백과 반복작업을 줄여준다.
실제 업무를 수행하면서 인수테스트의 3가지의 필요성을 느꼈습니다.
QA를 진행하기 전 QA팀에서 어떤 항목들을 테스트할 것인지에 대한 Test Case 리뷰를 거치는데 TC리뷰를 기준으로 개발자 테스트를 진행한다면 QA 이슈를 최소화할 수 있지 않을까?
새로운 프로젝트를 파악할 때 비즈니스 흐름이 어떻게 일어나는지, 사용자의 관점에서 어떤 API들이 호출되는지 파악하기 힘들다고 생각했습니다. 이때 인수테스트로 비즈니스 흐름을 파악할 수 있다면 하나의 좋은 지도가 될 수 있을 것 같습니다.
새로운 기능을 작성하거나 기존 기능을 수정했을 때는 기존 기능이 제대로 동작하는지 사이드 이펙트는 발생하지 않는지 확인해야 합니다. 이때 일일히 호출해 보는 작업은 지루하고 생산성이 떨어질 수 있습니다.
참고자료
https://jake-seo-dev.tistory.com/577
https://brunch.co.kr/@boorownie/5