김주엽
1. 📌 핵심 개념 정리
✅ 요약하기
- TDD 법칙 세 가지
- 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
- 깨끗한 테스트 코드 유지하기
- 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸릴 수 있다.
- 지저분한 테스트 코드는 개발자 사이에서 점점 큰 불만이 생기게 된다.
- 테스트 케이스가 없으면 결함율이 높아질 위험이 있다.
- 실제 코드 못지 않게 테스트 코드는 매우 중요하다.
- 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목은 단위 테스트다.
- 깨끗한 테스트 코드
- 깨끗한 테스트 코드를 작성하는데 가장 중요한 것은 가독성이다.
- 읽는 사람을 고려해서 테스트 코드를 작성하라.
Build
-Operate
-Check
순서로 테스트를 작성하면 도움이 된다.- 테스트 자료를 생성한다.
- 테스트 자료를 조작한다.
- 조작한 결과가 올바른지 확인한다.
- 테스트 코드는 반드시 필요한 자료 유형과 메서드만 사용해야 한다.
- 테스트당 assert 하나
JUnit으로최대한 하나의 테스트코드를 짤 때에는메서드마다하나의assert
문을단 하나만사용해야하도록 한다고 주장하는 이들이 있다.- 만약 중복되는 코드가 많아진다면
Template Method
패턴을 사용해서 중복을 줄여라. - 테스트당 개념 하나
- 테스트 하나에 하나의 개념만 테스트하도록 한다.
- 개념 여러 개를 연속으로 테스트하는 긴 메서드는 피한다.
- F.I.R.S.T
빠르게(Fast)
: 테스트는 빨라야 한다.- 테스트가 빨라야 자주 테스트를 돌리고 문제점을 찾아내기 쉽다.
독립적으로(Independent)
: 각 테스트는 서로 의존하면 안 된다.- 테스트가 의존하면 하나가 실패했을 때 나머지도 실패하므로 결함을 찾아내기 어렵다.
반복가능하게(Repeatable)
: 테스트는 어떤 환경에서도 반복 가능해야 한다.- 실제 환경, QA 환경, 집에 가는 중에 사용하는 노트북 환경 등 어느 곳에서든 테스트가 가능해야 한다.
자가검증하는(Self-Validating)
: 테스트는bool
값으로 결과를 내야 한다.- 통과 여부를 알기 위해 로그 파일을 읽게 만들어서는 안 된다.
적시에(Timely)
: 테스트는 적시에 작성해야 한다.- 실제 코드를 구현한
줄이후에요약테스트내용
코드를 만들면 실제 코드가 테스트하기 어렵다는 것을 발견할 수 있다.
..- 실제 코드를 구현한
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
개념TDD또는법칙원칙의세이름가지- 어려웠던 부분
해당테스트를개념이작성하기헷갈리거나전에는명확실제 코드를 작성하지 않았던는점방식을구체적으로이해하기설명합니어려웠다. - 궁금한 점
해당회사의 백엔드 개념발을 혼자 맡거나 고객이 빠른 프로토타입 결과물을 요구하는 경우에는
TDD
법칙을 지키기가 어렵다고 생각하는데 어떤원리로경우에동작TDD
법칙을 적용하는지,실무에서것이어떻게 활용되는효과적일지등을 질문 형태로 정리합니다.
- 어려웠던 부분
개념 또는 원칙의 이름어려웠던 부분.- 궁금
한 점.
개념 또는 원칙의 이름어려웠던 부분.궁금한 점
3. 📚 참고 사항
📢 논의하기
관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.
- 관련 자료 공유
- 추가 자료
관련TDD블로그방법론
글이나템플릿공식메서드문서 링크를 제공합니다.패턴
- 추가 자료
- 논의하고 싶은 주제
- 주제
논의하고TDD
싶은개발내용방식을간략히언제정리합니다.사용하는 것이 효과적일까? - 설명
논의하고TDD
싶개발 방식은 러닝 커브, 생산성 저하, 테스트 코드 관리 등의 단점이유를작성합니존재한다.
그렇다면 언제TDD
개발 방식을 사용하는 것이 효과적일지 궁금하다.
- 주제