본문으로 바로가기

TDD(Test-Driven Development)란?

category SW 2020. 2. 10. 18:05

 

1. TDD란? 

TDD(Test-Driven Development)는 말 그대로
"테스트 주도 개발: 테스트가 개발을 이끌어 나간다."라고 정의할 수 있다.

 

메소드 나 함수 같은 프로그램 모듈을 작성할 때

‘작성 종료조건을 먼저 정해놓고 코딩을 시작 한다’는 의미로 받아들이면 편하다.

 

레드 그린 사이클

  • RED : 항상 실패하는 테스트를 먼저 작성
  • GREEN : 테스트에 통과하는 프로덕션 코드 작성
  • REFACTOR : 테스트가 통과하면 프로덕션 코드를 리팩토링
                     (반복되는 코드, 긴 메소드, 큰 클래스, 긴 매개변수 목록 등등 코드를 좀 더 효율적으로 바꾸기)

위의 레드 그린 사이클 처럼 우선 테스트를 작성하고 그걸 통과하는 코드를 만들고 해당 과정을 반복하면서 

제대로 동작하는지에 대한 피드백을 적극적으로 받는 것이다.

 

2. TDD를 왜 사용하는가?

1) 사용이유

  • 개발 단계 초기에 문제를 발견하게 해준다.
  • 추후에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존기능이 올바르게 작동하는지 확인할 수 있다.
  • 기능에 대한 불확실성을 감소시켜준다.
  • 시스템에 대한 실제 문서를 제공한다. 즉, 단위 테스트 자체가 문서로 사용할 수 있다.

2) 장점

  • 코드 결함이 줄어든다.
  • 깨끗한 코드가 나온다.
  • 유지보수 비용이 줄어든다.

3. TDD의 과정

  1. 코드에 대한 테스트를 적는다.
  2. 테스트가 실패하는 것을 본다.
  3. 테스트를 통과할 수 있도록 코드를 짜서 테스트를 통과시킨다.
  4. 테스트를 더욱 자세하게 리팩토링 한다.
  5. 다시 테스트를 해서 코드가 테스트를 통과하도록 한다.

4. 프레임워크

테스트 코드 작성을 도와주는 프레임워크들이 있다.

가장 대중적인 테스트 프레임워크는 xUnit이 있는데 개발환경에 따라 Unit테스트를 도와주는 도구라고 생각하면된다.

대표적이 xUnit프레임워크들은 다음과 같다.

  • JUnit - Java
  • DBUnit - DB
  • CppUnit - C++
  • NUnit - .net

'SW' 카테고리의 다른 글

[Design Pattern] Factory Method Pattern  (0) 2020.08.12
[IT 용어] Secure Coding  (0) 2020.08.12