Backend
home
📝

10. 테스트는 [] 다.

생성일
2025/02/17 13:00
태그

테스트는 문서다.

프로덕션 기능을 설명하는 테스트 코드 문서
다양한 테스트 케이스를 통해 프로덕션 코드를 이해하는 시각과 관점을 보완
어느 한 사람이 과거에 경험했던 고민의 결과물을 팀 차원으로 승격시켜서, 모두의 자산으로 공유할 수 있음

DisplayName을 섬세하게

@DisplayName("음료 1개 추가 테스트") @Test public void add() { CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()); assertThat(cafeKiosk.getBeverages()).hasSize(1); assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("아메리카노"); } // 처음 보는 입장에서는 자세하게 적어줘야 이해가 잘 됨 @DisplayName("음료 1개를 추가하면 주문 목록에 담긴다.") @Test public void add() { CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()); assertThat(cafeKiosk.getBeverages()).hasSize(1); assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("아메리카노"); }
Java
복사
DisplayName을 IDE에서 확인할 수 있음
정리 1
음료 1개 추가 테스트 → 음료를 1개 추가할 수 있다.
명사의 나열보다 문장으로
A이면 B이다.
A이면 B가 아니고 C다.
“~테스트” 표현을 지양하는 것이 좋다.
정리 2
음료를 1개 추가할 수 있다. → 음료를 1개 추가하면 주문 목록에 담긴다.
테스트 행위에 대한 결과까지 기술한다.
정리 3
특정 시간 이전에 주문을 생성하면 실패한다. → 영업 시작 시간 이전에는 주문을 생성할 수 없다.
도메인 용어를 사용하여 한층 추상화된 내용을 담는다.
메서드 자체의 관점보다는 도메인 정책 관점으로 DisplayName을 작성하는 것이 좋다.
테스트의 현상을 중점으로 기술하지 말자.

BDD 스타일로 작성하기

BDD, Behavior Driven Development
TDD에서 파생된 개발 방법이다.
함수 단위의 테스트에 집중하기보다, 시나리오에 기반한 테스트케이스(TC) 자체에 집중하여 테스트한다.
개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 추상화 수준(레벨)을 권장한다.
Given / When / Then
Given : 시나리오 진행에 필요한 모든 준비 과정 (객체, 값, 상태 등)
When : 시나리오 행동 진행
Then : 시나리오 진행에 대한 결과 명시, 검증
어떤 환경에서(Given), 어떤 행동을 진행했을 때(When), 어떤 상태 변화가 일어난다(Then).
DisplayName에 명확하게 작성할 수 있다.