테스트 코드 개념
API를 개발하면서 swagger나 postman을 통해 개발 사항에 대한 테스트를 진행해 볼 수 있다. 하지만 이렇게 수동적인 테스트는 관리해야할 api가 늘어나고, 요구사항이 변경되게 될수록 커버하지 못하는 영역이 늘어나게 된다. 이를 위해 필요한게 테스트 코드이다.
테스트 코드를 통해 개발자는 빠른 피드백을 얻을 수 있으며, 테스트 케이스 수행을 자동화할 수 있다. 이에 따라 코드의 안정성이 높아져 소프트웨어 품질 유지에 도움이 되는 것이다.
테스트 코드 규칙
이러한 테스트 코드는 다음과 같은 규칙들을 지키며 작성할수록 좋은 테스트 코드라 불려진다
- FIRST 원칙
- Fast : 빠르게 실행
- Isolated : 테스트 코드 성공 유무가 다른 테스트에 영향을 끼치지 않음
- Repeatable : 동일한 환경에서 여러번 돌려도 같은 결과
- Self-Validating : 성공 또는 실패를 명확히 해야함
- Timely : 테스트하려는 코드를 구현하기 이전에 작성
- 단일 검증
- 각 테스트는 하나의 개념만을 테스트 해야 함
- 단일 모듈을 독립적으로 검증하고 의존성을 격리한다.
- 테스트의 이름과 설명을 명확하게 작성한다.
위에서 작성했듯이 테스트 코드는 보통 테스트하고자 하는 코드를 작성하기 전에 작성하는 것이 좋다. 이러한 방식을 TDD라고 하는데 이 때 사용되는 핵심 개발 프로세스는 RED-GREEN-REFACTOR 방식이다.
- RED - 요구 사항에 대한 테스트 작성 (현재 실질코드가 없기 때문에 테스트는 당연히 실패)
- GREEN - 테스트를 성공시키기 위한 코드 작성
- REFACTOR - 작성한 테스트 코드를 통과하는 것을 확인해가며 코드 개선
해당 사이클을 반복하면서 테스트 주도적인 개발을 해나가는 것이 이상적인 개발 방식이다.
테스트 케이스를 작성할 땐 다음과 같이 구분해서 작성할 수 있다.
- 해피 케이스 : 시스템의 정상적인 시나리오에서의 동작 검증
- 예외 케이스 : 시스템의 예외 상황에서의 동작 검증
- 경계값 분석 : 데이터 범위의 경계값을 중심으로 케이스를 나눈 뒤, 모든 경계에서의 동작 검증
이러한 테스트 코드를 작성할 땐 given(무언가가 주어짐) → when(어떤 상황이 발생함) → then(이런 로직을 실행함) 순서로 짜는게 best이자 FM이라고 한다.
테스트 종류
- 단위 테스트 (Unit Test)
- 작은 코드 단위(모듈, 함수, 클래스 등)를 독립적으로 검증하는 테스트
- 주로 프로그래머가 작성하며, 코드의 동작을 검증한다.
- 일반적인 테스트 케이스 작성이 의미하는것이 단위 테스트이다.
- 통합 테스트 (Integration Test)
- 모듈 간의 연계된 동작을 확인하는 테스트
- 각각의 모듈이 제대로 상호작용하는지, 시스템의 구성 요소들이 올바르게 통합되어 동작하는지를 검증한다.
- 부하 테스트 (Stress Test)
- 소프트웨어가 예상되는 최대 부하를 감당할 수 있는지 검증하는 테스트
- 과도한 부하를 가한 뒤 응답시간, 처리량, 자원 사용량 등을 측정하고 성능 문제를 파악 및 최적화한다.
'Dev Tool > Spring boot' 카테고리의 다른 글
[Spring] 장바구니 기능 구현 (0) | 2025.01.25 |
---|---|
[Spring] 로또 API 단위 테스트 코드 작성 (0) | 2025.01.23 |
[Spring] 로또 API 구현(2) & 예외 처리(@validate) (0) | 2025.01.22 |
[Spring] Swagger 연동 (1) | 2025.01.22 |
[Spring] 엘라스틱 서치 연동 & API 구현 (0) | 2025.01.22 |