Search

TDD

카테고리
백엔드 🧬
Date
Tags
2 more properties
TDD에 대한 자세한 내용과 실습

TDD

로직을 작성하기 전에 테스트를 먼저 작성하고 이를 통과시키는 로직을 작성하는 방식
RED - GREEN - REFACTOR - RED
1.
RED
일단 실패하는 테스트케이스를 작성한다.
구현부가 없기 때문에 테스트가 실패한다.
2.
GRREN
빠른 시간 내에 테스트를 통과한다.
테스트를 통화할 수 있는 최소한의 코딩만 함 막코딩 해도된다.
3.
REFACTOR
구현 코드를 개선하되 테스트 통과를 유지한다.

코드로 예시를 들어보자

1.
실패하는 테스트를 작성한다. (RED)
@Test void calculateTotalPrice() { CafeKiosk cafeKiosk = new CafeKiosk(); Americano americano = new Americano(); Latte latte = new Latte(); cafeKiosk.add(americano); cafeKiosk.add(latte); int total = cafeKiosk.calculateTotalPrice(); assertThat(total).isEqualTo(8500); }
Java
복사
키오스크 클래스에서 calculateTotalPrice 메서드의 시그니처만 작성한다.
최소한의 컴파일을 위해서
그러면 당연히 테스트를 실패한다.
2.
테스트를 통과 시키는 코드 작성 (GREEN)
public int calculateTotalPrice() { return 8500; }
Java
복사
총 가격이 8500원인지 검증하고 있으니 가장 단순한 방법으로 초록불을 확인한다.
3.
코드를 리팩토링한다. (REFACTOR)
public int calculateTotalPrice() { int totalPrice = 0; for (Beverage beverage : berverages) { totalPrice += beverage.getPrice(); } return 8500; }
Java
복사

선 기능 구현 후 테스트의 단점

1.
테스트 자체의 누락 가능성이 있다.
2.
특정 테스트 케이스만 검증할 가능성이 있다.
특히 해피 케이스만 작성하는 경우가 많다.
3.
잘못된 구현을 다소 늦게 발견할 가능성이 있다
.

선 테스트 후 기능 구현의 장점

1.
복잡도가 낮은, 테스트 가능한 코드로 구현할 수 있게 한다.
유연하며 유지보수가 쉬운
2.
쉽게 발견하기 어려운 엣지 케이스를 놓치지 않게 해준다.
3.
구현에 대한 빠른 피드백을 받을 수 있다.
4.
과감한 리팩토링이 가능해진다.
짜여진 테스트코드가 코드의 동작여부를 보장하기 때문에