테스트 주도 개발 → 테스트 먼저 작성 후 테스트가 정상적으로 돌아갈 때 테스트 하면서 코드를 작성
행동 주도 개발 → 테스트를 똑같이 작성하지만 행동 주도 개발이라는 용어처럼 사용자의 행위를 생각하면서 테스트를 작성
TDD와 BDD는 완전히 다른 것이 아니며 BDD 자체가 TDD의 한 종류로 테스트 위주의 개발을 하지만 좀 더 사용자의 행동을 생각하며 테스트를 개발하는 것이 BDD입니다.
실무에서 개발을 시작할 때 요구사항이나 기획서가 있는데 이에 맞춰서 테스트를 작성하게 되면 BDD가 됨.
TDD | BDD | |
---|---|---|
테스트 목적 | 기능 동작 검증 | 서비스 유저 시나리오 동작 검증 |
테스트 설계의 중심 | 모듈의 기능 중심 | 서비스 사용자 행위 중심 |
테스트 코드 설계 재료 | 개발자가 작성하는 모듈 사양 문서 | 서비스 기획자가 작성하는 서비스 기획서 |
BDD와 TDD는 상호 배타적인 관계가 아닌 상호 보완적인 관계로 모듈이나 API등을 검증할 때는 TDD로 검증하고 BDD를 이용해서 시나리오를 검증하면 좋습니다.
이렇게 하면 TDD로 인해서 설계 단계에서 예외 사항들을 처리할 수 있으며, BDD를 이용해서 누락된 시나리오를 검증할 수 있게 됩니다.
구현 주도 테스트에서는 위의 UI를 테스트할 때 주로 <p>
태그가 쓰였고
Edit 등의 문자로 들어갔다는 것을 테스트함, 그래서 만약 <p>
태그를 <h2>
태그로 바꾸면 에러 발생
하지만 행동 주도 테스트에서는 사용자의 입장에서 테스트하기에 <p>
태그가 쓰이던 <h3>
태그가 쓰여서,
글을 표현하는지가 중요한지 보다 어떤 이벤트를 발생시켰을 때 화면이 어떻게 변화하는지 테스트가 더 주가 됨