이정우
1. 📌 핵심 개념 정리
✅ 요약하기
각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.
한TDD줄법칙요약세내용가지
-
- 실패하는 단위 테스트를 작성할 떄까지 실제 코드를 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
- 위 세가지 규칙을 따르면 개
선발과 테스트가 대략 30초 주기로 묶인다. - 테스트 코드와 실제 코드가 함께 나올뿐더러 테스트 코드가 실제 코드보다 불과 몇 초 전에 나온다.
- 하지만 과한 양의 테스트 코드는 관리 문제를 유발하기도 한다.
개선 전 코드
개선 전 코드의 문제점을 작성합니다.
개선 후
개선 후 코드
개선 후의 코드에 대한 설명을 작성합니다.
- 깨끗한
줄테스트요약코드내용유지하기
- 지저분한 테스트 코드는 테스트를 하지 않는 것보다 못하다.
- 실제 코드가 진화하면 테스트 코드 또한 변해야 한다.
- 테스트 코드가 지저분 할 수록 변경이 어려워진다.
- 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸린다.
- 실제 코드 변경으로 기존 테스트 케이스가 실패하기 시작하면, 지저분한 코드로 인해 실패하는 테스트 케이스를 통과시키는 것은 더욱 어려워진다.
- 때문에, 테스트 코드는 계속 증가하는 부담이 된다.
- 결국 테스트 슈트를 폐기하지 않으면 안 되는 상황에 처한다.
- 하지만 테스트 슈트가 없으면 시스템 이쪽을 수정해도 저쪽이 안전하다는 사실을 검증하지 못한다.
- 결국 결함율이 높아지기 시작한다.
- 의도치 않은 결함 증가는 개발자의 변경을 주저하게 만든다.
- 결과적으로 코드가 망가지기 시작한다.
- 테스트 코드는 실제 코드 못지 않게 중요하다.
- 테스트는 유연성, 유지보수성, 재사용성을 제공한다.
- 깨끗한 테스트 코드
- " 가독성 "
- 가독성을 높이기 위해선 명료성, 단순성, 풍부한 표현력이 필요하다.
- 테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다.
- 도메인에 특화된 테스트 언어 - DSL
- 테스트를 구현하는 당사자와 테스트를 읽을 독자를 도와주는 테스트 언어
- API 위에 함수와 유틸리티 구현 후 해당 함수와 유틸리티를 사용
- 테스트 코드 구성, 해석이 쉽다.
- 이중 표준
- 테스트 API 코드에 적용하는 표준은 단순,간결,표현의 풍부가 중요하지만 실제 코드 만큼 효율적일 필요는 없다.
- 테스트당 assert 하나
- assert 문이 하나인 함수는 결론이 하나이므로 코드를 이해하기 좋다.
- 하지만 때로는 하나의 함수에 여러 assert 문을 넣는 순간도 존재.
- 단지 assert 문의 개수는 최대한 줄이는
요약것이내용좋다는 의견 - 테스트당 개념 하나
- F.I.R.S.T.
- Fast
- 테스트는 빠르게 돌아야 한다.
- 자주 돌려야 하기 때문이다.
- Independent
- 각 테스트는 서로 독립적이어야 한다.
- 실패의 원인을 명확하게 구분해야 하기 때문이다.
- Repeatable
- 테스트는 어떤 환경에서도 반복 가능해야 한다.
- Self-Vaildating
- 테스트는 bool 값으로 결과를 내야 한다. ( 성공 or 실패 )
- 통과 여부 확인을 위해 로그 파일 읽지 않도록
- Timely
- 테스트는 적시에 작성해야 한다.
- 실제 코드 작성 후 테스트 코드를 작성하면 테스트가 어렵다는 사실을 발견할 수도 있다.
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
- 개념 또는 원칙의 이름
- 어려웠던 부분
도메인 특화 언어(DSL)- 특정 도메인에 국한해
당개념이사용하는헷갈리거나언어로,명확응용 프로그램 도메인 내의 특정 문제를 해결하지 않았던 점을 구체적으로도록 설명합계되었습니다. 궁금어느 도메인에서나 적용 가능한점
범용해당언어(General-purpose language)와는 반대되는 개념입니다.- 예를 들어 쇼핑몰 플랫폼을 개발한다고 가정했을 때, 비지니스 도메인에는 상품을 결제하고 배송처리와 같은 개념이
어떤 원리로 동작하는지, 실무에서 어떻게 활용되는지 등을 질문 형태로 정리합포함됩니다.
- 특정 도메인에 국한해
- 어려웠던 부분
개념 또는 원칙의 이름어려웠던 부분.궁금한 점.
개념 또는 원칙의 이름어려웠던 부분.궁금한 점.
3. 📚 참고 사항
📢 논의하기
관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.
- 관련 자료 공유
- 논의하고 싶은 주제
- 주제
논의하고 싶은 내용을 간략히 정리합니다. - 설명
논의하고 싶은 이유를 작성합니다.
- 주제