본문 바로가기

05번. 3년 후, 기술사/▶ 소프트웨어공학

TDD

 

테스트 주도 개발은 어떻게 하는 것인가?

 

테스트 주도 개발은 말 그대로 테스트에 의해서 코드가 만들어지도록 하는 방법이다.

전통적으로 우리는 프로그램 개발을 완료한  후에 테스트를 진행한다. 하지만 TDD는 테스트를 먼저 작성하고 그 테스트를 통과하는 실제코드를 순차적으로 만들어 나간다.

.

건물을 지을 때 벽돌을 쌓는 방법을 떠올려 보자.

-> 벽돌을 쌓을때는 벽돌을 얼마만큼 쌓을 건지 특정영역에 색깔있는 실로 표시를 해 놓고 벽돌을 쌓다가 실까지 별돌이 채워지면 쌓는 것을 중지한다.  TDD로 비유하면 공간에 실로 영역을 표시하는 것을 테스트 코드에, 실제 벽돌을 쌓는 것은 실제 코드에 비유할 수 있다.

벽돌을 쌓을 때 벽돌이 비뚫어지는지 정확히 쌓이는지 실에 의해서 판단이 가능한 것과 같은 이치로 테스트 코드는 실제 코드가 나아가야 할 방향을 알려주고 있는 것이다.

 만약 벽돌이 조금 비뚫어지게 쌓였다면 반듯하게 다시 잡아가게 되는데 이것은 리팩토링에 비유할 수 있겠다. 

(리팩토링은 소스코드의 기능은 유지한채로 소스 코드의 디자인을 개선해 나가는 방법을 뜻한다.)

 

TDD의 흐름을 보자

TDD.png

위 그림은 다음과 같이 설명된다.

  1. 무엇을 테스트할 것인가 생각한다.
  2. 테스트를 작성한다.
  3. 테스트가 실패하게 만든다.
  4. 테스트를 통과하는 코드를 작성한다.
  5. 코드를 리팩토링한다.(리팩토링 과정에서 물론 테스트를 계속 통과해야만 한다.)
  6. 테스트코드 또한 리팩토링한다.
  7. 구현해야 할 것이 있을 때까지 위의 작업을 반복한다.

 

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

'05번. 3년 후, 기술사 > ▶ 소프트웨어공학' 카테고리의 다른 글

OR MAPPING  (0) 2011.11.23
Agile 방법론  (0) 2011.11.23