TIL (2024.02.08-09)
📖 오늘 읽은 범위: 9장. 단위 테스트
✍️ 책에서 기억하고 싶은 내용
- TDD 법칙 3가지
- 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
- 테스트는 유연성, 유지보수성, 재사용성을 제공한다.
- 왜? 테스트 케이스가 있으면 변경이 두렵지 않으니까!
- 깨끗한 테스트 코드는 가독성이 가장 중요하다. 최소의 표현으로 많은 것을 나타내야 한다.
- 실제 환경에서는 절대로 안 되지만 테스트 환경에서는 전혀 문제없는 방식이 있다.
- 메모리나 CPU 효율은 '실제 환경'에서만 중요하다.
- 개념 당 assert 문 수를 최소로 줄여라.
- 테스트 함수 하나는 개념 하나만 테스트하라.
- F.I.R.S.T
- Fast: 테스트는 빨리 돌아야 한다.
- Independent: 각 테스트는 서로 의존하면 안 된다.
- Repeatable: 어떤 환경에서도 반복 가능해야 한다.
- Self-validating: 테스트는 bool 값으로 결과를 내야 한다.
- Timely: 단위 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현한다.
💭 오늘 읽은 소감과 떠오르는 생각
- 4년 전, 대학에 입학하고 첫 방학이었던 것 같다. 웹 개발을 파이썬과 장고로 처음 접했었는데, 그때 강의에서 TDD를 적용했다. 그때는 장고도 어려워 죽겠는데 TDD는 또 뭐야? 단위 테스트는 뭐고? 하면서 간신히 따라하면서 조각조각 이해했던 기억이 있다. 이제는 단위 테스트가 뭔지도 설명할 수 있고, 이번 챕터를 읽으면서 테스트 코드의 중요성에 대해서도 이해하게 되었다.
- 이제는 적용해보는 것 밖에 안 남았으니 공부하면서 혼자 이것저것 짜봐야겠다.
- 모든 것이 그렇겠지만.. 개발도 알면 알수록 어려운 것 같다.
🤨 궁금한 내용 또는 잘 이해되지 않는 내용
- TDD가 뭔지는 알겠는데, 프론트엔드에서 TDD를 어떻게 적용해야 할 지 모르겠어서 좀 찾아봤다. Jest를 가장 많이 쓰는 것 같고, 최상위 테스트에서는 Cypress를 사용해 테스트할 수 있다고 한다.
📖 나의 최애 북틸