TDD와 BDD
[TDD
BDD
]
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로 강의를 하는 사람들을 보기 때문이다.