본문 바로가기

Programming/SW Engineering , Architecture, etc.

TDD, TestDrivenDevelopment, 테스트 기반 개발, unit test, 단위테스트, 설계, TFD, TestFirstDevelopment, 테스트 우선 개발

 2021.04 우아한테크캠프 pro 프리코스 중 자바지기님의 TDD 관련 강의를 이해한대로 간략 정리

 

 

TDD -> Test code + Production code 로 이루어져 있다.

 

테스트 코드는 말그대로 테스트를 하기 위한 코드이고, 프로덕션 코드는 비지니스 등 로직 코드이다.

 

TDD는 단위테스트와는 다르다. TDD가 단위 테스트를 이용하는 큰 범주로 볼 수 있겠다.

 

TDD는 단위 테스트를 먼저 작성하고, 그에 맞게 역으로 프로덕션 코드를 작성하고, 리팩토링 하는 과정을 반복한다.

 

 

TDD는 테스트 기반이지만, 테스트기술 뿐만은 아니고 분석기술이면서 설계기술이다.

(테스트 + 분석 + 설계)

 

TDD를 잘하기 위해서는 요구사항을 잘 분석해서 TODO 리스트를 잘 만들어야 한다.

 

 

TDD를 하면 얻어지는 장점으로는

* 디버깅 시간이 줄어든다.

* 동작하는 document 역할을 한다.

* 변화에 대한 두려움을 줄일 수 있다.

 

 

Test fails -> Test passes -> Refactor  =>  이 세가지를 원형으로 반복 사이클로 가져간다.

(실패하는 테스트 구현) -> (성공하도록 프로덕션 코드 구현) -> (테스트코드와 프로덕션코드 리팩토링)  => 사이클

 

 

!! Over engineering 하지 않도록 생각하며 한다.

 

=========================================================

 

 위에 까지가 개론으로 볼 수 있고 아래는 구현에 대한 간략한 설명

 

MVC 모델을 간단히 많이 사용함 (Model + View + Controller)

* 대략적인 도메인 객체를 설계하는데,

 - 이 때 테스트가 쉬운 것과 테스트가 어려운 것을 분리하여 테스트가 쉬운 것에 대한 단위 테스트를 먼저 만들며 들어간다.

 - UI, DB 등 외부와 연결된 것들은 일단 제껴둔다.

 

* 기능목록 설계 (TODO list) 는 계속 수정/업데이트 된다. (완료 / 미완료 등 분류도 하고)

 

=========================================================