워밍업 클럽 3기 BE 클린코드&테스트 - 3주차 발자국
회고록
3주차로 넘어가면서 벌써 한 강의가 끝났다. 언제나 로직을 구현하고 테스트 코드를 구현하는 것은 어렵고도 귀찮은 일이다 이주 과제인 테스트 코드 과제는 나에게 어떤 의미가 있었나 생각해보는 시간이 필요하다.
1. 무엇을 배웠나?
이번 주에는 다음과 같은 내용을 학습했다.
섹션 3 단위 테스트
테스트 도구
JUnit 5: 단위 테스트를 위한 프레임워크 (XUnit 계열)
AssertJ: 풍부한 API 및 메서드 체이닝 지원, 테스트 코드 작성 보조
테스트 케이스 세분화
해피 케이스: 정상적인 상황에서 예상된 동작 확인
예외 케이스: 에러나 예외 상황 검증
경계값 테스트: 특정 범위(이상, 이하, 초과, 미만)나 날짜 등 경계값 테스트
테스트하기 어려운 영역 구분 및 분리
테스트하기 어려운 코드 예시
현재 날짜/시간, 랜덤 값, 전역 변수/함수, 사용자 입력 등
표준 출력, 메시지 발송, DB 기록 등 외부 세계에 영향을 주는 코드
해결 방법: 테스트하기 어려운 요소를 외부로 분리하여 테스트 가능한 코드로 변환
순수 함수(Pure Function)
같은 입력에는 항상 같은 결과를 반환하며, 외부 세계와 단절된 형태 → 테스트하기 쉬운 코드
섹션 4 TDD
TDD의 핵심 사이클
TDD는 RED → GREEN → REFACTOR 3단계로 반복 수행됨.
RED (실패하는 테스트 작성)
새로운 기능을 추가하기 전에 먼저 실패하는 테스트를 작성
GREEN (테스트 통과, 최소한의 코드 작성)
테스트를 통과할 수 있도록 최소한의 코드 작성
REFACTOR (구현 코드 개선, 테스트 유지)
중복 제거, 성능 개선 등의 최적화 수행
테스트는 계속 통과해야 함
2. 무엇이 인상적이었나?
이번 주 학습 중 가장 인상 깊었던 내용 보다는 궁금한 점이 있었다. 기존 레거시 리펙토링에 대한 테스트 보장을 어떻게 할 것인가? 해당 내용에 대한 해결책은 차주 내용에 포함시켜 보겠다.
3. 이번 주 학습을 통해 얻은 것
전반적으로 기존의 인지하고 있는 내용을 반복하는 시간이 되었다. 차주에도 꾸준히 이어가길...
4. 다음 주 목표
금주 발생한 궁금증을 해소시켜 보기
댓글을 작성해보세요.