[Onboarding] : 테스트 주도 개발

문승현·2022년 7월 6일
0

BeDev_1

목록 보기
7/7
post-thumbnail

테스트 주도 개발(TDD, Test Driven Development)은 아주 짧은 개발 사이클을 반복하는
애자일 소프트웨어 개발 프로세스 중 하나이다. 그렇다면 어떤 개발 사이클을 반복하는 것일까?
기존 개발 프로세스를 살펴보면 많은 경우 설계, 개발, 테스트 순으로 이루어진다.
테스트를 통과하지 못하면 설계를 수정하고 다시 개발을 진행하는 방식인 것이다.

그런데 테스트 주도 개발에서는 이 순서가 조금 다르다.
테스트 케이스를 먼저 작성하고 그 케이스를 통과하기 위한 최소한의 코드를 작성한다.
테스트가 실패할 경우 테스트를 통과하기 위해 코드를 개선한다. 성공한다면 코드를 리팩토링한다.
전체 코드를 작성하고 테스트를 진행하고 설계를 수정하는 것이 아니라
빠르게 테스트를 진행하고 설계를 수정함으로써 설계 수정 시간을 단축할 수 있다.

이외에도 테스트 주도 개발은 코드의 재사용을 보장하므로 개발 시 기능별 모듈화가 잘 이루어진다.
이는 의존성과 종속성이 낮은 모듈로 조합된 소프트웨어 개발을 가능하게 한다.
또한, 단위 테스트 기반의 테스트 코드를 작성하기 때문에 추후 문제가 발생하였을 때
각각의 모듈별로 테스트를 진행하다보니 문제점을 빠르게 찾을 수 있다.

이렇게 좋아보이는 테스트 주도 개발이지만 단점이 없는 것도 아닌 것 같다.
현실적으로 적용하기 어렵다는 이야기도 있고, 전체 개발 시간이 늘어난다는 이야기도 있다.
아직까지는 테스트 주도 개발이 언제나 옳은가?에 대해서는 의견이 분분한 것 같다.

나 역시 이번 과제를 진행하면서 설계, 개발, 테스트 순으로 진행하였다.
테스트 주도 개발이라는 것이 낯설고 어려웠기보다는 개발 자체가 아직은 익숙치 않아서였다.
그래도 테스트가 중요하다는 것은 어렴풋이 알고 있기에 조금 더 익숙해질 필요가 있을 것 같다.

0개의 댓글