오늘 읽은 범위

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 쓰기 */ }
}

최애 북틸