본문 바로가기
IT/Teckweek

TDD란?

by YEON-DU 2020. 12. 9.
반응형

익히 들어온 TDD..에 대해서 알아보고자 한다!

TDD는 뭔가 개인적으로 코딩 테스트 당시에 나오는 테스트 케이스 확장자 파일? 로 은근 봐왔던 것 같다.

실제로 개발 과정에서 테스트 케이스를 만들었고, 이러한 테스트를 통과하기 위한 코드를 짜는 것을 TDD라고 한다.

TDD에 대해 자세히 알아보자!

 

TDD란?

Test Driven Development.

테스트 주도 개발. 테스트가 개발을 이끌어나가는 것을 의미한다. 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성하고, 그 테스트 케이스를 통과하기 위한 코드를 생성한다. 그리고 해당 코드를 리팩토링하는 기법이다.

 

위의 과정을 간단히 이미지로 표현하면 다음과 같다.

출처 : Learning to Love TDD

TDD 3가지 Cycle

TEST FAILS

실패하는 테스트 케이스를 먼저 만들어서 코드를 검증하도록 만드는 것이다. 실패하는 테스트 케이스를 만들 때는 모든 기능을 한꺼번에 테스트하는 것이 아니라 Unit 별로, 즉 기능별로 테스트 케이스를 만든다.

(이는 상황에 따라 변경될 수는 있다)

 

TEST PASSES

성공하는 테스트 케이스를 만들어서, 코드를 검증하도록 만드는 것이다. 실패하는 테스트 케이스를 통과시킬 수 있는 코드를 만드는 것이다.

 

Refactor

리팩토링은 어느 개발 과정에서도 빠질 수 없는 것인 것 같다. 실패와 성공하는 테스트 케이스를 작성한 뒤, 중복이나 효율적이지 못한 코드를 더 가독성있고, 효율적으로 만드는 과정이다. 이 과정을 거치고 다시금 테스트케이스를 작성하는 사이클로 돌아가게 된다.

 

TDD의 장점과 단점

장점

테스트 케이스를 이미 작성한 채로 구현하기 때문에 오류가 적어지고, 또한 코드를 좀 효율적으로 짤 수 있게 된다.

(스파게티 코드가 되는 것을 방지할 수 있다)

Unit 테스트에 용이하게 되고, 결과적으로 유지보수에도 도움이 된다.

 

단점

테스트 케이스를 작성하는 시간이 오래걸릴 수 있다.

이미 기획이 명확하지 않은 프로젝트에 먼저 테스트케이스를 작성하게 되면, 기획이 변경될 경우 낭비되는 시간이 너무 많아진다.

 

참고자료

ko.wikipedia.org/wiki/테스트_주도_개발

반응형

'IT > Teckweek' 카테고리의 다른 글

DI (Dependency Injection)란?  (0) 2020.12.21
안드로이드 클린 아키텍처  (0) 2020.12.18
머신러닝과 딥러닝의 차이  (0) 2020.11.30
www.도메인.com 을 치면 일어나는 일  (1) 2020.11.22
싱글톤 패턴 (Singleton Pattern)  (0) 2020.10.26

댓글