TDD

정태경·2022년 1월 30일
2

TDD

목록 보기
1/10
post-thumbnail

TDD 란?

Test Driven Development (TDD)은 개발이 이루어진 다음 그것이 계획대로 잘 완성되었는지 테스트 케이스를 작성하고 테스트하는 타 방식과는 달리, 테스트 케이스를 먼저 작성한 다음 테스트 케이스에 맞추어 실제 개발 단계로 이행하는 개발방법론을 말한다.

TDD 절차

실패 (Red)

실패하는 테스트 케이스를 먼저 만든다. 실패하는 테스트 케이스를 만들 때는 프로젝트 전체 기능에 대하여 모든 테스트 케이스를 작성하는 것이 아니다. 가장 먼저 구현할 기능의 테스트 케이스를 작성한다.

성공 (Green)

실패한 테스트 케이스를 통과시키기 위하여 코드를 작성하여 테스트를 통과시킨다.

리팩토링 (Refactor)

구현한 코드에 중복이 있거나, 개선할 수 있다면 리팩토링을 진행한다. 리팩토링을 진행하고 나서도 테스트 케이스가 성공하는지 확인한 후 다시 실패(Red)로 돌아가서 다른 기능 구현을 위한 테스트 케이스를 작성한다.

TDD의 장점은?

TDD는 개발하는 과정에서 테스트를 내포하고 있기 때문에 코드 작성 단계에서 버그를 줄여나갈 수 있다. 또한 TDD에 사용할 단위테스트를 실행하기 위해 기능을 아주 작은 단위의 함수로 쪼개게 되는데, 이로 인해 종속성과 의존성이 낮은 모듈로 조합된 코드를 만들게 된다.

TDD의 단점은?

TDD는 분명 좋은 품질의 코드를 만들 수 있는 방법론이지만 코드의 생산성이 크게 저하된다. 비즈니스 로직, 각종 코드 디자인에도 많은 시간이 소요되는데 테스트 코드까지 작성하기란 벅찬일 일수있다. 코드 품질보다는 빠른 생산성이 요구되는 상황에서 TDD는 걸림돌이 될 수 있다.

또한 진입 장벽이 존재한다. 어떤 부분을 테스트해야 할지, 어떻게 테스트해야 할지, 어떤 프레임워크를 써야 할지 등 여러 부분에 대한 학습이 필요하고 적응하는 데 시간이 소요된다.

profile
現 두나무 업비트 QA 엔지니어, 前 마이리얼트립 TQA 엔지니어

1개의 댓글

comment-user-thumbnail
2022년 3월 18일

좋은 정보 감사해요~! 테스트에 필요한 프레임워크는 대표적으로 뭐가 있을까요?

답글 달기