티스토리 뷰

개발 방식 연구/TDD

TDD [1]

kkoon9 2022. 1. 25. 23:06

TDD란 프로그램 작성보다 테스트 코드를 먼저 작성하는 개발 방법론이다.

TDD의 목표

작동하는 깔끔한 코드

TDD의 원칙

  1. 자동화된 테스트가 실패한 경우만 새로운 코드를 작성한다.
  2. ⇒ 이미 작성된 코드를 변경하지 말라는 뜻에서 있는 원칙
  3. 중복을 제거한다.
  4. ⇒ 리팩토링의 개선이 있다는 의미
  5. 실패하는 테스트를 작성하기 전엔 코드를 작성하지 않는다.
  6. 실패하는 테스트 코드를 한 번에 하나 이상 작성하지 않는다.
  7. ⇒ 하나의 코드는 하나의 상황에만 적용된다는 의미
  8. 실패하는 테스트를 통과하기에 충분한 정도를 넘어서는 코드를 작성하지 않는다.
  9. ⇒ 과하게 (x) ex) 곱하기 테스트 코드에는 곱하기 기능만 수행(제곱, 세제곱 등을 포함하지 말라)

TDD 개발 방법론 flow

  1. 실패하는 테스트 코드 작성
  2. (실패하는 테스트 코드 실패 시) 성공하게 하는 본 코드(main) 작성
  3. (실패하는 테스트 코드 성공 시) 테스트 코드 리팩토링 실시

TDD의 장점

  • 코드의 유지보수가 용이해진다.
  • 소스코드의 기록이 된다.
  • 프로그래밍 시간(유지보수를 포함한 개발 라이프 사이클)이 단축된다.

TDD의 단점

  • 프로그래밍(단순 개발 시간) 시간이 길어진다.

즉, 굳이 단점을 뽑자면 개발 시간이 길어지지만 전체적인 개발 라이프 사이클 시간은 단축시킬 수 있다.

🐻  TDD를 통해 버그나는 부분을 최대한 줄여나가므로 유지보수 시간을 단축하는 것에서 오는 프로그래밍 시간을 단축한다고 하는 듯하다.

 

테스트 종류

1. 단위 테스트

  • 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 테스트
  • F.I.R.S.T 원칙을 따른다.
    • Fast(빠르고)
    • Independent / Isolated(독립적이고)
    • Repeatable(반복이 가능하고)
    • Self Validating(자가검증이 가능해야 하고)
    • Timely(적절한 시기에 적용해야 하는)

2. 통합 테스트

  • 단위 테스트 이후 모듈들의 상호작용이 제대로 이루어지는지 검증하는 테스트

TDD 적용하기

  1. 테스트 코드를 추가한다.
  2. 모든 테스트를 실행하고 새로 추가한 것이 실패하는지 확인한다.
  3. 코드를 조금 변경한다.
  4. 모든 테스트를 실행하고 전부 성공하는지 확인한다.
  5. 리팩토링을 통해 중복을 제거한다.

'개발 방식 연구 > TDD' 카테고리의 다른 글

TDD 관련 글 정리  (0) 2022.02.13
AssertJ  (0) 2022.01.29
AssertJ vs. JUnit  (0) 2022.01.26
TDD [3]  (0) 2022.01.25
TDD [2]  (0) 2022.01.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함