2025/02 3

[단위 테스트] 8-1. 통합 테스트를 하는 이유: 통합 테스트

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다. 1. 통합 테스트는 무엇인가?단위 테스트만으로 전체 시스템이 잘 동작하는지 확신할 수 없음각 부분이 외부 시스템과 어떻게 통합되는지 확인해야 함비즈니스 로직을 격리된 상태로 확인하는 것만으로는 충분하지 않음 통합 테스트단위 테스트의 요구사항을 일부 충족하지 못하는 테스트.외부 시스템과 통합된 상태에서 작동 여부를 검증함.구분설명대상외부 시스템과 상호작용하는 코드 (컨트롤러, 애플리케이션 서비스 등)목적시스템이 외부 의존성(DB, 메시지 버스 등) 과 통합된 상태에서 올바르게 작동하는지 검증검증 범위단일 동작 단위를 검증 (예: 하나의 API 요청 처리 흐름)속도단위 테스트보다 느릴 수 있음 (상대적으로 빠른 수행을 목표로 함)테스트 격리..

Code/Test 2025.02.28

[단위 테스트] 7-2. 가치 있는 단위 테스트를 위한 리팩터링: 감사 시스템

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다. 2. 가치 있는 단위 테스트를 위한 리팩터링하기고객 관리 시스템이메일 변경사용자 이메일이 회사 도메인에 속한 경우, 해당 사용자는 직원으로 표시됨 (그렇지 않으면 고객으로 간주)시스템은 회사의 직원 수를 추적해야 함이메일이 변경되면 시스템은 메시지 버스로 메시지를 보내 외부 시스템에 알려야 함 초기 구현항목설명도메인 유의성사용자 식별- UserType을 통해 사용자가 직원인지 고객인지 구별 (이메일 도메인에 따라 결정)복잡도직원 수 업데이트- 이메일 도메인에 따라 사용자 유형을 변경하고, 직원 수를 업데이트하는 로직 포함협력자명시적: userId, newEmail (값 전달 방식으로 협력, 협력자 수에 포함되지 않음)암시적: Databa..

Code/Test 2025.02.28

[단위 테스트] 7-1. 가치 있는 단위 테스트를 위한 리팩터링: 코드 유형

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.1. 리팩터링할 코드 식별하기코드 유형항목설명복잡도코드 내 의사 결정 지점 수로 정의도메인 유의성코드가 프로젝트의 도메인에 대해 얼마나 의미 있는가협력자 수코드가 의존하는 객체의 수- 가변 의존성외부 의존성이 얼마나 자주 바뀌는지- 외부 의존성외부 시스템에 대한 의존성 험블 객체 패턴을 사용해 지나치게 복잡한 코드 분할하기지나치게 복잡한 코드복잡도 및 도메인 유의성도 높고 협력자 수도 많은 코드테스트가 어렵고, 변경하기도 어려우며, 버그가 생기기 쉬움 예시) 프레임워크 의존성 (비동기)더보기@Servicepublic class NotificationService { @Async public void sendEmail(String..

Code/Test 2025.02.27