TDD란? 테스트 코드를 만들어보자!

Hyeo_Ni__·2024년 10월 19일
0

Clean-Code

목록 보기
1/1
post-thumbnail

📝 TDD란?

Test Driven Development의 약자로 선 테스트 후 개발 방식의 프로그래밍 방법이다.
과거 개발 방식 초기에는 Test First Development (테스트 우선 개발)로 불렸었다.

TDD의 개발주기

TDD의 개발 주기가 존재하는데 Red, Green, Yellow 단계로 나뉜다.

  • Red 단계: 실패하는 테스트 코드를 먼저 작성
    → 실패하는 테스트 코드를 작성할 때까지 실제 코드 미작성
    ✍ 예제 코드
    @Test
    public void testSum(){
    	Calculator calculator = new Calculator();
    	assertEquals(5, calculator.sum(2, 3));
    }
  • Green 단계: 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
    → 실패하는 테스트를 통과할 정도의 최소한으로 실제 코드를 작성
    ✍ 예제 코드
    public class Calculator {
    	public int add(int a, int b) {
    		return a + b;
    	}
    }
  • Yellow 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.

💭 일반적인 개발 방식

요구사항 분석 → 설계 → 개발 → 테스트 → 배포의 형태로 개발 주기를 갖는다.

일반적인 개발 방식의 단점은 아래와 같이 가지고 있다.

  1. 소비자의 요구 사항이 처음부터 명확하지 않을 수 있음.
  2. 처음부터 완벽한 설계가 어려움.
  3. 자체적으로 버그 검출 능력 저하 혹은 소스코드의 품질이 저하될 수 있음.
  4. 자체 테스트 비용이 증가할 수 있음.

❗ 재사용 및 관리가 어려워 유지 보수를 어렵게 만든다.

TDD의 장점

  • TDD만의 반복적인 단계가 진행되며, 자연스럽게 코드의 버그가 줄고, 소스코드는 간결해진다.

  • 명확한 요구사항을 기반으로 코드를 작성
    : 테스트가 곧 코드의 명세서 역할을 할 수 있다.
    : 테스트는 유연성, 유지보수성, 재사용성을 제공

  • 추가 구현의 용이함
    : 자동화된 유닛 테스팅을 전제하므로 테스트 기간을 획기적으로 단축

TDD의 단점

  • 생산성의 저하
    : 처음부터 2개의 코드를 짜야하고, 중간중간 테스트를 하며 고쳐나가야 하기 때문

  • 테스트 관리의 복잡성
    : 프로젝트가 커질수록 테스트 코드도 많아지기에 유지 보수하는데에도 추가적인 노력 필요

TDD의 대표적인 Tool - JUnit

자바의 단위 테스팅 프레임 워크로, JUnit만 존재하는 것은 아니다.
다른 언어들도 프레임워크가 존재하며 , 보통 이름을 xUnit이라 지칭한다.

profile
개발자로 성장 중 입니다.

0개의 댓글