
Test Driven Development프로그래밍/스프링2024. 6. 25. 00:49
Table of Contents
728x90
728x90
서론
Test Driven Development 란?
- 구현먼저 하는 것이 아니라 테스트를 먼저하고 기능을 구현하는 개발 방법론
1) 실패하는 테스트 작성
2) 테스트 통과 최소한의 코딩 : 통과하기 위해 막 짜도 괜찮 일단 통과만 하도록 짜라
3) 구현 코드 개선 , 테스트 통과 유지 : 구현 코드를 개선하면서 품질 향상
본문
1단계 - 빨간불 보기
// 컴파일 에러 방지용 기능 구현
public int calculateTotalPrice(){
return 0;
}
// 빨간색 불 들어오는 테스트코드
@Test
void calculateTotalPrice(){
CafeKiosk cafeKiosk = new CafeKiosk();
Americano americano = new Americano();
Latte latte = new Latte();
cafeKiosk.add(americano);
cafeKiosk.add(latte);
int totalPrice = cafeKiosk.calculateTotalPrice();
assertThat(totalPrice).isEqualTo(8500);
}
2단계 - 최대한 빠르게 초록불 만들기
public int calculateTotalPrice(){
return 8500;
}
3단계 - 리펙토링
public int calculateTotalPrice(){
int totalPrice = 0 ;
for(Beverage beverage : beverages){
totalPrice += beverage.getPrice();
}
return totalPrice;
}
요렇게 한 사이클임
더 과감하게 구현부 다 바꿀 수도 있음
public int calculateTotalPrice(){
return beverages.stream()
.mapToInt(Beverage::getPrice)
.sum();
}
이렇게 스트림으로 구현부 전체 다 바꿔도 테스트코드에서 정상 뜨는 걸 확인할 수 있으니 과감하게 변경하는 것도 손쉽게 할 수 있음
TDD의 핵심 가치 - 피드백
선 기능 구현 후 테스트 작성의 문제점
- 테스트 자체 누락 가능성
- 특정 케이스 ( 해피 케이스 )만 검증할 가능성
- 잘못된 구현을 다소 늦게 발견할 가능성
선 테스트 작성 후 기능 구현
- 복잡도가 낮은 ( 유연하고 유지보수가 쉬운 )테스트 가능한 코드로 구현할 수 있게 해준다
- 쉽게 발견하기 어려운 엣지 케이스를 발견할 수 있음
- 구현에 대한 빠른 피드백 받을 수 있음 : 녹불 , 빨간불
- 과감한 리팩토링이 가능해짐 - 바로 테스트가 보장해주니까
TDD란 클라이언트 관점에서의 피드백을 주는 Test Driven
참고
728x90
728x90
'프로그래밍 > 스프링' 카테고리의 다른 글
테스트는 []다 (0) | 2024.06.29 |
---|---|
단위 테스트 (0) | 2024.06.25 |
테스트는 왜 필요한가? (0) | 2024.06.24 |
테이블 변경 시 수정해야할 것들 (0) | 2024.03.01 |
단위테스트와 Mockito (0) | 2024.02.18 |
@스루나루 :: 스루나루
하고 싶은 걸 하고 되고 싶은 사람이 되자!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!