TDD
TDD란
TDD란 'Test Driven Development'의 약자로 번역하면 '테스트 주도 개발'이라고 한다.
기존의 개발과정을 보면
아래 그림과 같은 절차를 따른다.
코드를 먼저 작성한 후 테스트를 거쳐 통과한다면 배포하는 방식이다.
그러나 TDD는 코드개발 이전에 테스트코드를 작성한 후 실제 코드를 작성한다.
아주 작은 단위테스트를 먼저 작성한 후 다양한 테스트를 모두 통과하면 실제 코드개발로 들어가게 된다.
기존의 방식과 비교해 봤을 때 리팩토링이 필요한경우 거쳐야 할 과정이 줄어든 것을 볼 수 있다.
개발주기
TDD는 위와 같은 개발주기를 갖는다.
RED 단계에선 테스트 케이스에 실패하는 코드를 작성한다.
GREEN단계에선 위에서 실패한 테스트케이스를 통과할 코드를 작성한다.
REFACTOR단계에선 중복된 코드제거, 일반화 등 코드를 깔끔히 개선한다.
이런 과정을 반복하며 개발을 진행한다.
장점
1. 설계를 튼튼히 할 수있다.
테스트코드를 먼저 작성해야하므로 무엇을 개발하고 진행할지 미리 설계를 분명히 해두고 시작해야한다.
2. 코드의 유지보수가 용이해지고 디버깅이 쉽다.
처음 부터 버그나 예외사항을 다 잡고 시작하기 때문에 리팩토링이 편하게 이루어질 수 있다.
3. 프로그래밍 시간이 단축될 수 있다.
테스트코드를 작성해뒀기 때문에 디버깅시간, 리팩토링시간이 단축되기 때문에 시간을 단축할 수 있다.
단점
TDD방식에 익숙하지 않다면 테스트코드 작성에만 많은 시간이 투자되어
총 개발시간이 길어질 수 있다.
그러나 TDD 개발에 익숙해지고 장기적으로 본다면 장점 3번에서 말했듯이
디버깅시간이나 리팩토링 시간을 줄일 수 있어 큰 단점이라고 볼 수는 없다.
언제?
개발 도중에 코드의 변경이 많을 것이라고 예상되는 경우에 좋다.
자신이 처음 작성해야하는 프로그램이나 까다로운 클라이언트를 만났거나
프로그램 자체가 수정이 많이 필요한 경우 등이 있을 수 있다.
'공부 일지 > CS공부' 카테고리의 다른 글
웹소켓과 SSE (0) | 2023.02.11 |
---|---|
프로세스와 스레드 (0) | 2023.01.27 |
TCP/IP 4계층 모델 (0) | 2022.12.24 |
네트워크 기초 (0) | 2022.12.20 |
프로그래밍 패러다임 (0) | 2022.12.19 |