TDD?

Test-Driven Development

  • 테스트 주도 개발 방법론(이하 TDD) 란 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.
  • 요구사항을 상세한 테스트로 정의한 뒤 이것을 만족시키는 방법으로 소프트웨어의 증진을 추구한다.
  • TDD를 통해 개발 과정에서 소프트웨어에 증명되지 않은 요구사항이 추가되는 것을 막을 수 있다.

TDD Cycle

  1. Add a Test

  2. Run all Tests and See if the new Test fails

  3. Write the Code

  4. Run Tests

  5. Refactor Code

  6. Repeat


TDD_Global_Lifecycle.png Figure 1. TDD_Global_Lifecycle

테스트 케이스

테스트 케이스를 작성할 때는 케이스 안에 필요한 요구 사항이 작성되어 있음을 보증해야 한다. 대개의 경우 테스트 케이스는 다음 4가지로 작성한다.

  1. Setup/Given : Test를 수행하기 전에 만족되는 전조건을 작성한다.
  2. Execution/When : 타겟이 되는 행동을 시행하고 해당 행동의 결과 등을 캡쳐한다. 이 과정은 매우 간결해야한다.
  3. Validation/Then : Execution 과정에서 타겟이 된 행동이 만족해야하는 후조건을 검증한다.
  4. CleanUp : Test 상태 이전으로 복구한다. 이 과정이 끝나고 바로 다음 테스트가 수행 될 수 있도록 해야한다.

이점

  • 개발 방향을 잃지 않도록 유지
    • 자신의 개발 내용과 진척 상황을 눈으로 확인할 수 있는 지표가 됨.
  • 테스트 케이스 자체로 코드의 좋은 테스트 문서가 된다

  • 코드 품질 향상을 기대할 수 있다

  • 디자인 개선이 용이하다
    • 테스트 단위로 기능을 쪼개고 분리하면서 객체 지향적 디자인을 자연스럽게 고려할 수 있다.
  • 리팩토링 /디버깅 시간 단축

이클립스 설정하기

** Static Import 설정 **

Organize import (Ctrl + Shift + O) 해도 static import의 *가 풀리지 않도록 하는 설정. Junit4 이후의 assert나, mock library, matcher 등을 사용하는데 필수적. Windows-Preference-Orgnize import의 Number of static imports… 를 1로 설정

** TEST 메소드와 Import에 대한 Template 설정 **

Window-Preference-Java-Editors-Template에 자주 쓰는 템플릿을 추가한다.

각각의 항목의 의미는 다음과 같다

  • name : 축약해서 사용할 문자
  • context : 해당 템플릿을 사용하는 에디터 종류. 여기서는 Java코드를 입력하므로 ‘Java’로 선택한다.
  • pattern : 템플릿 내용
    • 즉, Java에디터에서 ‘name’ 으로 정한 문자열을 치고 Ctrl + Space를 누르면 ‘pattern’의 내용이 자동입력 된다.

** ※ More Unit의 Generate Test Method 템플릿은 Window-Preference-MoreUnit-Java에서 Test Method Content를 수정해면 같은 효과를 볼 수 있다.**

유용한 툴

More Unit

테스트 케이스 작성 및 클래스 간의 전환을 용이하게 할 수 있으며 모듈에 대한 테스트를 자동으로 Generate 해준다.

EclEmma

테스트 케이스의 코드 커버리지를 이클립스에서 코드 자체에서 바로 확인 할 수 있으며, Java Code의 간단한 Metric 값도 확인할 수 있다.

image

참고

Test-driven development - WikiPedia

Figure 1 / Author : Xarawn

EclEmma

More Unit

Eclipse에서 테스트 코드 작성을 편하게 하는 설정