Post

TDD 란?

TDD(테스트 주도 개발)에 대해서 알아보자

서론

우리는 보통 개발을 할 때 코드를 작성한 후 테스트를 진행한다.
하지만 이런 방법으로는 프로그램이 완성 될 때 까지 그 프로그램이 제대로 돌아가는지 확인하기 어렵다.
이 것을 보완해주는 것이 TDD 즉 테스트 주도 개발이다.

TDD 란?

Test-Driven Development
(테스트 주도 개발)

소프트웨어를 개발하는 여러 방법 중 하나이다.
작은 규모의 소프트웨어를 만들어 테스트하고, 그 소프트웨어를 보완해가며 복잡한 소프트 웨어를 완성하는 방식이다.
즉 최소한의 코드만을 짠다음 그 코드를 테스트하고 리팩토링하는 과정을 반복해 소프트웨어를 완성하는 개발 방법이다.

왜 해야할까?

코드 유지보수에 용이해진다.

프로그램을 개발할 때 이미 개발한 코드를 유지보수하는 과정은 많은 비용이 발생한다.
하지만 테스트 코드를 이용하면 앞에 완성해놓은 기능은 보증된채로 새로운 기능의 문제만 수정하면 된다.
즉 비용이 줄어들고, 앞의 기능들을 신경쓰지 않아도 되니 유지보수에 유리해진다.

전체 작업시간이 줄어든다.

처음 개발기간만 보자면 TDD 방식은 시간이 늘어나는 것처럼 보일 수도 있다.
테스트 코드를 작성하고 그것을 리팩토링하는 과정을 거쳐야하기 때문이다.
하지만 테스트를 작성하는 시간과 테스트를 작성하지 않고 프로그램을 완성 후 디버깅하는 시간을 비교했을 때 전자가 더 효율적인 경우가 많다.
왜냐하면 프로그램 전체를 디버깅 하는 것과 현재 테스트하고 있는 범위만 디버깅하는 것은 효율적인 면에서 차이가 날 수 밖에 없기 때문이다.
물론 이런 것이 절대적인 것은 아니고 상황에 따라 다르다.

단점

생산성이 저하될 수 있다.

복잡하고 거대한 프로그램이 아닌 단순한 프로그램의 경우 굳이 테스트를 하지 않고도 어떤 결과가 나올지 예상될 때가 많다.
이럴때 조차도 테스트 원칙을 지켜가며 테스트 코드를 굳이 작성한다면 비효율적일 경우가 생긴다.
그렇기때문에 개발자들 사이에서는 TDD에 관해 의견이 갈린다.

마치며

TDD 개발 경험이 있다면 프로그램의 예외 상황에 대비하기 좋다.
또한 전체적인 개발에 관한 시야도 넓어지는데도 도움이 될 수 있으니 TDD에 관해 알아두는 것이 도움이 될 것이다.

This post is licensed under CC BY 4.0 by the author.