Bitbucket Pipelines를 사용한 통합 테스트 자습서
Sten Pittet
기고 작가
파이프라인의 개별 Docker 컨테이너에서 여러 서비스를 실행하여 Bitbucket Pipelines를 통해 통합 테스트를 실행하는 방법을 알아보세요.
테스트는 지속적 통합 및 지속적 제공의 중요한 부분입니다. 지속적 배포를 실행하는 경우 변경 사항이 고객에게 릴리스되기 전에 버그에 대한 마지막 방어선이 됩니다. 개별 메서드와 클래스의 유효성을 검사하는 단위 테스트는 문제를 예방하는 데 좋은 시작 단계이지만, 애플리케이션에서 사용하는 여러 모듈(애플리케이션 서버, 데이터베이스, 캐시)이 서로 올바르게 상호 작용하는지 확인하는 통합 테스트도 실행해야 합니다. 이 자습서에서는 파이프라인의 개별 Docker 컨테이너에서 여러 서비스를 실행하여 Bitbucket Pipelines를 통해 통합 테스트를 실행하는 방법을 알아보겠습니다.
시간
30분
대상 그룹
지속적 통합 및/또는 Bitbucket Pipelines를 처음 사용하는 사용자
필수 조건
- Bitbucket 계정
-
애플리케이션 실행을 위한 Node v4.6 이상
-
로컬 컴퓨터에서 MongoDB를 실행하기 위한 Docker 커뮤니티 에디션 v17.03 이상
- bash 명령을 실행하기 위한 터미널
-
리포지토리를 관리하고 Bitbucket Cloud로 다시 푸시하기 위한 Git
1단계: 로컬에서 샘플 애플리케이션 실행
여기서는 홈페이지에 메시지를 표시하고 데이터베이스에 대한 방문을 로그하는 기본 Node.js 애플리케이션을 사용하겠습니다. Bitbucket Pipelines 구성에 집중하려면 터미널에서 애플리케이션을 복제하면 됩니다.
git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.git
이제 로컬 리포지토리로 이동하여 npm install 을 실행하여 애플리케이션에 필요한 종속성을 설치합니다.
cd bitbucket-pipelines-services-tutorial
npm install
애플리케이션을 실행하기 전에 새 MongoDB 인스턴스를 시작해야 합니다. Docker를 사용하면 터미널에서 손쉽게 할 수 있는 작업입니다.
docker run --name mongodb -d -p 27017:27017 mongo
그런 다음 애플리케이션을 시작하고 http://localhost:3000으로 이동하여 실제로 작동하는 것을 확인하세요.
npm start
http://localhost:3000/visits으로 이동하여 방문이 데이터베이스에 제대로 로그되었는지 확인할 수 있습니다.
마지막으로 npm test 명령을 통해 로컬에서 테스트가 성공적으로 완료되었는지 확인하겠습니다. 명령을 실행하면 두 가지 테스트가 완료될 것입니다.
npm test
샘플 애플리케이션은 서로 다른 두 개의 테스트를 실행합니다.
- 한 테스트는 애플리케이션이 홈페이지에 Hello World를 표시하는지 확인합니다.
- 다른 테스트는 누군가 홈페이지에 액세스할 때마다 새 방문이 데이터베이스에 로그되는지 확인합니다.
첫 번째 테스트는 데이터베이스가 중단된 경우에도 통과하지만 두 번째 테스트는 웹 애플리케이션이 데이터베이스 서버와 제대로 상호 작용하는지 확인하는 통합 테스트입니다. 애플리케이션의 비즈니스 요구 사항 중 일부를 확인하기 때문에 기능 테스트라고도 할 수 있습니다. 가이드에서 다양한 유형의 테스트에 대해 자세히 알아보세요.
이제 Bitbucket Pipelines를 사용하여 애플리케이션 테스트를 자동화하고 데이터베이스에서 성공적으로 작동하도록 구성하는 방법을 살펴보겠습니다.
2단계: Bitbucket Pipelines를 사용하여 자동으로 테스트 실행
먼저 Bitbucket 계정에 새 리포지토리를 만들고 원본의 원격 URL이 Bitbucket 리포지토리를 가리키도록 업데이트합니다.
git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainline
리포지토리의 Pipelines 섹션으로 이동하여 Bitbucket Pipelines를 사용 설정합니다.
다음 화면에서 기본 Javascript 템플릿을 사용할 수 있습니다. 종속성을 설치하고 테스트 스위트를 실행하는 데 필요한 npm install 및 npm test 명령이 이미 있습니다.
bitbucket-pipelines.yml 파일은 다음과 비슷할 것입니다.
image: node:16
pipelines:
default:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
- npm test
데이터베이스 서비스가 누락되었지만 나중에 추가할 것입니다.
파일을 커밋하면 리포지토리의 파이프라인 섹션으로 리디렉션되며 진행 중인 첫 번째 파이프라인을 확인할 수 있습니다. 데이터베이스를 연결하지 않고는 두 번째 테스트를 적절하게 실행할 수 없기 때문에 파이프라인이 실패합니다. 파이프라인을 클릭하면 아래와 비슷한 화면이 나타나며 1개의 테스트가 통과하고 1개의 테스트가 실패했다고 표시됩니다.
다음 섹션에서는 파이프라인 구성에 새 서비스 정의를 추가하여 이 문제를 해결하겠습니다.
3단계: 데이터베이스에 대한 서비스 정의 추가
Bitbucket Pipelines를 사용하면 파이프라인에서 실행되는 기본 애플리케이션에 더해 최대 3개의 추가 Docker 컨테이너를 실행할 수 있습니다. 이러한 컨테이너를 사용하여 데이터 저장소, 분석 도구 또는 애플리케이션이 파이프라인을 완료하는 데 필요할 수 있는 타사 서비스와 같은 서비스를 실행할 수 있습니다. 이 경우에서는 MongoDB를 실행하는 데 별도의 서비스 컨테이너를 사용합니다.
리포지토리의 소스 섹션으로 이동하여 파일 목록을 확인합니다.
bitbucket-pipelines.yml 구성 파일을 클릭하여 액세스합니다. 오른쪽 상단 모서리에 있는 편집 버튼을 사용하면 파일을 편집하고 브라우저에서 바로 커밋할 수 있습니다.
구성 파일의 맨 아래에는 데이터베이스에 대한 서비스 정의를 추가해야 합니다.
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
definitions:
services:
database:
image: mongo
MongoDB의 경우 이미지 정의에 추가 설정이 필요하지 않지만 데이터 저장소 및 서비스에 대한 일부 Docker 이미지의 경우 몇 가지 환경 변수를 지정해야 할 수 있습니다. 데이터베이스 예시의 목록은 Bitbucket Pipelines 설명서에서 찾을 수 있습니다.
파일을 커밋하기 전에, 테스트를 실행하는 단계에 새 서비스를 추가해야 합니다. 최종 파이프라인 구성은 아래 코드와 비슷할 것입니다.
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- database
definitions:
services:
database:
image: mongo
파일을 커밋한 후 파이프라인 섹션으로 이동하여 진행 중인 파이프라인을 확인합니다. 보통 성공적으로 완료됩니다.
로그 패널에서 데이터베이스 탭을 클릭하여 MongoDB 컨테이너의 로그를 볼 수 있습니다.
여기까지입니다! 파이프라인에 서비스를 추가하여 통합 테스트를 실행하는 방법을 알아보았습니다. 서비스를 사용하는 방법에 대해 자세히 알아보려면 설명서를 읽어보세요.
이 문서 공유
다음 주제
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.