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

JUN·2024년 8월 19일
0

클린코드

목록 보기
9/14

TDD 법칙 세 가지

TDD는 단위 테스트를 먼저 작성하는 것을 요구한다. 세 가지 법칙은 다음과 같다:

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

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

테스트 코드는 실제 코드와 동일한 품질 기준을 적용해야 한다. 지저분한 테스트 코드는 유지보수가 어렵고, 실제 코드에도 악영향을 미친다.

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

깨끗한 테스트 코드는 변경을 두려워하지 않게 하며, 코드의 유연성과 유지보수성을 보장한다. 테스트 케이스가 없다면 모든 변경이 잠재적인 버그가 될 수 있다.

깨끗한 테스트 코드

깨끗한 테스트 코드를 작성하려면 가독성이 가장 중요하다. 명료성, 단순성, 풍부한 표현력이 필요하다. 테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다.

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

테스트 코드를 도메인에 특화된 언어로 구현하면 가독성이 높아지고, 유지보수가 용이해진다. 이는 잡다한 코드를 리팩터링하여 발전한 API를 사용함으로써 가능하다.

이중 표준

테스트 코드와 실제 코드에 적용되는 표준은 다르다. 테스트 코드는 단순하고 간결해야 하지만, 효율적일 필요는 없다. 테스트 환경과 실제 환경의 요구사항이 다르기 때문이다.

테스트 당 assert 하나

JUnit으로 테스트 코드를 작성할 때, 함수마다 하나의 assert 문만 사용하는 것이 이해하기 쉽고 빠르다. 다만, 상황에 따라 여러 개의 assert 문을 사용해야 할 때도 있다.

First

깨끗한 테스트 코드를 작성하려면 F.I.R.S.T 규칙을 따라야 한다. 이 규칙들은 테스트 코드의 품질을 유지하기 위한 기본 원칙이다.

  1. 빠르게(First): 테스트는 빨리 실행되어야 한다. 테스트가 느리면 자주 실행할 수 없고, 테스트 주도 개발(TDD) 주기를 방해하게 된다.
  2. 독립적으로(Independent): 각 테스트는 독립적으로 실행되어야 한다. 한 테스트가 실패한다고 다른 테스트가 실패해서는 안 된다.
  3. 반복 가능하게(Repeatable): 테스트는 어떤 환경에서도 반복 가능해야 한다. 개발 환경, 테스트 환경, 실제 환경 등 어디서나 동일한 결과를 내야 한다.
  4. 자기 검증적으로(Self-Validating): 테스트는 결과를 수동으로 확인할 필요 없이 자동으로 검증할 수 있어야 한다. 테스트가 성공했는지 실패했는지 여부를 명확히 알려줘야 한다.
  5. 적시에(Timely): 테스트는 적시에 작성되어야 한다. 테스트를 너무 늦게 작성하면 코드 설계에 영향을 미치지 못하고, 이미 작성된 코드를 테스트하려면 더 많은 시간이 소요된다.
profile
순간은 기록하고 반복은 단순화하자 🚀

0개의 댓글