오늘 읽은 범위
9장 단위 테스트
책에서 기억하고 싶은 내용을 써보세요.
- TDD 세가지 법칙 (p. 155)
- 첫째 규칙 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
- 둘째 규칙 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 셋째 규칙 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
- 테스트 코드는 실제 코드 못지 않게 깨끗하게 짜야한다. (p. 157)
- 가독성은 실제 코드보다 테스트 코드에 더더욱 중요하다. 명료성, 단순성, 풍부한 표현력이 필요하다. (p. 158)
- 테스트 하나에는 assert문을 최대한 줄여야 좋다. (p.165)
- FIRST
- FAST : 테스트는 빨라야한다.
- Independent : 각 테스트는 의존하면 안된다.
- Repeatable : 어떤 환경에서도 반복 가능해야 한다.
- Self-Validating : bool값으로 결과를 내야 한다.
- Timely : 적시에 작성해야한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.
- 테스트 코드의 중요성을 인식하고는 있는데, 실제로TDD나 테스트 코드를 짤 시간적 여유나 기회가 충분하지 않아서 경험이 많이 부족한 것이 사실이다. 마침 도서 구입비로 프론트엔드 테스트 코드 관련한 책을 샀으니, 이번 기회에 깊이 있게 공부해보고 싶다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- Build-Operate-Check 패턴
- Build : 테스트를 위한 객체를 준비한다.
- Operate : 준비한 객체를 이용해 동작을 수행한다.
- Check : 동작 결과가 기대한 대로 나왔는지 검증한다.
- Given-When-Then 패턴
- Given : 테스트의 초기 상태나 전제조건을 설명한다.
- When : 특정한 동작이나 이벤트가 발생했을 때를 기술한다.
- Then : 그 동작의 결과를 검증한다.
- Template Method 패턴 : 상위 클래스(추상 클랙스)가 알고리즘의 뼈대를 정의하고, 일부 단계는 하위 클래스가 구체적으로 구현하도록 하는 패턴. 🔽 Template Method 패턴 예시
abstract class DataProcessor {
// 알고리즘의 뼈대
public void process() {
readData();
processData();
writeData();
}
protected abstract void readData();
protected abstract void processData();
protected abstract void writeData();
}
class CSVDataProcessor extends DataProcessor {
@Override
protected void readData() { /* CSV 읽기 */ }
@Override
protected void processData() { /* 데이터 처리 */ }
@Override
protected void writeData() { /* CSV 쓰기 */ }
}최애 북틸
- https://leego.tistory.com/entry/%ED%81%B4%EB%A6%B0-%EC%BD%94%EB%93%9CClean-code-Day-9
- 소감이 내가 느낀 바와 같아서 공감이 갔다.
- https://nomadcoders.co/community/thread/9286
- 아마도 실무 경험이 있으신 분 같은데, 자신의 경험을 토대로 다른 의견을 제시하여 다른 관점으로도 생각해볼 수 있구나 생각이 들었다.
- https://effortguy.tistory.com/192
- 내용을 꼼꼼하게 잘 정리하였고 예시 코드도 함께 있어서 보기 좋았다.
