Home [Clean code] Ch09. Unit Tests
Post
Cancel

[Clean code] Ch09. Unit Tests

Ch09. Unit Tests

테스트 코드가 중요하다고 듣고 가끔 생각하기만 했지 이렇게 강조되는 부분일 줄은 몰랐다.

TDD에 대해서 부정적으로 보는 사람들도 있어서 그렇구나 하고 생각했었는데 클린코드의 철학에서는 TDD가 필수인 것 처럼 보인다!

TDD 법칙

  1. 실패하는 테스트를 작성할 때까지 코드 작성 X
  2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 테스트 작성
  3. 현재 실패하는 테스트를 통과할 정도만으로 실제 코드 작성

→ 개발 테스트 주기가 30초 정도 대애박

테스트 코드는 실제 코드 못지 않게 중요함!

  • 실제 코드가 진화하면 테스트 코드도 변화해야한다.
  • 테스트 코드를 깨끗하게 유지하지 않으면 결국을 잃어버림
  • 테스트 코드를 잘 짜두면 변경이 쉬워지고 변화를 통해 발생하는 버그에 대한 공포가 사라짐
  • 가독성, 가독성, 가독성! 이 중요함

Build- Operate- Check 패턴

  1. 테스트 자료 만들기
  2. 테스트 자료 조작
  3. 조작한 결과가 올바른지 확인

좋은 테스트 규칙

  • 개념 당 assert 문 수를 최소로 줄여라
    • 무조건 1개일 때는 중복 코드가 많아지고, 부모 클래스 적용으로 해결할 수 있긴 하지만,, 굳이 1개를 고집할 필요는 없음. 하지만 최소로 줄이려고 노력은 해야함!
  • 테스트 함수 하나는 개념 하나만 테스트하라

Fast, Independent, Repeatable, Self-Validating, Timely

  • 실제 코드 구현 직전에, bool(성공, 실패) 결과를 내며 어떠한 환경에서도 반복 가능 해야 하고 빠르고 의존성이 없이 작성해야함!

TDD 매우 중요! 나중에 다시 깊게 공부해볼 필요 있음!

근데 왜 애자일에서 TDD를 쓸까?

→ 추상적인 레벨에서의 TDD의 핵심 개념

  • 결정과 피드백 사이의 갭에 대한 인식, → 결정과 피드백 사이의 갭을 조절하기 위한 테크닉
  • 즉, 애자일의 철학을 도입한 프로그래밍 기법이 TDD아닐까?
  • 만약 어떤 부분에 대한 코딩을 여러번 해봤고, 결과를 예측할 수 있다면 TDD를 하지 않아도 됨!
  • 처음하는 주제, 불확실성이 있거나 요구조건이 바뀔 수 있을 때! TDD를 진행함
    • 즉, 애자일이 적용되는 플젝에는 TDD가 적합할 가능성이 매우 농후!
This post is licensed under CC BY 4.0 by the author.