일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Today
- Total
목록교육/강의 (6)
기록
시작하면서소프트웨어 아키텍처는 애플리케이션의 확장성과 유지보수성을 결정짓는 핵심 요소로, 설계 선택에 따라 개발 과정과 결과물에 큰 영향을 미칩니다. Layered Architecture(계층형 아키텍처)와 Hexagonal Architecture(헥사고날 아키텍처)는 서로 다른 설계 철학을 기반으로 한 대표적인 아키텍처 방식입니다. 이 글에서는 두 아키텍처의 이론적 기반과 실무적 차이를 비교하고, Kafka와 MySQL을 활용한 현실적인 예제를 통해 그 특성을 심도 있게 분석합니다.Layered Architecture (계층형 아키텍처)Layered Architecture는 소프트웨어를 여러 계층으로 나누어 설계하는 전통적이고 직관적인 방식입니다. 각 계층은 서로 독립적이면서도 특정한 역할을 수행하며,..
TDD(Test Driven Development)소프트웨어 개발이 점점 복잡해지면서 코드 품질과 유지보수성은 중요한 과제가 되었습니다. TDD(Test Driven Development, 테스트 주도 개발)는 이러한 과제를 해결하기 위해 고안된 개발 방법론으로, 코드 작성 전에 테스트를 먼저 작성하고 이를 통해 개발을 진행합니다.TDD의 핵심 원칙:1. 테스트 작성 → 코드 작성 → 리팩토링을 반복합니다.2. 테스트는 코드의 안정성과 품질을 보장하는 필수 요소입니다.3. 작은 단위로 빠른 피드백을 얻어 점진적으로 기능을 개발합니다.왜 TDD가 중요한가?코드 품질 향상: 테스트가 요구사항을 보장하며, 불필요한 코드 작성을 방지합니다.빠른 피드백: 코드 작성 후 바로 동작 여부를 확인할 수 있어 개발 속도..
1. 테스트하기 어려운 영역: 시간 의존성소프트웨어에서 현재 시간(LocalDateTime.now())에 의존하는 코드는 테스트하기 어렵습니다. 이는 테스트 실행 시점에 따라 결과가 달라질 수 있기 때문입니다. 예를 들어:테스트가 영업 시간 내에 실행되면 성공하지만, 영업 시간 외에 실행되면 실패합니다.동일한 테스트 코드가 실행 시간에 따라 불안정한 결과를 초래합니다.2. 문제점아래의 기존 코드는 현재 시간에 직접적으로 의존하고 있어 테스트 실행 시마다 결과가 달라질 가능성이 있습니다:public Order createOrder() { LocalDateTime now = LocalDateTime.now(); LocalTime currentTime = now.toLocalTime(); if..
1. 해피 케이스와 예외 케이스테스트를 작성할 때 모든 시나리오를 고려하는 것은 어렵습니다. 그래서 해피 케이스와 예외 케이스로 나누어 테스트를 세분화합니다.해피 케이스(Happy Case):시스템이 정상적으로 작동할 것으로 기대되는 일반적인 상황.사용자가 예상대로 행동하고, 입력값이 유효하며, 모든 조건이 만족되는 경우를 테스트.예: 상품 주문 시, 1개 이상의 상품을 정상적으로 추가하는 경우.예외 케이스(Exception Case):시스템이 예상치 못한 입력값이나 동작에 직면했을 때 발생하는 상황.에러, 경고, 또는 비정상적인 상황에 대한 방어 코드를 확인.예: 상품을 0개 추가하려고 시도하거나, 잘못된 시간에 주문하는 경우.필요성:해피 케이스는 시스템이 정상적으로 작동함을 보장합니다.예외 케이스는 ..
1. 단위 테스트란 무엇인가?단위 테스트(Unit Test) 는 애플리케이션의 가장 작은 단위(클래스, 메서드)를 독립적으로 테스트하는 과정입니다. 개발자가 작성한 코드가 기대한 대로 동작하는지 확인하며, 주로 하나의 특정 기능에 초점을 맞춥니다.단위 테스트의 주요 목적:코드의 동작을 빠르게 확인할 수 있음.개발 초기 단계에서 버그를 발견할 가능성이 높아짐.리팩토링이나 기능 추가 시 변경된 코드가 기존 기능에 영향을 미치지 않도록 보장.2. 수동 테스트먼저, 수동 테스트로 단위 테스트를 시도해보겠습니다. 아래는 간단한 수동 테스트 코드입니다:@Testvoid add() { CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()..
시작하면서소프트웨어 개발에서 테스트는 선택이 아닌 필수입니다. 그러나 현실에서는 "테스트를 어떻게 작성해야 할까?", "효율적인 테스트 전략은 무엇일까?"와 같은 고민에 빠지기 마련입니다. 이 시리즈는 그러한 고민에 실용적인 해답을 제공하기 위해 시작되었습니다.이 블로그 시리즈는 Inflearn의 Practical Testing 강의를 듣고 학습한 내용을 기반으로 작성되었습니다. 강의의 주요 개념과 실습 과정을 정리하고, 실제 프로젝트에 활용할 수 있는 팁을 공유합니다.이 시리즈에서 다룰 내용단위 테스트와 TDD의 기본 개념Spring & JPA 기반의 레이어드 테스트 작성법Mocking과 Stubbing을 활용한 테스트 최적화BDD 스타일과 테스트 문서화 기법더 나은 테스트를 위한 구체적 조언