티스토리 뷰

Book

[Clean Code] TIL - 220206

refigo 2022. 2. 7. 15:42
9장. 단위 테스트

 

좋은 테스트 케이스가 있다면 변화는 두렵지 않아.

 

1. 생각

테스트 케이스도 실제 코드처럼 깨끗하게 관리하는 것이 중요하다.

깨끗하게 관리된 좋은 테스트 케이스가 있다면 실제 코드를 변경해도 결과를 제대로 확인할 수 있어 새로운 기능 제작이나 개선이 쉬워진다.

좋은 테스트를 먼저 작성하면 곧 바로 좋은 코드가 나온다.

 

 

2. 기억하고 싶은 내용들

애자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 이미 많아졌으며 점점 더 늘어나는 추세다.
하지만 우리 분야에 테스트를 추가하려고 급하게 서두르는 와중에 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 미묘한 (그리고 더욱 중요한) 사실을 놓쳐버렸다.
 

- TDD 법칙 세 가지

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

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

문제는 실제 코드가 진화하면 테스트 코드도 변해야 한다는 데 있다. 그런데 테스트 코드가 지저분할 수록 변경하기 어려워진다.
테스트 코드는 실제 코드 못지 않게 중요하다.
 
테스트는 유연성, 유지보수성, 재사용성을 제공한다.
코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다.
테스트 케이스가 있으면 변경이 두렵지 않으니까! 테스트 케이스가 없다면 모든 변경이 잠정적인 버그다.
 
 

- 깨끗한 테스트 코드

어쩌면 가독성은 실제 코드보다 테스트 코드에 더더욱 중요하다.
가독성을 높이려면? 여느 코드와 마찬가지다. 명료성, 단순성, 풍부한 표현력이 필요하다. 테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다.
 
도메인에 특화된 테스트 언어
흔히 쓰는 시스템 조작 API를 사용하는 대신 API 위에다 함수와 유틸리티를 구현한 후 그 함수와 유틸리티를 사용하므로 테스트 코드를 짜기도 읽기도 쉬워진다. 이렇게 구현한 함수와 유틸리티는 테스트 코드에서 사용하는 특수 API가 된다. 즉, 테스트를 구현하는 당사자와 나중에 텍스트를 읽어볼 독자를 도와주는 테스트 언어다.
 
이중 표준
실제 코드 만큼 효율적일 필요는 없다. 실제 환경이 아니라 테스트 환경에서 돌아가는 코드이기 때문이다. 실제 환경과 테스트 환경은 요구사항이 판이하게 다르다.
 
테스트 환경은 자원이 제한적일 가능성이 낮다.
실제 환경에서는 절대로 안 되지만 테스트 환경에서는 전혀 문제 없는 방식이 있다. 대개 메모리나 CPU 효율과 관련 있는 경우다. 코드의 깨끗함과는 철저히 무관하다.
 

'Book' 카테고리의 다른 글

[Clean Code] TIL - 220209  (0) 2022.02.09
[Clean Code] TIL - 220207  (0) 2022.02.07
[Clean Code] TIL - 220202  (0) 2022.02.02
[Clean Code] TIL - 220201  (0) 2022.02.01
[Clean Code] Mission - 220131  (0) 2022.01.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함