TDD(Test Driven Development)

테스트 주도 개발 → 테스트 먼저 작성 후 테스트가 정상적으로 돌아갈 때 테스트 하면서 코드를 작성

BDD(Behavior Driven Development)

행동 주도 개발 → 테스트를 똑같이 작성하지만 행동 주도 개발이라는 용어처럼 사용자의 행위를 생각하면서 테스트를 작성

TDD와 BDD는 완전히 다른 것이 아니며 BDD 자체가 TDD의 한 종류로 테스트 위주의 개발을 하지만 좀 더 사용자의 행동을 생각하며 테스트를 개발하는 것이 BDD입니다.

실무에서 개발을 시작할 때 요구사항이나 기획서가 있는데 이에 맞춰서 테스트를 작성하게 되면 BDD가 됨.

TDD BDD
테스트 목적 기능 동작 검증 서비스 유저 시나리오 동작 검증
테스트 설계의 중심 모듈의 기능 중심 서비스 사용자 행위 중심
테스트 코드 설계 재료 개발자가 작성하는 모듈 사양 문서 서비스 기획자가 작성하는 서비스 기획서

BDD와 TDD는 상호 배타적인 관계가 아닌 상호 보완적인 관계로 모듈이나 API등을 검증할 때는 TDD로 검증하고 BDD를 이용해서 시나리오를 검증하면 좋습니다.

이렇게 하면 TDD로 인해서 설계 단계에서 예외 사항들을 처리할 수 있으며, BDD를 이용해서 누락된 시나리오를 검증할 수 있게 됩니다.

스크린샷 2024-01-09 오후 1.19.08.png

구현 주도 테스트에서는 위의 UI를 테스트할 때 주로 <p> 태그가 쓰였고 Edit 등의 문자로 들어갔다는 것을 테스트함, 그래서 만약 <p> 태그를 <h2>태그로 바꾸면 에러 발생

하지만 행동 주도 테스트에서는 사용자의 입장에서 테스트하기에 <p>태그가 쓰이던 <h3> 태그가 쓰여서, 글을 표현하는지가 중요한지 보다 어떤 이벤트를 발생시켰을 때 화면이 어떻게 변화하는지 테스트가 더 주가 됨