2013. 8. 18. 10:05

TDD는 Test Driven Development 의 약자이다. 우리나라 말로 하면 테스트 주도 개발이라는 뜻이다. 지금까지의 개발 방식과 다르게, 테스트할 코드를 먼저 작성하고 코드를 개발하는 다소 특이한 개발 방법이다.

 

기존 개발 절차

디자인 -> 개발 -> 테스트

TDD의 개발 절차

테스트, 스크립트 개발 -> 개발 -> 리팩토링

 

TDD 를 실무 적용하지 못하는 이유는 시간적 여유입니다. 언제 테스트 스크립트를 만들고 개발하냐는 것이죠.

 

"단지 개발하면서 테스트 스크립트를 만들었고 게다가 리팩토링까지 수행했다면, TDD를 적용했다고 할 수 있는 것이다. 그리고 테스트 스크립트를 코드와 같이 작성하고 오류를 점검한다는 개념 자체가 중요한 것이다."


출저:http://sangjjang.tistory.com/175




Test the program before you wirte it.                 

-Kent Beck

 

 

 

TDD란 뭘까?

 

XP(eXtream Programming) 창시자 중 한명이며, TDD를 주도한 켄드 벡은 TDD를 소개한 자신의 책에서 "프로그램을 작성하기 전에 테스트를 먼저 작성하는 것" 이라고 테스트 주도 개발을 정의했다.

 

 

"업무 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것!"

 

 

 

잘 동작하는 깔끔한 코드

 Clean code theat works  - Ron Jeffries

 

 

우리가 TDD라는 방식을 통해 얻고자 하는 최종 목적은 '잘 동작하는 깔끔한 코드' 이다.

 

이는 일반적인 소프트웨어 개발의 목표와 별반 다르지 않다. 다만 TDD에선 정상적으로 동작하는 코드만을 목표로 삼지 않고, 작성된 코드도 명확한 의미를 전달할 수 있게 작성되어야 한다고 말한다. 즉, '제대로 동작함(works)'뿐 아니라 '깔끔함(clean)'까지도 동등한 수준의 개발 목표로 삼는다는 점이 일반적인 개발 방식과 다르다. 이 차이점은 소프트웨어의 품질을 비롯한 유지 보수의 편의성, 가독성, 그리고 그에 따른 소프트웨어의 비용과 안정성 등 여러 가지 측면의 의미를 내포한다. 따라서 이 책의 나머지 부분 전반에 걸쳐 TDD를 사용하 어떻게 해면 '깔끔하고 잘 동작하는 코드'를 얻을 수 있는지를 이야기할 것이다. 

 

 

 

테스트 주도 개발의 진행 방식

 

ㅁ질문(ASK) : 테스트 작성을 통해 시스템에 질문한다.(테스트 수행 결과는 실패)

 

ㅁ응답(Respond): 테스트를 통과하는 코드를 작성해서 질문에 대답한다.(테스트 성공)

 

ㅁ정제(Refine): 아이디어를 통합하고, 불필요한 것은 제거하고, 모호한 거승ㄴ 명확히 해서 대답을 정제한다(리펙토링)

 

ㅁ반복(Repeat): 다음 질문을 통해 대화를 계속 진행한다.


출저: http://blog.naver.com/hero1014?Redirect=Log&logNo=20184110933


'2019년 이전 정리 > TDD' 카테고리의 다른 글

TDD 프로젝트 적용  (0) 2013.08.18
Posted by hoonihoon