[클린코드] 9장 단위 테스트

OhJuYeong·2025년 4월 14일

Clean Code

목록 보기
9/15
post-thumbnail

애자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 많아졌다.

📌 TDD 법칙 세가지

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

세가지 규칙을 따르면 개발과 테스트가 대락 30초 주기로 묶인다.

방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다.

📌 깨끗한 테스트 코드 유지하기

테스트 코드는 실제 코드 못지 않게 중요하다. 실제 코드 못지 않게 깨끗하게 짜야한다.

테스트는 유연성, 유지보수성, 재사용성을 제공한다.

테스트 코드를 깨끗하게 유지 하니 않으면 결국 잃어버린다. 그리고 테스트 케이스가 없으면 실제 코드를 유연하게 만드는 버팀목도 사라진다.

코드에 유연성 , 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트이다.

📌 깨끗한 테스트 코드

깨끗한 테스트 코드를 만들려면 세가지가 필요하다

가독성, 가독성, 가독성

가독성은 실제 코드보다 테스트 코드에 더더욱 중요하다.

도메인에 특화된 테스트 언어

테스트를 구현하는 당사자와 나중에 테스트를 읽어볼 독자를 도와주는 테스트언어

이중 표준

테스트 API 코드에 적용하는 표준은 실제 코드에 적용하는 표준과 확실히 다르다.

단순하고 간결하고 표현력이 풍부해야하지만 실제 코드만큼 효율적일 필요는 없다.

📌 테스트당 assert 하나

assert 문이 단 하나인 함수는 결론이 하나라서 코드를 이해하기 쉽고 빠르다.

테스트당 개념하나

테스트 함수마다 한 개념만 테스트하라는 규칙이 더 낫다

테스트 함수 하나에 개념하나만 테스트하라

📌 FIRST

깨끗한 테스트는 다섯가지 규칙을 따른다.

빠르게(FAST)

  • 테스트는 빨라야한다. 빨리 돌아야한다는 말이다.

독립적으로(Independent)

  • 각 테스트는 서로 의존하면 안된다. 한 테스트가 다음 테스트가 실행될 환경을 준비해서는 안된다. 각 테스트는 독립적으로 그리고 어떤 순서로 실행해도 괜찮아야한다.

반복가능하게 (Repeatable)

  • 테스트는 어떤 환경에서도 반복 가능해야한다.

자가검증하는 (self-validating)

  • 테스트는 부울 값으로 결과를 내야한다.

적시에 (timely)

  • 테스트는 적시에 작성해야한다. 단위 테스트는 테스트 하려는 실제 코드를 구현하기 직전에 구현한다.
profile
기록하는 개발자

0개의 댓글