[TDD] TDD 테스트 방법론

2025. 7. 11. 13:37·공부일기../Java

TDD 란? 

"Test Driven Development"의 약자로, 테스트 주도 개발이라고 한다.

소프트웨어 개발 방법론 중 하나로, 먼저 테스트 코드를 작성하고 그 테스트를 통과하는 실제 코드를 작성하는 방식을 반복하는 것이다. 

TDD는 개발 과정에서 설계 오류를 조기에 발견하고 코드의 품질을 향상시키는 데 도움을 준다.

 

이때 BDD , DDD 라는것도 접할수있는데 BDD는 행위 주도 개발(Behavior-Driven Development)을 의미하며 소프트웨어 개발 방법론 중 하나입니다. TDD에서 파생된 방법론이라고 한다. 

"Given-When-Then" 형식의 시나리오를 사용하여 요구사항을 표현한다.

 

DDD(Domain Driven Design, 도메인 주도 설계)는 는 비즈니스 도메인에 깊이 집중하여 이를 기반으로 소프트웨어를 설계하는 방법론으로 2000년대 초반에 한 프로젝트가 파일에 뭉텅이 처럼 붙어서 있을때 어떻게하면 서로 간섭을 안할까? 고민하다가 고안해낸 설계법이라구한다. 현대에서는 그닥 의미가없는 방법론같다.

 

TDD 개발순서

1. 실패하는 작은 테스트를 작성한다 (컴파일이 되지않아도된다.)

2. 빨리 테스트가 통과하도록 만든다 (어떤방법으로든)

3. 리펙토링을 한다.

-> TDD개발을 하면 처음에 이게 뭔가..하는 의구심이 들기도할것이다..

 

좋은 테스트란?

  • Fast: 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 한다.
  • Independent: 각각의 테스트는 독립적이며 서로 의존해서는 안된다.
  • Repeatable: 어느 환경에서도 반복 가능해야 한다.
  • Self-Validating: 테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증되어야 한다.
  • Timely: 테스트는 적시에 즉, 테스트하려는 실제 코드를 구현하기 직전에 구현해야 한다.

 

단위테스트 VS 통합테스트 VS 인수테스트

사실 단위테스트와 통합테스트의 개념은 명확하지않다. 구글에서도 작은테스트와 큰테스트? 이런식으로 테스트를 나눈다고한다.

 

하지만 초보자입장에서는 개념을 이해하려 한다면 아래의 정의정도로 생각하면 될것같다.

 

단위테스트 :

  • 자바 그 자체의 기능을 테스트하는것 
  • 일반적으로 클래스 또는 메서드 단위로 테스트를 한다.

통합테스트 :

  • 스프링 빈을 띄워서 전체의 기능을 테스트하는것 
  • 보통 DB에 접근하거나, 외부라이브러리같은 개발자가 변경 할 수 없는부분을 함께 테스트 작업을 진행한다.

인수테스트 :

  • 사용자 시나리오에 맞춰서 수행하는 테스트이다.

'공부일기.. > Java' 카테고리의 다른 글

[TDD](TDD기반 서비스 개발 후) 회고 및 객체지향 설계 고민  (0) 2025.07.12
[TDD] JUnit 테스트 입문 – Mockito로 실제 객체 vs Mock 비교  (0) 2025.07.11
스트림(Stream) / Optional<T> / 람다  (0) 2025.07.03
객제지향 속성 (캡슐화,상속,추상화,다형성)  (0) 2025.06.20
JVM 메모리영역  (6) 2025.06.19
'공부일기../Java' 카테고리의 다른 글
  • [TDD](TDD기반 서비스 개발 후) 회고 및 객체지향 설계 고민
  • [TDD] JUnit 테스트 입문 – Mockito로 실제 객체 vs Mock 비교
  • 스트림(Stream) / Optional<T> / 람다
  • 객제지향 속성 (캡슐화,상속,추상화,다형성)
s0-0mzzang
s0-0mzzang
공부한것을 기록합니다...
  • s0-0mzzang
    승민이의..개발일기..🐰
    s0-0mzzang
  • 전체
    오늘
    어제
    • 전체~ (108)
      • 마음가짐..! (10)
      • 공부일기.. (76)
        • weekly-log (6)
        • Spring (19)
        • Java (18)
        • DataBase (10)
        • git (2)
        • JPA (6)
        • kafka (1)
        • Backend Architecture (3)
        • Troubleshooting (삽질..ㅋ) (2)
        • Cloud (1)
        • Docker (2)
        • 알고리즘 (1)
        • 리액트 (2)
        • Infra (3)
      • 하루일기.. (22)
        • 그림일기 (8)
        • 생각일기 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    항해플러스
    React
    Paging
    인프라 기초
    TDD
    swagger
    JPA
    ADC 환경
    ERD
    MySQL
    BufferedReader
    스프링부트
    항해99
    spring
    SpringBoot
    다짐
    자바
    spring boot
    리팩토링
    StringTokenizer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s0-0mzzang
[TDD] TDD 테스트 방법론
상단으로

티스토리툴바