TDD(Test-Driven-Development)
테스트 주도개발
장점
- 개발할때 주기적으로 테스트를 진행하며 개발하는 방식
- 실패해도 문제 없도록 테스트 케이스를 먼저 작성후 개발을 진행 (일단 실행만 되게 만들고 나중에 깔끔하게 고침)
- 주기적인 테스트로 인해 코드의 문제를 금방 알수있고 객체지향적이며 이를 토대로 확장에 용이하다
단점
- 테스트 코드를 넣음으로써 작성해야하는 코드량이 늘어기에 빠르게 생산이 필요한경우엔 기피된다.
- 모든 상황에 대해 테스트 코드를 작성해야 한다. (물건 장바구니에 넣었다 뺐다 10번 한뒤 테스트..)
BDD(Behavior-Driven-Development)
행동 주도 개발
- 요구사항에 집중하여 테스트를 개발 (TDD + 시나리오)
- TDD에 시나리오(가상의 사건) 개념을 더한것을 행동이라 칭하고 이를 기반으로 개발하는 방식 (테스트보단 비즈니스 요구사항에 집중하여 테스트 케이스를 개발)
- 메서드 이름을 "어떤 행위를 해야한다"라는 식의 문자로 작성해 행위(기능)를 위한 테스트에 집중
- Buisiness Requires과 end-user(최종 소비자) 관점에서개발을 진행하는 방식
- TDD가 테스트를 각 기능에 대해서만 테스트헀다면 BDD는 결합테스트 + 시나리오 테스트까지 확장하여 테스트 케이스를 진행하는것 (물건 3번쯤 장바구니에 넣고 뺏다가 홈화면 갔다온뒤 20분뒤 돌아와서 다시 구매할경우?...)
DDD(Domain-Driven-Development)
도메인 주도 개발
- 도메인 패턴을 중심으로 설계하는 방식
- 데이터 중심의 접근법이 아닌 순수 도메인의 모델과 로직에 집중
- 커뮤니케이션에서 분석, 설계, 구현까지 통일된 방식으로 협업하며 규칙이 동일한 통일된 방식으로 진행
(도메인 - 분야. 집합, 비즈니스영역이나 여기선 사건이 발생하는 집합이라 생각하면 이해가 쉽다.)
TDD | DDD | BDD | ||||
TDD | - | 사용자 중심 | 테스트 케이스 중심 | |||
DDD | 사용자 중심 | - | 비즈니스 로직 중심 | |||
BDD | 테스트 케이스 중심 | 비즈니스 로직 중심 | - |