1. TDD (Test-Driven Development, 테스트 주도 개발)
정의: 코드를 작성하기 전에 테스트 코드를 먼저 작성하고, 그 테스트를 통과하는 최소한의 코드를 작성하는 반복적인 개발 방식입니다.
프로세스:
- 테스트 작성: 실패할 수밖에 없는 테스트를 먼저 작성합니다.
- 코드 작성: 테스트를 통과하기 위해 필요한 최소한의 코드를 작성합니다.
- 리팩토링: 코드와 테스트를 개선하고 최적화합니다.
장점:
- 버그를 초기에 발견할 가능성이 높아짐.
- 테스트가 자동화되어 유지보수가 용이함.
- 요구사항이 코드로 명시적으로 표현됨.
단점:
- 초기 작성 시간이 오래 걸릴 수 있음.
- 테스트 케이스 작성이 어려울 수 있음.
2. EDD (Example-Driven Development, 예제 기반 개발)
정의: 예제를 기반으로 코드를 작성하며, 시스템이 특정 상황에서 어떻게 동작해야 하는지 명확히 정의하는 방식입니다.
EDD의 특징:
- 실제 사례나 예제 데이터를 먼저 정의하고, 이를 기준으로 코드를 작성합니다.
- **Behavior-Driven Development(BDD)**와 유사하게 행동과 요구사항에 초점을 맞춥니다.
장점:
- 요구사항을 구체적으로 정의하고 공유하기 쉽습니다.
- 예제가 명확한 가이드라인이 되어, 개발자가 코드 작성 시 참고할 수 있습니다.
- 이해관계자(비개발자)와도 소통이 원활해짐.
단점:
- 예제를 설계하는 데 시간이 걸릴 수 있음.
- 복잡한 시스템에서는 모든 예제를 작성하기 어렵거나 누락 가능성이 있음.
TDD와 EDD의 차이점
특징TDDEDD
초점 | 테스트 케이스 | 예제 및 요구사항 |
목적 | 코드가 올바르게 동작하는지 확인 | 요구사항을 충족시키는 코드 작성 |
대상 | 주로 개발자 | 개발자 + 비개발자 |
표현 방식 | 코드(테스트 케이스) | 예제(시나리오 또는 데이터) |