Skip to main content

김주엽

1. 📌 핵심 개념 정리

✅ 요약하기

  1. TDD 법칙 세 가지
    • 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
    • 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
    • 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

  1. 깨끗한 테스트 코드 유지하기
    • 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸릴 수 있다.
    • 지저분한 테스트 코드는 개발자 사이에서 점점 큰 불만이 생기게 된다.
    • 테스트 케이스가 없으면 결함율이 높아질 위험이 있다.
    • 실제 코드 못지 않게 테스트 코드는 매우 중요하다.
    • 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목은 단위 테스트다.

  1. 깨끗한 테스트 코드
    • 깨끗한 테스트 코드를 작성하는데 가장 중요한 것은 가독성이다.
    • 읽는 사람을 고려해서 테스트 코드를 작성하라.
    • Build - Operate - Check 순서로 테스트를 작성하면 도움이 된다.
      1. 테스트 자료를 생성한다.
      2. 테스트 자료를 조작한다.
      3. 조작한 결과가 올바른지 확인한다.
    • 테스트 코드는 반드시 필요한 자료 유형과 메서드만 사용해야 한다.

  1. 테스트당 assert 하나
    • 최대한 하나의 테스트에는 하나의 assert문을 사용하도록 한다.
    • 만약 중복되는 코드가 많아진다면 Template Method 패턴을 사용해서 중복을 줄여라.
    • 테스트당 개념 하나
      • 테스트 하나에 하나의 개념만 테스트하도록 한다.
      • 개념 여러 개를 연속으로 테스트하는 긴 메서드는 피한다.

  1. F.I.R.S.T
    • 빠르게(Fast): 테스트는 빨라야 한다.
      • 테스트가 빨라야 자주 테스트를 돌리고 문제점을 찾아내기 쉽다.
    • 독립적으로(Independent): 각 테스트는 서로 의존하면 안 된다.
      • 테스트가 의존하면 하나가 실패했을 때 나머지도 실패하므로 결함을 찾아내기 어렵다.
    • 반복가능하게(Repeatable): 테스트는 어떤 환경에서도 반복 가능해야 한다.
      • 실제 환경, QA 환경, 집에 가는 중에 사용하는 노트북 환경 등 어느 곳에서든 테스트가 가능해야 한다.
    • 자가검증하는(Self-Validating): 테스트는 bool값으로 결과를 내야 한다.
      • 통과 여부를 알기 위해 로그 파일을 읽게 만들어서는 안 된다.
    • 적시에(Timely): 테스트는 적시에 작성해야 한다.
      • 실제 코드를 구현한 이후에 테스트 코드를 만들면 실제 코드가 테스트하기 어렵다는 것을 발견할 수 있다.

2. 🤔 이해가 어려운 부분

🔍 질문하기

책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.

  1. TDD 법칙 세 가지
    • 어려웠던 부분
      테스트를 작성하기 전에는 실제 코드를 작성하지 않는 방식을 이해하기 어려웠다.
    • 궁금한 점
      회사의 백엔드 개발을 혼자 맡거나 고객이 빠른 프로토타입 결과물을 요구하는 경우에는
      TDD 법칙을 지키기가 어렵다고 생각하는데 어떤 경우에 TDD 법칙을 적용하는 것이 효과적일지 궁금하다.

3. 📚 참고 사항

📢 논의하기

관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.

  1. 관련 자료 공유

  1. 논의하고 싶은 주제
    • 주제
      TDD 개발 방식을 언제 사용하는 것이 효과적일까?
    • 설명
      TDD 개발 방식은 러닝 커브, 생산성 저하, 테스트 코드 관리 등의 단점이 존재한다.
      그렇다면 언제 TDD 개발 방식을 사용하는 것이 효과적일지 궁금하다.