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) 는 계속 수정/업데이트 된다. (완료 / 미완료 등 분류도 하고)
=========================================================