호랑이 개발일기
TDD, BDD, DDD, 테스트 주도 개발 개념 및 차이 본문
728x90
TDD (Test-Driven-Development)
: 테스트 주도 개발 말 그대로 테스트가 주도하는 개발
- 매우 짧은 개발 서클의 반복을 갖는 소프트웨어 개발 프로세스
- 새로운 기능에 대한 자동화된 테스트케이스를 작성하고
해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성
(실패하는 테스트 케이스를 먼저 작성한 후에 개발을 진행한다!) - 일단 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링
장단점
- 개발하다 꼬여도 테스팅을 돌려봄으로써 안심하고 진행할 수 있음
- 보다 객체지향적이고 확장 가능이 용이한 코드, 재설계의 시간을 단축시킬 수 있는 코드, 디버깅 시간이 단축되는 코드
- 코드량이 늘기 때문에 빠른 생산성이 요구되는 시점에서 TDD는 큰 걸림돌일 수 있음
진행 과정
- 테스트 코드 작성하기
앞서 말했던 것처럼 TDD는 테스트 주도 개발이기 때문에 구현해야할 부분을 코드를 먼저 작성해야 한다. - 테스트 코드를 실행하기
먼저 작성한 테스트 코드가 실패하는 지 확인해야 한다.
만약 이 테스트가 성공한다면 구현하지도 않은 부분의 코드의 테스트가 성공했다는 뜻이므로 버그를 찾아야 한다. - 실패한 테스트 코드를 성공시키기 위한 최소한의 코드 구현하기
본인이 먼저 작성한 테스트 코드에 따라서 코드를 작성 - 코드 리팩토링
필요에 따라서 구조적으로 잘못된 부분을 수정하면 된다.
BDD (Behavior-Driven-Development)
: 행동주도 개발 비즈니스 요구사항에 집중하여 테스트 케이스를 개발
- TDD를 근간으로 파생된 개발 프로세스
- TDD와 거의 유사하긴 하지만, 차이가 있다면 TDD는 테스트 자체에 집중해 개발하는 방면,
BDD는 비즈니스 요구사항에 집중하여 테스트 케이스를 개발한다 - 테스트 케이스 자체가 요구사양이 되도록 하는 개발 방식
- TDD 를 결합해 시나리오 테스트까지 하는것
- 시나리오는 어디서부터 테스트를 시작할지, 어떤 것을 테스트하고 어떤 것을 하지 않을지,
한 번에 얼마만큼을 테스트할지, 테스트에 어떤 이름을 붙일지, 테스트가 왜 실패했는지 등에 대한 고민을 해결해줌 - 메소드 이름을 "이 클래스가 어떤 행위를 해야한다(should do something)" 라는 식의 문장으로 작성해 "행위"를 위한 테스트에 집중
DDD (Domain-Driven-Development)
: 도메인 주도 개발 순수한 도메인의 모델과 로직에 집중하는것
- 일반적으로 많이 사용하는 데이터 중심의 접근법 X -> 순수한 도메인의 모델과 로직에 집중하는것
- 보편적인 언어의 사용을 추구 (유비쿼터스 언어)
- 상호가 이해할 수 있고 모든 문서와 코드가 동일한 표현과 단어로 구성되게 제작
- 분석 작업과 설계 그리고 구현까지 통일된 방식으로 커뮤니케이션 가능
- 도메인 모델부터 코드까지 항상 함께 움직이는 구조의 모델을 지향
728x90
'Dev' 카테고리의 다른 글
저와 함께할 "개발자" 를 구합니다 (5) | 2023.08.07 |
---|---|
Windows 명령 프롬프트(cmd)에서 ls, clear 명령어 사용하는 방법 (0) | 2023.06.17 |
Comments