TDD( Test-Driven- Development )

최형택·2022년 4월 11일
0

1. TDD란

테스트(test) 주도적인(driven) 개발(developkment)
'테스트가 개발을 이끌어나간다' 입니다.

2.왜 tdd를 적용해야할까

2-1 방식

일반 개발방식
1단계 : 계획 및 설계
2단계 : 코드 개발
3단계 : 테스트
4단계 : 배포

TDD 개발방식
일반개발방식과 마찬가지로 처음과 끝은(1단계와 4단계) 똑같지만 실패테스트를 작성하고 테스트 코드를 성공하기 위한 코드를 작성한다는 것입니다.

Red 단계에서는 실패하는 테스트 코드를 먼저 작성합니다.
Green 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성합니다. Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행합니다.

좀더 세분화한 도표를 본다면

실패될법한 코드 작성 -> 테스트 -> 실패시 코드수정 or 성공시 리팩토링 진행 -> 실패코드인경우 다시 테스트 or 성공한 코드일경우 중복코드제거 및 일반화 코드생성

2-2 장점

  1. 피드백
    TDD를 하면 피드백이 증가합니다.
    테스트를 통과하는 것으로 잘되고 있는가를 자주 확인할 수 있습니다.
  1. 협력
    남이 짠 코드를 쉽고 빠르게 이해할 수 있다.
    즉, 왜 이렇게 짰을까 궁금할 때 ‘test’를 공유하고 그 테스트 코드를 보면 이해할 수 있습니다.
    테스트 코드에는 개발자의 개발 과정(어떤 고민/어떤 의사결정)이 나와있기 때문입니다.
    앞의 TDD의 정의(결정(decision)과 피드백(feedback) 사이의 갭을 인식하는 것)와 같이 테스트 코드(feedback)를 보면 그 사람의 의사결정(decision)이 나타나고 상대방은 그 부분은 왜 그렇게 짰는지를 쉽고 빨리 알게 되기 때문에 협력이 증진됩니다.
  1. 객체 지향적인 코드 생산

TDD는 코드의 재사용성을 보장하게 만들기에 TDD를 통한 소프트웨어 개발 시 기능 별로 철처하게 모듈화가 이루어집니다. 기능별로 모듈화가 되기 때문에 종속성과 의존성이 낮은 모듈로 조합된 소프트웨어 개발이 가능하고 필요에 따라 모듈을 추가하거나 제거해도 소프트웨어 전체 구조에 영향을 주지 않습니다.

  1. 추가 구현의 용의함

추가 기능을 개발한다면 해당 기능이 기존 코드들에 어떠한 영향을 미칠지 모르기 때문에 모든 기능들을 처음부터 테스트 해야 될 것 같지만 TDD는 자동화된 유닛 테스팅을 전재하기에 테스트 기간을 단축시킬 수 있습니다.

  1. 디버깅 시간의 단축

3. tdd의 적용

TDD를 적용해야할 대표적인 상황들
처음해보는 프로젝트의 주제
고객의 요구조건이 얼마든지 바뀔 수 있는 프로젝트
개발하는 사람과 유지보수하는 사람이 서로 다른 사람일 때
즉, 불확실성이 높을 때 TDD를 진행하면 됩니다

참고: https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/

https://velog.io/@xortm854/TDD%EB%A5%BC-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90-1%ED%8E%B8TDD%EB%9E%80Test-Driven-Development

https://gmlwjd9405.github.io/2018/06/03/agile-tdd.html

0개의 댓글