UnitTest
- 작은 코드 단위를 독립적으로 검증하는 테스트
- 클래스 , 메서드
- 검증속도가 빠르고 안정적이다.
Junit 5
- AssertJ
- 테스트 라이브러리
- 풍부한 API, 메서드 체이닝 지원.
TEST CASE
- Test 세분화 하기
- Happy Case
- 요구사항에 맞는 케이스
- 예외 케이스
- 요구사항에 들어나지않은 암묵적인 요구사항이 있었을 때
- 주문 갯수를 -1 로 입력한다거나 0개라거나 등등.. 예외적인 케이스
- 요구사항에 들어나지않은 암묵적인 요구사항이 있었을 때
- Happy Case
경계값 테스트가 중요하다.
- 범위 (이상,이하, 초과,미만) 구간, 날짜 등…
테스트하기 어려운 영역을 분리하기
테스트하기 어려운 영역을 외부로 분리해
테스트 작성시 외부값을 받아 테스트 진행을 한다.
- ex) 주문 기능에 정해진 영업시간에만 주문이 가능는 서비스가 있을 때
- 주문시간을 매개변수(외부값)로 받아 테스트를 진행하여 시간에 구속받지않고 테스트를 진행하도록한다.
테스트 하기 어려운 영역을 외부로 더 멀리 분리할수록 테스트 가능한 코드는 많아진다.
테스트하기 어려운 영역
- 관측할 때 마다 다른값에 의존하는 코드
- 현재 날짜/시간, 랜덤값, 전역 변수/ 함수, 사용자 입력 등등..
- 외부세계에 영향을 주는 코드
- 표준 출력, 메시지 발송, 데이터베이스 기록하기 등등….
순수함수 :
- 같은 입력에는 항상 같은 결과
- 외부 세상과 단절된 형태
- 테스트하기 쉬운 코드
KEYWORD
- 단위 테스트
- 수동 테스트, 자동화 테스트
- 해피 케이스, 예외 케이스
- 경계값 테스트
- 테스트하기 쉬운 영역 / 테스트하기 어려운 영역 (순수 함수)
lombok :
@Data , @Setter , @AllArgsConstructor 지양
'공부 > Test Code' 카테고리의 다른 글
TDD (0) | 2024.01.11 |
---|---|
TEST = [] (0) | 2024.01.11 |
Spring & JPA 기반 테스트 (0) | 2024.01.11 |
Mock (0) | 2024.01.11 |
더 나은 테스트 작성하기 (0) | 2024.01.11 |