워밍업 클럽 스터디 2기 3주차 발자국
강의
강의 수강
섹션 2. 테스트는 왜 필요할까?
테스트를 왜 작성해야하는지 작성하지 않았을 때와 비교해 필요성 체감
테스트를 프로덕션 영역과 구분된, 부수적인 대상이 아닌 프로덕션 영역과 같이 유지보수 해야 하는 대상으로의 관점
섹션 3. 단위 테스트
단위 테스트를 왜 해야하는지, 어떤 식으로 해야하는지 학습
단위 테스트 진행 시 static method와 같은, 테스트하기 어려운 부분을 분리해야 하는 이유 학습
섹션 4. TDD: Test Driven Development
프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현과정을 주도하도록 하는 방법론인 TDD 학습
Red - Green - Refactor 과정을 통해 객체가 아닌 메시지부터 테스트하는 방식 실습
테스트하고자 하는 대상에 집중할 수 있으며, 해피 케이스 뿐만 아닌 에러 케이스도 고려할 수 있게 됨
섹션 5. 테스트는 []다
테스트는 빠른 피드백과 애플리케이션에 대한 신뢰뿐만 아니라, 문서의 역할도 할 수 있음을 학습
문서의 역할을 하기 위해 @DisplayName, BDD 등 가독성을 위한 내용 학습
섹션 6. Spring & JPA 기반 테스트 - Persistence Layer
Persistence Layer에서는 어떠한 부분을 고려하며 테스트를 진행해야 하는지 학습하고 실습
JPA라는 ORM을 사용하기 때문에 쿼리를 직접 작성하지 않으므로, 작성한 코드가 의도한 쿼리를 실행하는지 테스트
테스트 코드에서 @Transactional을 활용할지 여부에 따라 @DataJpaTest / @SpringBootTest 중 어떤 것을 사용해야하는지 고려
미션
Day12
Readable Code: 읽기 좋은 코드를 작성하는 사고법 studycafe를 대상으로 테스트 코드 작성
어떤 대상을 테스트해야하는지 고려해 model 패키지 내에 위치한 클래스에 대해서만 코드 작성
Scanner를 static으로 사용하는 InputHandler는 테스트하기 어렵다고 판단
OutputHandler의 경우 데이터를 단순 출력하는 용도이므로 테스트를 할 필요가 없다고 판단
LockerPassFileReader, SeatPassFileReader의 경우 static으로 조회하려는 파일을 구체적으로 알고 있기 때문에 테스트 시 프로덕션 영역(resource)에 영향을 끼치기도 하고, 테스트하기 어렵다고 판단
통합 테스트를 진행해야 하는 StudyCafePassMachine의 경우 InputHandler의 테스트 어려움과 OutputHandler를 통해 검증해야 한다는 점으로 인해 테스트하기 어렵다고 판단
회고
테스트가 왜 필요한지 다른 사람에게 설득할 수 있을 정도로 학습할 수 있었다
미션을 진행하며 아직 테스트를 작성한 경험과 노하우가 부족함을 느꼈다
테스트를 할 때 나만의 기준과 그에 대한 근거가 필요함을 느꼈다
댓글을 작성해보세요.