본문 바로가기

멋쟁이사자처럼_부트캠프/개념STUDY

TDD와 테스트 전략

1. TDD란 무엇인가?

Test-Driven Development (테스트 주도 개발)
테스트 코드를 먼저 작성하고, 실제 구현 코드를 작성하는 개발 방식

 

💡 TDD 3단계 사이클 (Red → Green → Refactor)

  1. Red: 실패하는 테스트 작성
  2. Green: 테스트 통과하는 최소한의 코드 작성
  3. 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