[Programming] - CleanCode 09. 단위 테스트
in Programming on Programming, Cleancode
해당 장은 TDD에서 가장 기본이 되는 단위 테스트의 중요성을 설명한다.
여기서 가장 강조하는건 실제 코드처럼 단위 테스트도 관리되지 않으면
오히려 마이너스 효과
를 본다는 내용이였다.
그렇기 때문에 가독성 좋은 깔끔하고 깨끗한 단위 테스트
를 개발하라고 한다.
TDD 세가지 법칙
- 실패하는 단위 테스트를 작성할때 까지 실제 코드 작성하지 않는다.
- 컴파일은 되면서 실행이 실패하지 않는 정도로만 단위 테스트를 작성한다.
- 현재 실패를
통과할 정도로만
실제 코드를 작성한다.
여기서 포인트는 실패를 통과할 정도로만 작성하라는 내용이다. 오버 프로그래밍을 방지해준다. 오히려 유지보수가 좋아진다.
테스트 코드가 중요한 이유
코드의 유연성
, 유지보수성
, 재사용성
을 제공하는 버팀목이다.
테스트 케이스가 없다면 모든 변경이 잠정적인 버그
다.
테스트 케이스가 있다면 변경이 쉬워진다.
너무나 공감하는 내용이다…
깨끗한 테스트 코드란?
가독성, 가독성, 가독성
가독성
이 제일 중요하다.
또한 테스트 코드는 더욱더 이해하기 쉽도록, 테스트 의도가 잘 파악되도록 작성하자.
비효율적이더라도 의도를 잘 표현하면 그 방법을 택하는것도 좋다.
테스트당 assert 하나?
테스트 코드를 짤 때 하나의 함수에 assert하나만 넣으라고 주장하는 사람도 있지만
규칙에 얽매이지 말고
테스트당 하나의 개념
을 넣는다고 생각하자.
테스트당 여러 assert가 문제가 아니라 여러 개념을 동시에 테스트하려는게 문제다
F.I.R.S.T
- First : 테스트는
빨라야 한다.
그래야 자주 돌리고, 쉽게 코드를 변경한다. - Independent : 테스트는
서로 독립적이어야 한다
. 어떤 순서로 실행해도 문제 없어야 한다. - Repeatable :
어떤 환경에서도 반복 가능
해야한다. 테스트가 돌아가지 않는 환경이 있다면 변명거리가 생긴다. - Self-Validation : 테스트는
성공 혹은 실패
로 나와야한다. 판단이 들어가야하는 결과값은 절대 금지다. - Timely : 테스트는
적시에 작성
해야한다. 그렇지 않으면 테스트가 불가능하도록 코드를 짤지도 모른다.
결론
아직 테스트 코드를 현업에서 제대로 작성해본적이 없어서 이 장을 읽으며 빨리 테스트 코드를 작성해보고 싶었다.
스타트업 특성상 빠르게