Landroid

TDD란? 짧고 간결하게 핵심만 보기 본문

방법론, 개발론

TDD란? 짧고 간결하게 핵심만 보기

silso 2021. 1. 4. 20:10

"테스트 주도 개발"

테스트 코드를 먼저 작성한 후, 구현 코드 작성 단계와 리팩토링 단계를 짧은 주기로 반복하여 개발하는

'테스트 주도 개발 방법론'

 

 

 

TDD 과정

 

  1. 테스트 작성 : 실패하는 테스트 코드를 작성한다.
  2. 개발 코드 작성 : 방금 실패한 테스트 코드를 통과하기 위해 코드를 작성한다.
  3. 테스트 통과 : 작성한 코드를 다시 테스트하여 테스트를 통과한다.
  4. 리팩토링 : 통과한 코드에서 불필요한 부분을 제거하고 가독성을 높여 코드를 개선한다.
  5. 반복

 


 

TDD를 사용하는 이유?

1. 객체지향적인 코드 생산

2. 개발, 테스트, 재설계, 디버깅 시간 단축(이건 사람마다 다르다.)

3. 기능 추가 개발에 용이함

 

+반대로 사용하지 않는 이유?)
생산성 저하로 우리는 그동안 개발 코드 먼저 테스트는 나중에 했지만

갑자기 테스트 먼저 하면 적응이 잘 안되고 오히려 코드가 전보다 더 엉망이 될 수 있다.

게다가 쉽지 않은 진입장벽에 이것을 실제 서비스 개발에서 적용하려면 위험부담이 커서

TDD를 꺼리는 사람도 적지 않다.

 

 


 

주의

Q1. 반드시 실패하는 테스트 코드를 작성해야 하나요?

 

A1. 무조건 실패하는 의미 없는 테스트 코드를 작성하는 것이 아니다. (1 + 1 = 1?)

실패하는 테스트 코드를 작성하는 이유는 처음부터 모든 테스트 케이스를 작성하는 것보다, 가장 먼저 구현할 기능 하나씩 작성하기 위해 실패하는 테스트 코드를 작성하는 것이다.

 

 

 

Q2. 개발 코드도 없이 처음부터 테스트 코드를 작성하려면 못하지 않나요?

 

A2. 테스트 코드 작성하고 나면 정의되어 있지 않다고 빨간 줄이 뜰 것이다.

그래서 테스트 코드 작성하다가 필요한 개발 코드가 있다면 최소한의 개발 코드를 작성한다. 

 

 

 

Q3. 리팩토링은 필수인가요?

 

A3. 물론 TDD는 방법론이기 때문에 무조건적으로 따라갈 필요는 없다.

특히 혼자 개발한다면 자기 편한 대로 개발해도 나쁠 것 없다.

하지만 리팩토링을 사용하는 것이 TDD의 장점을 최대로 끌어올릴 수 있으니

리팩토링을 안 한다면 TDD를 안 하는 것을 추천한다.

 

 

 

Q4. 리팩토링이 뭐예요?

A4. 그건 알아서 찾으시길;

 

 

 

Q5. 저거 언제까지 반복해야 하나요?

A5. 물론 우리도 사람이기 때문에 무한하게 반복하지 않는다. (무한히 반복하면 다음 기능 개발은 언제?)

따라서 최소한의 테스트 케이스 구상하고 그것들을 전부 통과할 때까지 반복해야 한다.

간단하게 전체적으로 테스트 케이스 수만큼 반복해야 한다.

 

Comments