블로그
전체 42024. 10. 25.
0
워밍업 클럽 2기 백엔드 클린코드&테스트 4주차 발자국
* 주간 요약 * 테스트 Mock 관련 어노테이션들의 차이점 학습 * 레이어드 아키텍처의 각 계층별 테스트 방법 이해 * 테스트 코드 구조화와 재사용성 향상 방법 학습* 학습 회고 * 칭찬할 점 * Mock 관련 어노테이션들의 차이점을 명확하게 이해했습니다. * @BeforeEach를 활용한 테스트 코드 재사용성 개선을 달성했습니다. * 레이어드 아키텍처의 각 계층 특성에 맞는 테스트 방법을 파악했습니다. * 아쉬운 점 * Spy와 SpyBean의 실제 활용 사례를 더 실습해보지 못했습니다. * 각 레이어의 경계를 명확히 구분하는 테스트 설계가 부족했습니다. * 보완하고 싶은 점 * 실제 프로젝트에서 다양한 Mock 어노테이션 활용해보기 * 각 레이어의 특성을 고려한 테스트 케이스 설계 강화 * Mock/Spy 객체를 활용한 복잡한 의존성 처리 연습 * 레이어 간 통합 테스트 작성 연습* 주간 미션 * 접근 * Mock 관련 어노테이션들의 차이점을 명확히 정리했습니다. * 테스트 코드의 재사용성을 고려한 구조 설계를 진행했습니다. * 레이어드 아키텍처의 각 계층 특성을 분석했습니다. * 과정 * Mock 어노테이션 비교 분석 * 각 어노테이션의 특징과 사용 목적 정리 * 실제 사용 시나리오 구상 * 테스트 코드 구조화 * 공통 테스트 준비 코드 @BeforeEach로 추출 * given-when-then 패턴에 맞춘 코드 재배치 * 레이어드 아키텍처 테스트 전략 * 각 레이어의 특징과 책임 분석 * 레이어별 적절한 테스트 방식 도출 * 결과 * Mock 관련 어노테이션들의 용도와 차이점을 명확히 이해 * 효율적인 테스트 코드 구조 설계 능력 향상 * 레이어드 아키텍처에 대한 이해도 증가
2024. 10. 20.
0
워밍업 클럽 2기 백엔드 클린코드&테스트 3주차 발자국
주간 요약테스트의 중요성: 자동화된 테스트의 필요성, 테스트 주도 개발(TDD)의 개념단위 테스트 작성: JUnit5 활용, 테스트 케이스 세분화, 테스트하기 어려운 영역 분리테스트 스타일: BDD 스타일 테스트 작성, DisplayName 활용Spring & JPA 기반 테스트: 레이어드 아키텍처에서의 테스트, Persistence Layer와 Business Layer 테스트학습 회고칭찬할 점테스트 작성의 중요성을 이해하고 실제로 적용해보았습니다.JUnit5를 활용한 테스트 작성 능력이 향상되었습니다.아쉬운 점TDD 방식을 완전히 적용하는 데 어려움을 겪었습니다.Spring & JPA 기반 테스트에서 개념 이해가 부족했습니다.보완하고 싶은 점TDD 방식을 더 연습하여 자연스럽게 적용할 수 있도록 하겠습니다.Spring과 JPA에 대한 기본 지식을 보충하여 테스트 작성에 활용할 계획입니다.다음 주 학습 목표실제 프로젝트에 TDD 방식을 적용해보기Spring & JPA 기반의 복잡한 비즈니스 로직에 대한 테스트 작성 연습하기 주간 미션접근기존 프로젝트에 단위 테스트를 추가하고, 일부 기능을 TDD 방식으로 개발해보았습니다.BDD 스타일의 테스트 작성을 시도하여 가독성 있는 테스트 코드를 만들었습니다.과정JUnit5를 활용한 기본 단위 테스트 작성주요 비즈니스 로직에 대한 테스트 케이스를 작성했습니다.TDD 방식으로 새로운 기능 추가실패하는 테스트를 먼저 작성하고, 이를 통과하는 코드를 구현했습니다.BDD 스타일 테스트 적용given-when-then 구조를 사용하여 테스트의 가독성을 높였습니다.결과프로젝트의 전반적인 테스트 커버리지가 향상되었습니다.TDD 방식을 통해 더 견고하고 유지보수가 쉬운 코드를 작성할 수 있었습니다.BDD 스타일의 테스트로 인해 테스트 코드의 의도를 더 명확히 표현할 수 있게 되었습니다.
2024. 10. 13.
0
워밍업 클럽 2기 백엔드 클린코드&테스트 2주차 발자국
주간 요약객체 지향 적용: 상속과 조합, Value Object, 일급 컬렉션, Enum 활용, 다형성, 도메인 개념 도출코드 다듬기: 주석 작성, 변수와 메서드 나열, 패키지 구조화, 버그 수정, 알고리즘 교체, IDE 활용리팩토링 연습: 추상화 레벨 조정, 객체의 책임과 응집도 개선, 다양한 관점에서의 추상화개발 철학: 능동적 읽기, 오버 엔지니어링 주의, "은탄환은 없다" 개념학습 회고칭찬할 점리팩토링 연습을 통해 코드 개선 능력을 향상시켰습니다.아쉬운 점학습한 내용을 실제 프로젝트에 적용해볼 기회가 부족했습니다.Value Object, 일급 컬렉션에 대해 더 많은 예제를 통한 학습이 필요할 것 같습니다.보완하고 싶은 점학습한 개념들을 실제 코드로 구현해보는 연습이 필요하다고 생각합니다.다음 주 학습 목표이번 주에 배운 개념 중 하나를 선택하여 기존 프로젝트에 적용해보기 주간 미션접근기존 코드의 책임 분리와 메서드 개선에 초점을 맞추었습니다.의존성 주입 방식의 개선, 파일 핸들링 책임 재정의, 초기화 메시지 추가 등 다양한 측면에서 리팩토링을 진행했습니다.과정 StudyCafePassMachine 필드 주입 변경의존성 주입 방식을 개선하여 객체 간의 결합도를 낮추었습니다.StudyCafeFileHandler 책임 재정의파일 처리 관련 책임을 명확히 하고 관련 기능을 개선했습니다.initializeMessage 추가초기화 메시지를 추가하여 사용자 경험을 개선했습니다.결과책임 분리를 통해 각 클래스와 메서드의 역할을 명확히 하고 코드의 응집도를 높였습니다.의존성 주입 방식 개선으로 객체 간 결합도를 낮추고 테스트 용이성을 높였습니다.파일 핸들링 책임 재정의를 통해 관련 로직을 중앙화하고 재사용성을 높였습니다.초기화 메시지 추가로 사용자 경험을 개선하고 프로그램의 시작을 명확히 했습니다.
2024. 10. 06.
0
워밍업 클럽 2기 백엔드 클린코드&테스트 1주차 발자국
지난 일주일 동안 "Readable Code: 읽기 좋은 코드를 작성하는 사고법" 강의의 섹션 1부터 4까지를 수강했습니다. 주요 학습 내용1. 추상화의 개념과 중요성2. 명확한 이름 짓기의 원칙3. 메서드 추상화와 선언부 작성법4. 코드의 논리 흐름 개선하기 5. 객체 지향 패러다임의 기본 개념인상 깊었던 부분은 추상화 레벨을 일관되게 유지하는 것의 중요성이었습니다. 코드를 읽을 때 추상화 수준이 들쭉날쭉하면 이해하기 어렵다는 점을 실감했고 이전 진행했던 프로젝트의 코드를 보면서 리팩터링의 필요성을 실감하게 되었습니다. 회고:칭찬할 점: 매일 꾸준히 1-2개 강의를 들으며 학습 리듬을 잘 유지했습니다. 아쉬운 점: 시간 부족으로 배운 내용을 실제 코드에 적용해보는 연습이 부족했습니다.보완할 점: 다음 주에는 강의 내용을 토대로 기존 프로젝트 코드를 리팩토링해보려 합니다. 다음 주 목표1. 남은 섹션 완강하기2. 매일 30분씩 실습 및 리팩토링 시간 갖기3. 클린 코드 원칙을 적용한 코드 리뷰 연습하기 미션 접근 방법1. 코드의 전반적인 구조와 흐름 파악2. 가장 시급한 개선 포인트 식별 (긴 메서드, 복잡한 조건문 등)3. 작은 단위로 나누어 점진적 리팩토링 진행 해결 과정1. 긴 메서드를 의미 있는 단위로 추출2. 복잡한 조건문을 객체로 캡슐화3. 매직 넘버 제거 및 상수화4. 변수명과 메서드명 개선한 번에 큰 변화를 주기보다 작은 단위로 개선하는것이 보다 빠르고 효과적이라는것을 알게 되었습니다.