본문 바로가기
읽은책

테스트 주도 개발 시작하기

by e-pd 2020. 7. 18.

 

 

http://www.yes24.com/Product/Goods/89145195

 

테스트 주도 개발 시작하기

TDD(Test-Driven Development)는 테스트부터 시작한다. 구현을 먼저 하고 나중에 테스트하는 것이 아니라 먼저 테스트를 하고 그다음에 구현한다. 구현 코드가 없는데 어떻게 테스트할 수 있을까? 여기��

www.yes24.com

 

 TDD 책으로 이 책을 고른 이유는 무엇보다 눈에 잘 들어와서이다. TDD는 테스트, 실패, 리팩토링의 과정이다. 이 사이클은 직접 경험해봐야

더 이해하기가 쉽다. 제일 좋은 것은 옆에서 보여주거나 혹은 영상으로 보는 것이라 생각한다.

 

 책을 이용하면 인쇄된 내용을 바탕으로 모든 과정을 재현해야하는데, 책에는 코드가 완성되어있어 재현하기가 어려운게 사실이다. 다른 TDD 책을 보았는데, 책에서 많은 내용을 보여주려고하니 텍스트가 작아지고 양도 방대했다. 이책의 경우 실제 코드에 비해 책의 분량을 많이 사용하기는 했지만 리팩토링을 하는 사이클을 볼 수 있어 좋았다. TDD를 시작하기 좋고 실무에서 마주하게 되는 이해하기 쉬운 예제로 시작하였다. 

 

다음은 책에서 소개한 테스트하기 쉬운 코드와 어려운 코드이다.

 

 테스트가 어려운 코드 

1. 하드코드된 경로

2. 의존대상을 직접 생성

3. 실행 시점에 따라 달라지는 코드

4. 역할이 섞여있는 코드

 

테스트 하기 좋은 코드

1. 하드 코딩된 상수를 생성자나 메서드 파라미터로 받기.

2. 의존대상 주입받기.

3. 시간이나 임의 값 생성 분리

 

좋은 테스트 유지보수를 하기 위한 원칙

1. 변수나 필드를 사용해서 기댓값 표현 하지않기

1
2
3
4
5
6
7
8
 
LocalDate localdat = LocalDate.of(2020,01,01);
 
String formattedString = localDate.format(formatter);
 
assertThat(formattedString).isEqualTo('2020-01-01');
 
 
cs

 

Expect부분을 연-월-일로 나누어서 검증하지않는다. 

 

2. 테스트에서 두 개 이상 검증하지 않기

 

3. 정확한 값으로 모의 객체 설정하지않기. Mockito의 any를 사용하자.

 

4. 중복제거

 

5. 데이터 공유 주의

 

6. 랜덤값 검증시 테스트할 수 있게 변경

 

7. 조건부 검증은 하지않는다. 

 

8. 필요없는 테스트는 제거한다.