1. TDD란 무엇인가?
Test-Driven Development (테스트 주도 개발)
테스트 코드를 먼저 작성하고, 실제 구현 코드를 작성하는 개발 방식
💡 TDD 3단계 사이클 (Red → Green → Refactor)
- Red: 실패하는 테스트 작성
- Green: 테스트 통과하는 최소한의 코드 작성
- Refactor: 중복 제거, 리팩토링
2. TDD의 이점
- 요구사항에 맞춘 정확한 구현
- 리팩토링 시 기존 기능 깨짐 방지
- 개발자 입장에서 문서 역할도 가능
- 테스트 가능한 구조로 개발하게 됨 → 유지보수성 증가
3. 테스트의 종류
분류 | 설명 | 예시 |
단위 테스트 | 메서드/클래스 단위 | 서비스 메서드 로직 테스트 |
통합 테스트 | 여러 컴포넌트 연동 확인 | 컨트롤러 + 서비스 + DB |
인수 테스트 | 실제 사용자 흐름 테스트 | 회원가입 시 전체 플로우 |
UI 테스트 | 프론트와 API 연결 확인 | Next.js + 백엔드 API 연결 확인 |
4. Spring에서의 TDD 실습 예시
@SpringBootTest
@AutoConfigureMockMvc
//컨트롤러를 웹서버 없이 테스트할 수 있게 해주는 도구
//MockMvc를 자동으로 주입 가능하게 설정
class MemberControllerTest {
@Autowired
private MockMvc mvc;
@Test
void memeber_signin() throws Exception {
mvc.perform(post("/api/v1/members/join") //테스트용 HTTP 요청을 실행하는 부분
.contentType("application/json") //HTTP POST 요청을 /api/v1/members/join 경로로 보냄
.content("{\"email\":\"test@test.com\", \"password\":\"1234\"}")) //JSON 데이터를 문자열로 작성
.andExpect(status().isCreated()); //HTTP 상태 코드가 201(CREATED)인지 검사
}
}
→ 테스트부터 작성 → 코드 구현 → 통과 → 리팩토링
5. 테스트 전략
전략 | 설명 |
Given-When-Then 패턴 | 테스트 가독성 향상 |
테스트 데이터 분리 | @Sql, TestEntityManager, @DataJpaTest |
Mock 객체 활용 | 외부 API나 DB 호출 없이 빠르게 테스트 |
CI에서 테스트 자동화 | GitHub Actions, Jenkins, GitLab CI 등 |
6. 결론
- SI같은 일회성 개발이 아닌 유지보수가 꾸준히 필요한 서비스라면 필요한 기법
'멋쟁이사자처럼_부트캠프 > 개념STUDY' 카테고리의 다른 글
Spring에서의 API 예외 처리 전략 (0) | 2025.07.20 |
---|---|
Spring Security Filter Chain (0) | 2025.06.29 |
OAuth2 (0) | 2025.06.03 |
JWT (0) | 2025.05.20 |
기본 웹 아키텍처 개념 (0) | 2025.05.13 |