인수테스트 자동화
인수테스트(UAT; User Acceptance Test)
- 요구사항대로 기능이 구현되었는지를 확인하는 과정
: 전체 시스템을 사용자 관점에서 시험하는 블랙박스 테스트를 포함
- 이것을 자동화 하는 것은 쉽지 않은 일이지만 CI/CD 의 구축을 위해 반드시 필요
: 전통적으로는 QA 담당자나 사용자의 수작업에 의존해 왔음
- 사용자 인수 테스트를 자동화 하는 것이 어려운 요인들
: 사용자 참여, 의존성 통합, 스테이징 환경, 애플리케이션 동일성, 틸리스 준비
아티팩트 리포지토리
: 버전 관리, 접근 제어 등의 기능을 가지는 소프트웨어 개발 산출물(예:패키지) 을 발행(푸시) 하거나 인출(풀) 할 수 있는 저장소 및 관리 기법 필요
: 파이프라인 모든 단계에서 동일한 바이너리가 사용되는 것을 보장함으로써 지속적 인도 프로세스에서 매우 중요한 역할을 함
도커 레지스트리
: 컨테이너화된 소프트웨어의 산출물인 도커 이미지를 관리할 수 있는 리포지토리
: 클라우드 방식 레지스트리 => Docker Hub, 상용 클라우드에서 제공하는 서비스
: 자체 호스팅 방식 레지스트리 => 직접 관리해야 하는 부담이 있고 접근 제어 및 인증서 설정 등의 번거로운 작업이 수반됨
젠킨스 파이프라인에서의 인수 테스트
1. 개발자가 변경한 코드를 깃허브에 푸시
2. 젠킨스가 변경을 감지하고 코드를 인출해 빌드를 시작, 코드를 점검(단위테스트 수행)
3. 젠킨스가 빌드를 완료하여 도커 이미지를 생성
4. 젠킨스가 생성한 이미지를 레지스트리로 푸시
5. 젠킨스가 스테이징 환경을 구성하고 도커 컨테이너 실행
6. 스테이징 환경의 도커 호스트가 이미지를 가져다가(풀) 컨테이너를 실행
7. 젠킨스가 스테이징 환경에서 실행 중인 애플리케이션을 대상으로 인수 테스트를 실행
사용자 - 대면 테스트
: REST-API 의 경우에는 curl 에 의한 테스트로도 어느 정도 블랙박스 테스트가 가능
: 그러나 일반적으로 이런 테스트에 의존할 수 없음 ( 읽고 이해하기가 어려움, 유지 보수에 불리함 )
: 사용자와 함께 작성할 수 있고 사용자가 이해할 수 있는 테스트 작성 방법이 필요
BDD (Behavior-Driven Development)
: 사용자가 인수 기준을 제시
: 위 인수 기준으로부터 개발자는 픽스처 또는 스텝 정의 라고 부르는 사용자 친화적인 DSL 와 프로그래밍 언어를 통합해서 테스트를 작성
: 이를 도와주는 도구들 => Cucumber, Selenium
🌟 배운 점
인수 테스트는 소프트웨어가 실제 사용자가 원하는 대로 잘 동작하는지 확인하는 마지막 점검 단계이다. 인수 테스트는 실제 사용자처럼 소프트웨어를 사용해보면서 테스트함으로써 실제 사용 환경을 검증하기 때문에 중요하다. 이를 자동화하면 실수 없이 정확하게 테스트가 가능하고, 놓치기 쉬운 부분까지 꼼꼼하게 확인할 수 있기 때문에 품질이 향상되고, 문제점을 빨리 발견하고 수정이 가능해 개발자와 사용자 사이의 소통이 개선된다. 오늘 학습을 통해 인수 테스트가 어떤 것이고, 왜 중요한지에 대해 배울 수 있었다.
'데브코스' 카테고리의 다른 글
오픈 소스(open source) (2) | 2024.12.09 |
---|---|
IaC 와 테라폼 (0) | 2024.12.06 |
젠킨스(Jenkins) (0) | 2024.12.06 |
쿠버네티스(Kubernetes) (4) | 2024.12.03 |
웹 개발 파이프라인 구축 (0) | 2024.12.02 |