본문 바로가기

SW

TDD에 대해서 알고 있어?

TDD? 어디서 많이 들어본 것 같은 용어이다. 뭐를 테스트? 한다. 라는 의미만 알고 있는데 ..

이번에 TDD에 대해서 간단하게 이야기를 해볼까 한다. TDD 그게 도대체 무엇일까?

 

TDD란

TDD

Test Driven Development인 TDD는 '테스트 주도 개발'이라는 의미를 가지고 있다.

이는 소프트웨어 방법론 중 하나이며, 반복 테스트를 한다는 것이다. 

 

작은 단위에서 테스트 케이스를 작성한 다음에 그다음 코드를 추가하는 단계를 반복하고 구현을 한다.

짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 TEST-FIRST 개념을 포함하고 있다.

 

TDD의 개발 주기

위에 있는 그림을 보면 빨강 초록 파랑을 색깔이 나뉘어 있는데 이러한 것은 무슨 의미를 할까?

 

먼저 빨강! 빨강은 실패한 코드를 작성하는 단계다!!

다음으로는 초록인데 초록은 테스트 코드를 실행시키기 위해서 코드를 작성한 단계이고,

마지막으로 파랑은 중복 코드를 제거하고 일반적으로 작성한 코드를 리팩토링 하는 단계를 이야기한다!

 

그럼 이러한 TDD를 사용하면 뭐가 달라질까?

우선 해당 기능의 우선사항의 근거에 대해서 테스트 코드를 작성함으로 효율성을 올릴 수 있다. 이를 통해서

먼저 테스트를 통과하게 된 코드는 해당 코드를 리팩토링을 하여 더 좋은 기능을 구현이 가능하다. 또 코드를 

작성하기 전에 테스트를 함으로써 개발 프로세스의 초기의 결함을 보다 쉽게 발견하고 코드의 유지가 쉽다. 

 

TDD 최종적인 목적은 그럼 뭘까?

바로 Clean Code That Works 이 뜻은 바로 '깨끗한 코드가 동작하기'라는 뜻을 가지고 있다. 

TDD를 적용하면 빠른 피드백을 통한 개선이 가능하며, 작은 실패들을 반복하여 결국 해결이 가능하다.

큰 단위의 문제를 작은 문제로 나눠 해결을 하기 때문에 코드를 테스트하기 용이하게 단위 분리가 가능하다.

 

일반적인 개발 방식 vs TDD 개발 방식

일반적인 개발 방식

 

일단적인 개발 방법은 요구사항 분석 > 설계 > 개발 > 테스트 > 배포 형태의 주기로 이룬다.

하지만 이러한 방법은 비효율적이다.

 

먼저 일반적인 개발을 할 경우에는 보통 개발을 할 때 사용자의 요구사항에 맞게 개발을 한다. 하지만 새로운 요구사항이

생길 경우에는 불필요한 코드, 중복되는 코드를 수정하고 삭제해야 할 유지보수가 어려운 코드가 된다.

또 작은 단위의 수정이나 추가에도 전체적인 테스트가 필요함으로 테스트 비용 증가와 버그 검출이 어렵다.

 

하지만 TDD 방법을 쓴다면?

 

TDD 방법은 일반적인 개발 방식과 다르게 테스트 코드를 작성한 뒤에 코드를 작성을 한다는 것이다. 

무엇을 어떻게 어떤 식으로 작성을 하고 테스트를 해야 할지에 대한 정의가 있다는 것이 가장 큰 차이이다. 

TDD는 테스트를 통과한 후에 코드를 작성하기 때문에 코드의 수정이나 추가에도 코드를 작성하기 효율적이다. 

 

이러한 TDD 방법을 사용한다면 코드의 버그가 줄어들고, 소스 코드를 더 효율적이게 된다. 

또한 테스트 케이스를 통한 자연스러운 코드의 설계로 재설계할 시간이 크게 줄어들 것이다. 

 

TDD의 기대적인 효과와 단점


효과

1. 코드의 품질을 향상시킨다 ➡️ 테스트를 통한 오류와 버그를 찾고, 반복되는 테스트가 쉬워져 코드의 유지 관리가 편하다.

2. 빠른 개발이 가능하다 ➡️ 적응하는데 시간이 걸릴 수도 있지만, 장기적으로 보면 매우 효율적이고 빠른 개발이 가능하다.

3. 협업에 용이하다 ➡️ 일반적인 방식보다 테스트 코드를 통한 팀원들 간의 해당 코드에 대한 이해도가 높아진다.

 

단점

1. 초기의 투자 시간 ➡️ 테스트를 작성하기까지의 초기 시간이 필요하다. 생각이 난 그때 바로 적용하는 개발자는 단점이다.

2. 테스트 코드의 작성  ➡️ 처음 접하거나 많은 테스트 코드를 작성하기에 많은 어려움이 존재할 수도 있다.

 

 

 

 

느낀 점

처음에는 몰랐는데 알고 보면 정말 좋은 소프트웨어 개발론인 것 같다. 프로젝트할 때 테스트 코드나 프로젝트 초기에

테스트를 작성한 이유나 방법에 대해서 잘 몰랐는데 이번 블로그를 조사하면서 많이 알게 된 것 같다. 지금 당장은 테스트

코드를 작성하고 적용하기까지의 시간이 많이 걸리 수도 있을 것 같지만 나중에 기업에 들어가고 팀원 간의 TDD 방법을

적용하면 좋을 듯하다.