[인턴일지] Cypress를 도입해 E2E 테스팅을 구축하고, 쿠버네티스와의 이점을 분석한다.

osohyun0224·2024년 3월 3일
0

슬기로운 인턴생활

목록 보기
9/15
post-thumbnail

안녕하세요, 대학생 웹 개발 인턴 Garden입니다.

최근 사내 개인 프로젝트에서 cypress를 사용해 제 서비스에 e2e 테스팅을 구축하고 실제 테스트했던 경험이 있었습니다. 이번 시간에는 해당 툴을 사용하여 테스팅 할 시 쿠버네티스와의 연계과정도 함께 알아보고자 합니다.

Cypress를 사용하여 브라우저 간 테스트를 구현하는 방법에는 다양한 접근 방식이 있으며, 그 중 하나는 Docker를 사용하여 선택한 CI 플랫폼에서 Cypress 테스트의 자동 실행을 설정하는 방법이 있습니다.

Docker를 사용하면 브라우저 간 테스트 환경을 훨씬 쉽게 설정하고 유지 관리할 수 있습니다. 격리된 Docker 컨테이너의 다양한 브라우저를 포함하여 전체 테스트 스택을 캡슐화함으로써 컨테이너를 실행하는 서버에 관계없이 다양한 브라우저에서 테스트를 실행하기 위한 안정적이고 일관된 환경을 재현할 수 있다고 합니다.

Docker Compose를 사용하면 워크로드를 여러 컨테이너에 분산하여 테스트 인프라를 쉽게 확장할 수 있습니다. 따라서 서로 다른 브라우저에 대해 여러 컨테이너를 정의하고 하나의 명령 또는 하나의 구성 파일을 사용하여 동시에 실행할 수 있습니다. 다양한 브라우저에서 테스트를 병렬로 실행하면 전체 테스트 프로세스 속도가 크게 향상됩니다.

병렬적으로 테스팅이 가능

또한 제가 생각했을때 e2e 테스팅 도입을 위해서는 병렬적으로 테스팅 설정이 가능하다는 점이 가장 큰 이점이었습니다.
각 그룹에 대한 테스트 파일의 병렬 실행할 수 있는데 여기서 그룹은 테스트 중인 브라우저를 기반으로 하게 됩니다. 예를 들어, Cypress Cloud를 사용하면 테스트 전략에서 각 브라우저의 중요성에 따라 브라우저 간에 할당된 CI 리소스의 양을 차별화하여 다양한 병렬화 수준에서 각 브라우저를 실행할 수 있습니다 예를 들어 Chrome 내 테스트는 최대 7-8개의 시스템에서 조건부로 병렬로 실행되고, 이를 병렬적으로 처리해 CI 비용을 최소화할 수 있습니다.

Cypress로 프론트엔드 테스팅과 쿠버네티스의 상관성

사내 모든 환경이 쿠버네티스 상에서 관리되기 때문에 cypress가 쿠버네티스로 운영될 시에 상관성과 이점을 알아보았습니다.

1. 테스트 환경의 일관성

쿠버네티스를 사용하면 모든 개발자와 테스트 환경이 동일한 설정과 리소스를 사용하도록 할 수 있는 이점으로, Cypress로 E2E 테스트를 할 때, 개발자의 로컬 환경, CI/CD 파이프라인에서의 테스트 환경, 실제 프로덕션 환경이 일관되게 유지되어, 테스트의 신뢰성과 정확성을 높여줄 수 있는 이점이 있습니다.

2. 자동화된 테스트 배포

쿠버네티스와 CI/CD 파이프라인을 통합하면, 코드 변경사항이 있을 때마다 자동으로 Cypress 테스트를 실행하는 환경을 구성할 수 있기에 테스팅 작업을 자동화 할 수 있습니다.

3. 가용성과 안정성

쿠버네티스는 높은 가수용성 기능을 제공합니다. 테스트 환경에서 어떤 이슈가 발생하더라도 쿠버네티스는 자동으로 문제를 감지하고 복구하여 테스트 환경의 안정성을 유지해주고 빌드 과정에서 안전하게 테스팅을 진행합니다.

4. 사내 보안 유지

쿠버네티스는 테스트 환경에서도 이러한 보안 기능을 활용하여 테스트 데이터와 애플리케이션을 보호할 수 있습니다. 예를 들어, 쿠버네티스의 시크릿 관리 기능을 통해 API 키나 데이터베이스 접속 정보와 같은 민감한 정보를 안전하게 관리하기 때문에 테스팅 용 모든 파일을 세팅해줄 수 있습니다.

profile
Garden / Junior Frontend Developer

0개의 댓글