[CleanCode & TDD] - 3, TDD

2021. 12. 4. 11:09카테고리 없음

Production Code

: 실제 배포되는 서비스 코드

Test Code

: 서비스 코드를 테스트하는 코드

 

TDD

단위테스트와 TDD는 엄연히 다르다.

Production Code를 만들고, 자동화된 단위테스트 를 추가할수 있으나,

TDD는 Production Code를 추가하기 전에, 단위 테스트를 먼저 추가함

: TFD ( Test First Development ) + 리팩토링

 

Test를 먼저 구현하는것도 중요하지만, 리팩토링이 정말 중요하다.

리펙토링 = 기능에대한 변경은 없으나, 클래스의 구조, 메스드 분리 등 설계활동이다.

 

설계를 한번에 몰아서 하는것이 아니라,

테스트 케이스하나를 추가하면 사이클 내에서 설계를 쪼개서 지속적으로 하는 과정

 

<Test Driven Development by Example, 켄트백>

- TDD란 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고 이를 제어하는 기술이다.

- TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD는 분석 기술이며, 설계 기술이기도 하다.

 

 1. To Do List 가 잘 정리되어 있어야한다.

- 요구 사항 분석을 잘해야한다.

- README 파일

To Do List가 없는 상태에서 TDD를 한다는 것은 앞이 안보이는 항해와 같다.

리팩토링 -> 설계와 관련된 부분도 있다. 

 

TDD를 하는 이유

- 디버깅 시간을 줄여준다.

- 동작하는 문서 역할을 한다.

- 변화에 대한 두려움을 줄여준다.

 

TDD Cycle

- Test fails

 : 실패하는 테스트를 만든다.

- Test passes

 : 실패하는 테스트를 패스시킨다.

- Refactor

 : Production Code와 더불어 Test Code도 같이 한다.

 

TDD 원칙

1. 실패하는 단위 테스트를 작성할 때까지 Production Code를 작성하지 않는다.

2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트를 작성하낟.

3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

 

-> 너무 많은 부분을 예측해서 진행하지 말고,

현재 테스트 케이스를 만족하는 수준으로만 Production Code 를 구현해야한다.

 

우리는 항상 좀 더 작은 단위로 쪼갤 수 없을까? 를 고민해야한다.

작은 단위를 연결하여 큰 단위를 구성해야한다.

 

 

 

ref

"클린코드는 왜 중요한가?" - youtube 박재성

https://edu.nextstep.camp/s/RFY359FE

 

플레이그라운드

 

edu.nextstep.camp

 

"daehwan2yo"   contact

software, soongsil univ  <  now

udsward@gmail.com  < email

https://github.com/daehwan2yo <    git

 

daehwan2yo - Overview

daehwan2yo has 15 repositories available. Follow their code on GitHub.

github.com