테스트 코드에 대해 알아보자
Testing 이란?
Testing 이란?
Software Test 제품(함수, 특정한 기능, UI, 성능, API 스펙)이 예상하는대로 동작하는지 확인
- 자동화 속도 쉽게
- 작성 높은 커버리지
- 기능이 정상 동작
- 요구 사항 이해 / 요구사항 만족
- 이슈에 대해 예측
- 버그를 빠르게 발견
- 손쉬운 유지보수
- 코드간 의존성을 낮춤
- 좋은 문서화
테스트 코드 피라미드
- E2E Test - UI테스트, 사용자 테스트
- Integration Test 통합테스트 - 모듈들, 클래스들
- Unit Test 단위테스트 - 함수, 모듈, 클래스
TDD란?
Test-driven development 테스트 주도 개발 - 개발을 해내가는 방식 요구사항 분석 및 이해 -> 설계할때 더 잘 할 수있음 모든 요구사항에 대해 점검 사용자 입장에서 코드를 작성
테스트 작성 - > 실패 -> 테스트 통과할정도만 작성 성공하면 리팩토링함 (코드정리) 그래도 성공하면 리팩토링
TDD를 하는 경우
- 요구사항이 명확할 때
- 비지니스 로직
- 협업시 명세서 역할
- 설계에 대한 고민이 필요할때
UI컴포넌트를 작성할 때는 TDD를 하지않음
CI/CD란?
어플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 배포하는것
- CI : Continuous Intergration 지속적인 통합
- CD : Continuous Delivery 지속 적인 제공
근데 Continuous Deployment 지속적인 배포로 사용하는 경우도 있음
CI : Continuous Intergration 지속적인 통합 버그 고치거나 새로 만든 기능 주기적으로 빌드되고 테스트돼서 메인 Repository에 merge 되는 것
-
- 코드 변경사항을 주기적으로 빈번하게 머지해야한다.
-
- 통합을 위한 단계(빌드, 테스트, 머지)의 자동화
장점 개발 생산성 향상, 버그 수정용이, 문제점을 빠르게 발견, 코드의 퀄리티 향상
CI 쪽에서 되면… 준비되면 배포하는 걸 CD 수동적으로 배포하면 Continuous Delivery 배포도 자동화면 Continuous Deployment
CI/CD는 테스트 코드가 있어야한다!