개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
테스트 코드는 실제 코드만큼이나 프로젝트 건강에 중요하다.
테스트 코드는 실제 코드의 유연성, 유지보수성, 재사용성을 보존하고 강화한다.
테스트 코드는 지속적으로 깨끗하게 관리하자. 표현력을 높이고 간결하게 정리하자.
TIL (Today I Learned) 날짜
2022.03.05 ~ 2022.03.06
오늘 읽은 범위
9장. 단위 테스트
책에서 기억하고 싶은 내용을 써보세요.
TDD 법칙 세 가지
(TDD가 실제 코드를 짜기 전에 단위 테스트부터 짜라고 요구한다는 사실)
1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다.(155p)
문제는 실제 코드가 진화하면 테스트 코드도 변해야 한다는 데 있다. 그런데 테스트 코드가 지저분할수록 변경하기 어려워진다. 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸리기 십상이다.(156p)
테스트 코드는 실제 코드 못지 않게 중요하다.(157p)
코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다. 이유는 단순하다. 테스트 케이스가 있으면 변경이 두렵지 않으니까!(157p)
깨끗한 테스트 코드
어쩌면 가독성은 실제 코드보다 테스트 코드에 더더욱 중요하다.(158p)
테스트 함수마다 한 개념만 테스트하라(166p)
F.I.R.S.T
빠르게(false) : 테스트는 빨라야 한다. 테스트는 빨리 돌아야 한다는 말이다.
독립적으로(independent) : 각 테스트는 서로 의존하면 안 된다.(중략) 각 테스트는 독립적으로 그리고 어떤 순서로 실행해도 괜찮아야 한다.
반복가능하게(repeatable) : 테스트는 어떤 환경에서도 반복 가능해야 한다.
자가검증하는(self-validating) : 테스트는 부울(bool) 값으로 결과를 내야 한다. 성공 아니면 실패다. 통과 여부를 알려고 로그 파일을 읽게 만들어서는 안 된다.(중략) 테스트가 스스로 성공과 실패를 가늠하지 않는다면 판단은 주관적이 되며 지루한 수작업 평가가 필요하게 된다.
적시에(timely) : 테스트는 적시에 작성해야 한다. 단위 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
낯설기만 했던 TDD에 대한 필요성을 깨닫게 되었다. 그리고 아직은 익숙하지 않으니 테스트 코드가 적용된 많은 코드를 보고싶다는 생각이 들었다. 많은 것을 보고 느끼고 내 것으로 만들며 공부하는 것이 가장 중요한 것 같다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
도메인에 특화된 언어(DSL)
TEMPLATE METHOD 패턴
BUILD-OPERATE-CHECK 패턴
기회가 된다면 디자인 패턴에 대해서 공부해보고 싶다..!
오늘 읽은 다른사람의 TIL
_jisu님의 TIL (https://nomadcoders.co/community/thread/3343)