DevBoi

TDD 사용방법의 구체화와 장.단점 본문

[Computer Science]

TDD 사용방법의 구체화와 장.단점

HiSmith 2021. 8. 29. 17:59
반응형

TDD라는 방법을 개발하면서 많이 들어봤을 것이다.

TDD에 대한 정의 와 장단점에 대해서 자세히 한번 정리를 해보자

 

TDD : 테스트 주도 개발방법, 테스트 드라이븐 개발, 말 그대로 일반적인 개발 수행 기법이 아닌,

개발을 하고 테스트를 애자일화하여 끊임없이 테스트 하면서 개발을 진행하는 것이다.

 

Spring framework에서는 제일 대표적으로 JUnit 이 있다.

우선 JUnit에 대한 사용방법에 대해서 알아보기 전에, 해당 방법의 장단점에 대해서 한번 정리를 해보자

 

장점 :

1. 객체 지향적인 코드 생산

- TDD는 코드의 재사용 보장을 명시 한다.

TDD자체가, 우선 객체 지향적인 코드의사용을 명시한다. 해당 사유는 간단하다.

JUnit을 통해서 테스트 하는 부분은 객체로 모듈화가 이루어진 곳의 코드이다. 따라서, 테스트를 모듈화로 진행하기 때문에,

소스코드는 자연스럽게 모듈 별로 나누어진 코드의, 결합으로 이루어 질수 밖에 없다.

 

2. 재설계 시간의 단축

- 테스트 코드를 먼저 작성하기 때문에 개발자가 개발을 하면서 소프트웨어의 요구사항이 변경되거나,

다양한 놓칠수있는 예외 사항들, 전반적인 설계가 변경되는 일에 대한 방지를 진행할 수 있다.

 

3. 테스트 문서의 대체 가능

SI 프로젝트의 진행과정에서 어떤 요소들이 테스트에 필요할까 에 대한 정의가 가능하고,

자동화된 테스트 코드를 근거로, 자동화 및 테스트 근거에 대한 문서화가 가능하다.

 

4. 추가 구현의 용이함

- 개발이 완료된 소프트웨어에 어떤 기능을 추가할때 기존 소스에 대한 영향범위파악이 용이하다.

만약에 신규 모듈화된 소스 코드를 개발해야하는 일이 있다면, 해당 소스코드를 반영하기 위해서

어떤 일들을 해야할까, 신규 코드에 대한 검증은 당연하고 기존소스의 영향범위를 체크를 해야한다.

해당을 위해서, 단순 테스트 범위를 늘려야할까?

바로 TDD를 사용하게 되면, 이전 소스에 대한 테스트 코드에 대한 검증이 추가로 가능하기 때문에, 해당

점검 까지도 가능하다.

 

 

하지만, TDD의 단점도 존재한다. 해당 단점은 무엇일까?

- 가장 큰 단점은 생산성 저하이다. 

  개발 소스 뿐만 아니라, 테스트 코드도 작성을 해야하기 때문에, 보통 10~30 % 정도가, 느려지게 된다.

해당 소프트웨어에 대한 품질도 중요하지만, 해당 완수일정에 대한 수행완주도 중요하기때문에,

그리고 대부분의 플젝에서는 이런 기한에 대한 여유를 주지않고, 타이트하게 가져가기 떄문에, 해당 방식은 잘 사용하지 않는다.

 

- 이제까지 자신이 개발하던 방식을 많이 바꿔야한다.

- Tdd는 반드시 툴을 써서 개발을 해야하고, 이렇게 되면, 해당방식에 반대로 얽메이게 된다, 해당 얽메이는 것은 애자일

방법이라고 하기 어려우며, 자꾸 규칙에 대한 얽메임이 발생하여 결국 코드를 컨트롤 씨 브이를 하게된다.

 

TDD를 효율 적으로 할수 있는 방법은 무엇일까?

TDD는 최종적으로 필요한 이전 소스에 대한 영향범위는 줄이거나, 자동화하여, 최소화 하고

최종 신규 소스에 대한 검증만 주로이루어 질수 있도록, 파라미터나 url 수동으로 조작가능하게 포인트를 만들어서

해당 신규 소스에 대한 검증 부터 진행하는 방법이 좋다.

 

해당 방법은 back door접근 법이라고도 하며 해당 방법으로 하게되면 TDD를 유연하게 할수 있도록 해준다.

 

반응형