<
BDD vs TDD
>
🌠다음 포스팅🌠

프로그래머스 SQL 고득점 KIT 문제
☄이전 포스팅☄

비동기 데이터 전송 ajax
유닛테스트 방법

TDD(Test Driven Development) ?

애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계방법이다.

TDD와 일반적인 개발 방식의 가장 큰 차이점은 *한다는 점이다. 설계 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 정의테스트 케이스 작성해야만 한다. 테스트 코드를 작성하는 도중에 발생하는 예외 사항(버그, 수정사항)들은 테스트 케이스에 추가하고 설계를 개선한다. 이후 테스트가 통과된 코드만을 코드 개발 단계에서 실제 코드로 작성한다.

🍀 TDD 개발 방식의 장점

보다 튼튼한 객체 지향적인 코드 생산

재설계 시간의 단축

디버깅 시간의 단축

테스트 문서의 대체 가능

추가 구현의 용이함

public class Calculator {
    public int plus(int a, int b) {
        return a + b;
    };
}

public class CalculatorTest {
    Calculaotr calc = new Calculator();

    @Test
    void plus() {
        int a = 10;
        int b = 20;
        int result = calc.plus(a, b);

        assertEquals(result, a + b);
    }
}

BDD(Behavior Driven Development) ?

어플리케이션 행동에 기반하여 공통된 이해를 구성하는 방법이다.

그리고 BDD는 TDD를 수행하려는 어떠한 행동과 기능을 개발자가 더 이해하기 쉽게하는 것이 목적이다.

시라리오 형식으로 테스트를 주도하는 방식인 만큼 Given / When / Then 3가지로 구성하여 테스트한다.

예제

public class Calculator {
    public int plus(int a, int b) {
        return a + b;
    };
}

public class CalculatorTest {
    Calculaotr calc = new Calculator();

    @Test
    void plus() {
        // given
        int a = 10;
        int b = 20;

        // when
        int result = calc.plus(a, b);

        // then
        assertEquals(result, a + b);
    }
}

BDD vs TDD

TDD는 개발 코드의 완성이 목적으로 코드 자체에 집중한 테스트 코드를 작성하고

BDD는 개발 결과의 결과 검증이 목적으로 시나리오를 패턴화 해서 테스트 코드를 통해 검증할 수 있도록 한다.

이름 Based 핵심 라이브러리
TDD 시나리오 기반 테스트 주도 JUnit5, Mockito
BDD 행동기반 자연어와 유사하게 BDDMockito

🧾Reference

  1. wonit
  2. 개발개발 울었다.
Top
Foot