블로그
전체 4#카테고리
- 백엔드
#태그
- 워밍업클럽
- 클린코드
![[워밍업 클럽 2기 BE 클린코드&테스트] 4주차 회고](https://cdn.inflearn.com/public/files/blogs/029fbe03-57ba-4f13-9dee-5f1869b1b42d/인프런_워밍업_클럽_Backend_2기.png?w=260)
2024. 10. 26.
0
[워밍업 클럽 2기 BE 클린코드&테스트] 4주차 회고
들어가며테스트 코드 작성에 대해 학습하면서, 특히 Mock 사용법과 더 나은 테스트 작성 방법에 대해 깊이 있게 배울 수 있었습니다. 이 회고에서는 주요 학습 내용과 깨달음을 정리해보고자 합니다.Mock에 대한 새로운 시각Test Double의 이해처음에는 Mock과 Stub을 같은 개념으로 혼동했었는데, 이번 학습을 통해 둘의 차이점을 명확히 이해하게 되었습니다. 특히 Test Double의 다양한 종류(Dummy, Stub, Spy, Mock, Fake)를 배우면서, 각각의 사용 목적과 상황이 다르다는 것을 알게 되었습니다.Mockito 사용의 실제@Mock, @Spy, @InjectMocks의 차이점을 배우면서 특히 인상 깊었던 점은:- @Spy를 통해 실제 객체의 특정 메소드만 모킹할 수 있다는 점- BDDMockito를 사용하면 테스트 코드가 더 자연스러워진다는 점이러한 도구들을 적재적소에 활용하면 테스트의 가독성과 유지보수성을 크게 향상시킬 수 있다는 것을 깨달았습니다.더 나은 테스트를 위한 깨달음테스트 픽스처 관리의 중요성이전에는 @BeforeEach에서 모든 테스트 데이터를 준비하는 것이 좋은 방법이라고 생각했습니다. 하지만 이는 테스트의 독립성과 가독성을 해칠 수 있다는 것을 배웠습니다. 특히:1. 테스트별로 필요한 데이터만 명시적으로 준비하는 것의 중요성2. SQL 파일로 데이터를 준비하는 방식의 단점3. 테스트 간 독립성 보장의 중요성새로운 테스트 기법 발견@ParameterizedTest와 @DynamicTest를 처음 알게 되었는데, 이들이 제공하는 기능이 매우 유용하다고 느꼈습니다:- @ParameterizedTest로 여러 케이스를 간단히 테스트- @DynamicTest로 시나리오 기반 테스트 구현실무적용 시 주의점테스트 환경 통합여러 개의 테스트 환경을 하나로 통합하여 성능을 개선할 수 있다는 점이 인상적이었습니다. 특히:- 불필요한 서버 구동 최소화- MockBean 처리의 효율적인 관리Private 메소드 테스트에 대한 새로운 관점private 메소드를 테스트하고 싶은 욕구가 생길 때, 이는 객체 분리가 필요하다는 신호라는 점을 배웠습니다. 이는 더 나은 설계로 이어질 수 있는 중요한 인사이트였습니다.앞으로의 다짐1. Classicist vs Mockist 균형 잡기 - Mock은 필요한 최소한으로 사용하되, 실제 동작을 최대한 테스트하도록 노력하겠습니다.2. 테스트 품질 향상 - 한 테스트에서는 한 가지만 검증하도록 집중하겠습니다. - 테스트 간 독립성을 철저히 지키겠습니다.3. 문서로서의 테스트 - 테스트 코드가 문서의 역할을 할 수 있도록 더 명확하고 이해하기 쉽게 작성하겠습니다.마무리이번 학습을 통해 테스트 코드 작성에 대한 더 깊은 이해를 얻었습니다. 특히 Mock의 적절한 사용과 테스트 설계의 중요성을 깨달았습니다. 이러한 학습 내용을 실제 프로젝트에 적용하면서 더 나은 코드 품질을 만들어가고 싶습니다.
백엔드
・
워밍업클럽
・
클린코드
![[워밍업 클럽 2기 BE 클린코드&테스트] 3주차 회고](https://cdn.inflearn.com/public/files/blogs/6f862b0d-ec0c-4a6c-b6de-58f9139bd5ff/인프런_워밍업_클럽_Backend_2기.png?w=260)
2024. 10. 19.
0
[워밍업 클럽 2기 BE 클린코드&테스트] 3주차 회고
들어가며테스트 코드에 대해 깊이 있게 학습하면서, 단순히 코드 검증을 넘어서 더 나은 설계와 신뢰성 있는 애플리케이션을 만들기 위한 다양한 인사이트를 얻을 수 있었습니다.주요 학습 내용1. 단위 테스트의 본질 이해단위 테스트를 작성할 때 가장 중요한 것은 테스트 케이스를 세분화하고, 테스트하기 어려운 영역을 명확히 분리하는 것임을 배웠습니다. 이는 단순히 테스트 커버리지를 높이는 것이 아닌, 코드의 품질을 실질적으로 개선하는 방향으로 이어져야 한다는 점을 깨달았습니다.2. TDD의 실천적 의미TDD가 단순한 방법론이 아닌, 설계 품질을 개선하는 도구라는 점을 이해했습니다. Red-Green-Refactor 사이클을 통해 점진적으로 코드를 개선해나가는 과정이 중요하며, 이는 결과물의 품질을 자연스럽게 향상시키는 방법이라는 것을 배웠습니다.3. 테스트 코드 작성의 실용적 접근특히 인상 깊었던 부분은 "테스트는 문서다"라는 관점입니다. DisplayName을 섬세하게 작성하고 BDD 스타일로 테스트를 구성함으로써, 테스트 코드가 단순한 검증을 넘어 살아있는 문서의 역할을 할 수 있다는 점이 새로웠습니다.4. Spring & JPA 환경에서의 테스트각 계층별 테스트 전략이 다르다는 것을 배웠습니다:- Persistence Layer: 실제 DB를 사용한 통합 테스트의 중요성- Business Layer: @Transactional 사용에 대한 신중한 접근- Presentation Layer: MockMvc를 활용한 효과적인 테스트5. Mock 사용에 대한 인사이트Mock을 무분별하게 사용하는 것이 아닌, 필요한 상황에서 적절하게 활용하는 것의 중요성을 배웠습니다. 특히 Classicist와 Mockist의 관점 차이를 이해하면서, 상황에 따른 적절한 선택의 중요성을 깨달았습니다.개선하고 싶은 부분1. 테스트 가독성 향상- BDD 스타일의 일관된 적용- 더 명확한 DisplayName 작성2. 테스트 격리성 개선- 외부 의존성을 최소화하는 설계 고려- 시간이나 외부 호출 같은 제어하기 힘든 값들에 대한 더 나은 처리 방법 연구3. 효율적인 테스트 구조화- 테스트 코드의 중복 최소화- 재사용 가능한 테스트 유틸리티 개발앞으로의 다짐1. 테스트를 통한 문서화를 더욱 강화하여 코드의 의도를 명확히 전달하겠습니다.2. TDD를 실무에 점진적으로 도입하여 코드 품질을 개선하겠습니다.3. Mock 사용에 있어 더 신중한 판단을 하고, 실제 객체를 사용할 수 있는 상황에서는 실제 객체를 사용하도록 하겠습니다.마치며테스트 코드는 단순한 버그 예방 차원을 넘어, 더 나은 설계를 이끌어내는 도구이자 살아있는 문서라는 점을 깊이 이해하게 되었습니다. 앞으로도 이러한 인사이트를 바탕으로 더 나은 테스트 코드를 작성하기 위해 노력하겠습니다.
백엔드
・
워밍업클럽
・
클린코드
![[워밍업 클럽 2기 BE 클린코드&테스트] 2주차 회고](https://cdn.inflearn.com/public/files/blogs/1a4d522b-f52c-419c-a6d1-bf1ccdada470/인프런_워밍업_클럽_Backend_2기.png?w=260)
2024. 10. 12.
0
[워밍업 클럽 2기 BE 클린코드&테스트] 2주차 회고
워밍업 클럽 2기에 열린 BE 클린코드&테스트 스터디에 참가하고 있습니다. 2주차에는 1주차에 배운 클린코드 관련 내용을 예제 프로젝트에 적용하는 시간을 가졌습니다.아래에 2주차 동안 배운 내용을 요약했습니다. [배운 점]1. 코드 다듬기1.1 주석의 양면성주석은 코드의 이해를 돕는 중요한 도구이지만, 과도한 사용은 오히려 코드의 가독성을 해칠 수 있다는 것을 배웠습니다. 좋은 코드는 그 자체로 문서가 되어야 한다는 점을 명심하게 되었습니다. 1.2 변수와 메서드의 나열 순서코드 구조화의 중요성을 깨달았습니다. 변수와 메서드를 일관된 순서로 배치하면 코드의 가독성과 유지보수성이 크게 향상됩니다. 1.3 패키지 나누기큰 프로젝트를 관리 가능한 단위로 나누는 것의 중요성을 배웠습니다. 잘 구조화된 패키지는 코드의 모듈성을 높이고 재사용성을 증가시킵니다. 1.4 기능 유지보수하기버그 수정과 알고리즘 교체 과정을 통해 유지보수의 실제적인 측면을 경험했습니다. 이는 초기 설계의 중요성과 함께 변화에 유연한 코드 작성의 필요성을 일깨워주었습니다. 1.5 IDE의 도움 받기현대적인 IDE 도구들이 제공하는 다양한 기능들을 활용하면 생산성을 크게 향상시킬 수 있다는 것을 배웠습니다. 리팩토링, 코드 분석, 자동 완성 등의 기능들이 특히 유용했습니다. 2. 리팩토링 연습2.1 추상화 레벨적절한 추상화 레벨을 찾는 것의 중요성을 배웠습니다. 너무 낮은 추상화는 코드의 복잡성을 증가시키고, 너무 높은 추상화는 실제 구현을 이해하기 어렵게 만듭니다. 2.2 객체의 책임과 응집도단일 책임 원칙(SRP)의 중요성을 실감했습니다. 각 객체가 명확한 책임을 가지고 높은 응집도를 유지할 때, 코드의 유지보수성과 재사용성이 크게 향상됩니다. 2.3 관점의 차이로 달라지는 추상화같은 문제도 다른 관점에서 보면 전혀 다른 추상화 모델이 나올 수 있다는 점을 배웠습니다. 이는 문제 해결 시 다양한 시각을 가지는 것의 중요성을 일깨워주었습니다. 3. 기억하면 좋은 조언들3.1 능동적 읽기코드를 단순히 읽는 것을 넘어 적극적으로 이해하고 분석하는 습관의 중요성을 배웠습니다. 이는 코드 품질 향상과 문제 해결 능력 개발에 큰 도움이 됩니다. 3.2 오버 엔지니어링때로는 단순한 해결책이 최선일 수 있다는 점을 배웠습니다. 불필요한 복잡성을 피하고 현재 요구사항에 맞는 적절한 수준의 솔루션을 제공하는 것이 중요합니다. 3.3 은탄환은 없다모든 상황에 완벽하게 들어맞는 단일 해결책은 없다는 점을 인식하게 되었습니다. 각 문제와 상황에 맞는 최적의 해결책을 찾는 노력이 필요합니다. [앞으로의 다짐]이번 학습을 통해 코드 품질 향상과 리팩토링의 중요성을 깊이 있게 이해하게 되었습니다. 이는 단순히 기술적인 스킬을 넘어 소프트웨어 개발에 대한 전반적인 접근 방식을 바꾸는 계기가 되었습니다. 앞으로도 지속적인 학습과 실천을 통해 더 나은 개발자로 성장하고자 합니다.
백엔드
・
워밍업클럽
・
클린코드
![[워밍업 클럽 2기 BE 클린코드&테스트] 1주차 회고](https://cdn.inflearn.com/public/files/blogs/35ac8f3f-f291-4d0e-93e8-90f188c1f2c9/인프런_워밍업_클럽_Backend_2기.png?w=260)
2024. 10. 05.
0
[워밍업 클럽 2기 BE 클린코드&테스트] 1주차 회고
워밍업 클럽 2기에 열린 BE 클린코드&테스트 스터디에 참가하고 있습니다. 1주차에는 클린 코드 관련한 강의를 듣고 예제 프로젝트를 수정해가며 연습하는 시간을 가졌습니다.아래에 1주차 동안 배운 내용을 요약했습니다. [배운 점]1. 추상화의 중요성클린 코드를 배우면서 가장 인상 깊었던 것은 추상화의 중요성입니다. 코드를 작성할 때 '무엇을 하는가'와 '어떻게 하는가'를 분리하는 것이 얼마나 중요한지 깨달았습니다.- 적절한 이름 짓기의 중요성- 메서드 추출을 통한 코드 구조화- 추상화 레벨을 일관되게 유지하는 것의 중요성이를 통해 코드의 가독성과 유지보수성이 크게 향상될 수 있다는 점을 배웠습니다.2. 논리와 사고의 흐름코드를 작성할 때 논리와 사고의 흐름을 명확히 하는 것이 중요하다는 점을 배웠습니다. 특히:- Early return을 사용하여 복잡성 줄이기- 부정문보다는 긍정문을 사용하여 이해하기 쉽게 만들기- 해피 케이스와 예외 처리를 명확히 구분하기이러한 방법들을 통해 코드를 읽는 사람의 인지 부하를 줄일 수 있다는 점이 인상적이었습니다.3. 객체 지향 패러다임의 적용객체 지향 프로그래밍의 원칙들, 특히 SOLID 원칙에 대해 배운 것이 큰 도움이 되었습니다- 단일 책임 원칙 (SRP)- 개방-폐쇄 원칙 (OCP)- 리스코프 치환 원칙 (LSP)- 인터페이스 분리 원칙 (ISP)- 의존관계 역전 원칙 (DIP)이러한 원칙들을 적용함으로써 더 유연하고 확장 가능한 코드를 작성할 수 있다는 것을 알게 되었습니다.4. 실제 적용과 리팩토링이론을 배우는 것도 중요하지만, 실제로 코드에 적용해보는 것이 더 중요하다는 점을 깨달았습니다.- Value Object와 일급 컬렉션의 활용- Enum을 이용한 다양한 상태 표현- 다형성을 활용한 조건문 개선이러한 기법들을 실제 코드에 적용해보면서, 코드의 품질이 눈에 띄게 향상되는 것을 경험할 수 있었습니다. 앞으로의 다짐이번 학습을 통해 클린 코드의 중요성과 방법에 대해 많이 배웠지만, 이는 시작에 불과하다는 것을 알게 되었습니다.1. 매일 조금씩이라도 기존 코드를 리팩토링하는 습관 들이기2. 코드 리뷰에 적극적으로 참여하여 다른 사람의 코드에서도 배우기3. 클린 코드 관련 서적을 꾸준히 읽고 학습하기이러한 노력을 통해 더 나은 개발자로 성장하고 싶습니다. 클린 코드는 단순히 '예쁜' 코드를 작성하는 것이 아니라, 효율적이고 유지보수와 협업에 용이한 코드를 만드는 것임을 깨달았습니다. 이는 개인의 성장뿐만 아니라 실무에서 팀과 회사의 생산성 향상에도 크게 기여할 수 있는 중요한 기술이라고 생각합니다.
백엔드
・
워밍업클럽
・
클린코드




