본문 바로가기

General

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

 

TDD 법칙 세 가지

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

 

깨끗한 코드 유지하기

테스트 코드에도 실제 코드 못지 않게 높은 품질 기준을 적용해야 한다. 실제 코드가 진화하면 테스트 코드도 변해야한다. 그런데 테스트 코드가 지저분하다면 변경이 어려워지고, 실제 코드를 짜는 시간보다 테스트 케이스를 변경하는 시간이 더 걸리게 될 수도 있다. 결국 테스트 스위트를 폐기하지 않으면 안되는 상황에 처한다.

 

깨끗한 테스트 코드

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

숙련된 개발자라면 자기 코드를 좀 더 간결하고 표현력이 풍부한 코드로 리팩터링해야 마땅하다. 잡다하고 세세한 사항으로 범벅된 코드를 계속 리팩터링하다보면 진화된 API가 등장할 수 있다. 

단, 테스트코드는 실제코드만큼 효율적일 필요는 없다. 메모리나 CPU 효율은 코드의 깨끗함과 다른 이야기이다. 실제 환경이 아니라 테스트 환경에서 돌아가는 코드이기 때문이다. 

 

테스트당 개념 하나

테스트 함수 하나는 개념 하나만 테스트하라.한 개념당 assert문 수를 최소로 줄여라. 이것저것 잡다한 개념을 연속으로 테스트하는 긴 함수는 피한다. 

 

F.I.R.S.T

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

  • Fast 빠르게: 테스트가 느리면 자주 돌릴 엄두를 못 낸다.
  • Independent 독립적으로: 각 테스트는 어떤 순서로 실행해도 괜찮아야 한다.
  • Repeatable 반복가능하게: 어느 환경에서도 반복 실행할 수 있어야 한다. (심지어 네트워크에 연결되지 않았어도) 
  • Self-Validating 자가검증하는: 통과 여부를 판단하기 위해 로그파일을 읽게해서는 안되고, 성공/실패로 결과를 알려주어야 한다.
  • Timely 적시에: 테스트하려는 실제 코드를 구현하기 직전에 구현한다.

 

출처: 도서 클린코드 애자일 소프트웨어 장인 정신, 로버트 C.마틴 지음 | 박재호, 이해영

 

'General' 카테고리의 다른 글

[클린 코드] 11장 시스템  (0) 2023.06.10
[클린 코드] 10장 클래스  (0) 2023.06.04
[클린 코드] 8장 경계  (0) 2023.05.28
[클린 코드] 7장 오류 처리  (0) 2023.05.25
[클린 코드] 6장 객체 vs 데이터구조  (0) 2023.05.20