TDD(Test Driven Development)와 BDD(Behavior Driven Development) 의 정리를 할 기회가 있어 한번 정리를 해 보려 한다.

TDD(Test Driven Development)

  • 문제와 정답을 알고 있는 상태에서 풀이과정을 제로베이스로부터 “추가 및 보강” 을 해 나가는 방식이다.
  • TDD의 목적은 개발코드의 완성이다. (Verification이 아님)
  • TDD에서 사용되는 테스트는 보통 1개정도이다 (그 이상 될 수도 있음)
  • TDD를 위한 도구는 주로 테스트 프레임워크(xUnit시리즈 등)가 있다.

BDD(Behavior/Business Driven Development)

  • 문제와 풀이과정이 어느정도 나와 있는 상태에서 내가 작성한 풀이과정이 정말 다양한 비즈니스(또는 동작) 로직을 대응하는지 검증하면서 개발하는 방식이다.
  • BDD의 목적은 개발 결과의 검증(Verification)이다.
  • BDD 에서는 검증을 위해 다양한 시나리오가 나올 수 있다 (1개의 시나리오면 상당히 불충분 할 수 있다.)
  • BDD를 위한 도구는 비즈니스 룰 생성도구 및 테스트 케이스 생성도구등이 사용될 수 있다.

만약 개발자가 pyUnit등을 사용하여 자신의 코드 로직을 완성 후에 테스트 코드를 짰고 이를 돌렸다면 이는 TDD를 한게 아니다. 오히려 BDD에 더 가깝다고 봐야 한다. 코드의 완성 과정에서 테스트가 영향을 주지 않았기 때문이다.

내가 이렇게 별도로 글을 쓰는 이유는.. 주위에 가끔 테스트 프레임워크를 사용하는 것을 TDD로 강의를 하는 사람들을 보기 때문이다.


속지 말자!