테스트 주도 개발은 어떻게 하는 것인가?
테스트 주도 개발은 말 그대로 테스트에 의해서 코드가 만들어지도록 하는 방법이다.
전통적으로 우리는 프로그램 개발을 완료한 후에 테스트를 진행한다. 하지만 TDD는 테스트를 먼저 작성하고 그 테스트를 통과하는 실제코드를 순차적으로 만들어 나간다.
.
건물을 지을 때 벽돌을 쌓는 방법을 떠올려 보자.
-> 벽돌을 쌓을때는 벽돌을 얼마만큼 쌓을 건지 특정영역에 색깔있는 실로 표시를 해 놓고 벽돌을 쌓다가 실까지 별돌이 채워지면 쌓는 것을 중지한다. TDD로 비유하면 공간에 실로 영역을 표시하는 것을 테스트 코드에, 실제 벽돌을 쌓는 것은 실제 코드에 비유할 수 있다.
벽돌을 쌓을 때 벽돌이 비뚫어지는지 정확히 쌓이는지 실에 의해서 판단이 가능한 것과 같은 이치로 테스트 코드는 실제 코드가 나아가야 할 방향을 알려주고 있는 것이다.
만약 벽돌이 조금 비뚫어지게 쌓였다면 반듯하게 다시 잡아가게 되는데 이것은 리팩토링에 비유할 수 있겠다.
(리팩토링은 소스코드의 기능은 유지한채로 소스 코드의 디자인을 개선해 나가는 방법을 뜻한다.)
TDD의 흐름을 보자
위 그림은 다음과 같이 설명된다.
- 무엇을 테스트할 것인가 생각한다.
- 테스트를 작성한다.
- 테스트가 실패하게 만든다.
- 테스트를 통과하는 코드를 작성한다.
- 코드를 리팩토링한다.(리팩토링 과정에서 물론 테스트를 계속 통과해야만 한다.)
- 테스트코드 또한 리팩토링한다.
- 구현해야 할 것이 있을 때까지 위의 작업을 반복한다.
이 글은 스프링노트에서 작성되었습니다.
'05번. 3년 후, 기술사 > ▶ 소프트웨어공학' 카테고리의 다른 글
OR MAPPING (0) | 2011.11.23 |
---|---|
Agile 방법론 (0) | 2011.11.23 |