학습 목표
- 지속적 통합의 필요성을 설명할 수 있다.
- 지속적 통합 개념이 나오게 된 배경을 이해할 수 있다.
- 지속적 통합의 장점을 설명할 수 있다.
- 지속적 통합의 원칙을 이해할 수 있다.
- 빌드/테스트의 개념을 이해할 수 있다.
- 테스트 주도 개발(TDD)에 대한 정의와 필요성을 설명할 수 있다.
- 테스트 주도 개발(TDD) 사이클을 설명할 수 있다.
- 테스트의 종류 (단위 테스트, 통합 테스트, E2E 테스트)를 설명할 수 있다.
- 릴리스의 개념을 이해할 수 있다.
- CI 도구(여기서는 GitHub Action)를 이용하여 지속적 통합이 이루어지는 과정을 직접 구현할 수 있다
- 다양한 CI 도구의 차이점을 이해할 수 있다.
- 코드와 환경 변수를 분리해야 하는 이유를 설명할 수 있다.
- 단위 테스트
- 검증이 필요한 코드에 대해 테스트 케이스를 작성하는 절차 혹은 프로세스
- 즉각적인 피드백이 나옴
- 하나의 메서드가 잘 작동함은 보장할 수 있지만 그들이 결합하는 시점에서도 잘 작동하는지에 대해서는 보장할 수 없음
- 통합 테스트
- 모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트
- 단위 테스트에서 찾지 못하는 통합 시 발생하는 버그 등을 찾을 수 있음
- 도구
- JavaScript: mocha, chai
- Java: JUnit
- E2E 테스트(End To End Test)
- 전체 시스템이 제대로 동작하는지 확인하기 위한 테스트
- 사용자의 입장에서 사용자가 사용하는 상황을 가정하고 시뮬레이션을 진행함
- 장점
- 실제 상황에서 발생할 수 있는 에러를 사전에 발견할 수 있음
- 단점
- 테스트 작성 시 들어가는 비용이 많음
- 수행 속도가 느림
- “실패했다”라는 결과만 있기 때문에 피드백의 질이 낮음
- 도구
- Cypress
- Nightwatch
- TestCafe
테스트 주도 개발
- Test Driven Development, TDD
- 테스트가 기능의 디자인을 주도하는 반복적인 개발 방법론
- 기존의 개발 과정
- 요구사항 분석
- 요구 사항을 토대로 디자인(설계)을 진행
- 설계에 맞추어 기능을 개발.
- 구현 완료 후 수동으로 기능을 테스트
- 원하는 대로 동작하지 않거나 문제가 발생하면 디버깅을 통해 원인을 파악하고 수정
- 3 - 4의 과정을 개발이 완료될 때까지 반복
- 테스트 주도 개발 과정
- 요구사항 분석
- 요구 사항을 토대로 디자인(설계)을 진행
- 설계를 기반으로 기능 테스트 진행
- 실패 시 다시 설계
- 테스트가 성공했다면 개발 진행
- 3 - 4의 과정을 개발이 완료될 때까지 반복
- 사이클
- 큰 단위의 문제를 작은 단위로 나누어 지속적인 피드백을 통해 목표를 개선해 나가는 방향으로 진행됨
- 장점
- 더욱 명확한 기능과 구조를 설계할 수 있음
- 재사용성이 고려된, 모듈화된 코드를 작성할 수 있음
- 설계 수정 시간과 디버깅 시간의 단축
- 단위 테스트 기반의 데스트 코드를 작성하기 때문에 추후 프로그램에 문제가 발생할 경우, 각각의 모듈별로 테스트를 진행하면서 문제 지점을 쉽게 찾아낼 수 있음
- 완성도 높은 설계
- 코드의 기능, 정의 등 구조적인 문제에 대하여 명확하게 접근할 수 있음
- 다양한 예외상황에 대해서도 고려하게 되므로 완성도 높은 설계로 이어짐
- 유지 보수의 용이성
- 기능 추가 등의 유지 보수를 해야 하는 상황이라면 기존 코드에 끼칙ㄹ 영향에 대해 생각해야 함
- TDD 이전의 개발 방식에선 단순한 기능이라도 수정되거나 추가되는 경우 많은 코드에 대하여 테스트를 진행해야 했음
- TDD를 진행한다면 변경 점에 따른 테스트를 진행해야 하는 상황에 대한 부담이 줄어들 수 있음
'Code States > TIL' 카테고리의 다른 글
[0421] 지속적 통합 - 릴리스 준비 (0) | 2023.04.21 |
---|---|
[0420] (페어) 지속적 통합 - 빌드 및 테스트 자동화 (0) | 2023.04.20 |
[0420] 지속적 통합 - 지속적 통합 (0) | 2023.04.20 |
[0419] (페어) AWS - 도메인 연결과 CDN 및 HTTPS 적용 (2) | 2023.04.19 |
[0418] (페어) AWS - 도메인 연결과 CDN 및 HTTPS 적용 (0) | 2023.04.18 |