TDD(Test-driven Development)
TDD 란?
- 코드를 작성하기 전에 테스트를 쓰는 소프트웨어 개발 방법론
- 작은 단위의 테스트 케이스를 작성하고, 이를 통과하는 코드를 작성하는 과정을 반복하며 개발하는 방법
TDD를 사용하는 이유
- 코드를 작성하기에 앞서 테스트 코드를 먼저 작성해야 하기 때문에 시간이 오래 걸리는 것처럼 느껴지지만, 오히려 예상하지 못했던 버그를 줄여 소요 시간을 줄일 수 있기 때문임.
반대로 ‘TDD 는 죽었다’는 칼럼도 있긴 함.
BDD(Behaivior-Driven Development)
- TDD 에서 파생된 개발 방법론으로, 개발자와 비개발자 간의 협업 과정을 녹여낸 방법
- 사용자의 행위를 작성하고 결과 검증을 진행
- BDD 로 테스트 코드를 작성함에 따라 설계 역시 행위의 중심이 되는 도메인 기반 설계가 됨
- BDD 는 기획서 내용을 그대로 반영 가능함.
- Given(사용자의 행위가 이루어지는 상황), When(사용자의 행위가 이루어졌을 때), Then(사용자의 행위가 이루어진 후의 액션) 시나리오를 기본으로 함
- 기획서를 통한 Test Case 작성으로 작성에 대한 비용 감소
- TDD 보다 더 넓은 테스트 커버리지 확보 가능
- 설계 변경에 따른 리스크 최소화 가능
- 서비스의 이해도 증가
TDD 와 BDD 의 차이점
- 테스트의 목적이 모듈이 의도대로 동작하는 것인지, 사용자의 목적에 부합하도록 동작하는지 확인하는 것인지가 다름.
- 상호 보완적인 관계임!
- BDD 에서는 설계 누락, 설계 변경 등에 빠른 대응이 가능함(재설계 시 코드 작성 전이라 비용 리스크가 적음)
🔗️ 참고 자료 :