일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- mock
- 코드리뷰
- 프리코스
- 의존성
- 레벨2
- CircuitBreaker
- MSA
- 우아한세미나
- 서블릿
- REDIS
- 미션
- AOP
- 우테코
- Docker
- 자바
- AWS
- 트랜잭션
- Level2
- 세션
- JUnit5
- 프로그래머스
- yml
- HTTP
- 스프링 부트
- Spring Batch
- 스프링부트
- Paging
- JPA
- 우아한테크코스
Archives
- Today
- Total
늘
TDD, BDD, DDD 본문
728x90
TDD(Test Driven Development): 테스트 주도 개발
- 짧은 개발 서클을 반복하는 SW 개발 프로세스 중 하나이다.
- 자동화된 테스트 케이스를 먼저 작성한 후, 테스트 케이스를 통과하기 위한 최소한의 코드를 작성, 그 후 코드에 대한 리펙토링을 진행한다.
- 즉, 테스트 코드 작성-> 테스트 코드를 성공시키기 위한 최소한의 코드 구현-> 코드 리팩토링
특징
- 코드량이 많아지면 기능 별로 함수를 나누게 되는데 그 과정에서 테스트 코드가 중심을 잡아줄 수 있다.
- 개발하다 에러가 나도 테스트를 함으로써 금방 복구가 가능하다.
BDD(Behavior-Driven Development): 행동 주도 개발
- TDD에서 파생된 개념으로 BDD는 테스트 케이스 자체가 요구 사양이 되도록 개발하는 것이다.
- TDD와 BDD는 구분하기 모호한데, TDD는 테스트 케이스를 만드는 것에 집중한다면
- BDD는 비즈니스 요구사항에 집중을 한다.
DDD(Domian-Driven Development): 도메인 주도 개발
- 순수한 도메인의 모델과 로직에 집중한 개발방식
- 보편적인 언어의 사용을 추구하며 모든 사람이 이해할 수 있게 문서와 코드가 동일한 표현과 단어로 구성되게 만드는 것을 말한다.
- 분석 작업과 설계 그리고 구현까지 통일된 방식으로 도메인 모델부터 코드에 이르는 단계가 통일된 규칙을 이룬다.
이러한 개발을 하다 보면 넓은 의미에서 크게 2가지 유형의 버그가 있다.
- 시스템 충돌을 일으키는 원인
- 잘못된 결과를 보여주는 것
TDD가 첫 번째 유형의 버그를 완화하고 방지하는데 도움이 되고,
BDD 및 DDD를 사용하면 후자를 방지할 수 있다.
- TDD 예시
Test 예시이다. 원래 안 적으려고 했는데, 정말 바보 같은 삽질로 인해 혹시나 해서 적어둔다.
노트북이 작아서 캡처에는 잘렸는데 Test를 위해선 Junit4에서는 테스트 러너(Runner)를 확장하는 방법 중 하나로 @RunWith 애노테이션에 커스텀 테스트 러너를 설정해주는 방법이 있다. 하지만 Junit5가 되면서 @ExtendWith를 SpringBootTest 어노테이션이 안에서 이미 갖고 있기 때문에 따로 추가할 필요가 없다.
아 그리고 https://mvnrepository.com/artifact/junit/junit/4.12 메이븐 레포지에서 Junit 라이브러리를 추가하면 더 좋다!
Reference
728x90
'백앤드 개발일지' 카테고리의 다른 글
Swagger2 (0) | 2021.07.19 |
---|---|
GitLab 버전 관리와 협업 하면서 막혔던 부분 기록 일지 (0) | 2021.07.12 |
클린 코드란? (0) | 2021.06.29 |
CI와 CD 그리고 Jenkins? 어디서 들어는 봤는데... (0) | 2021.04.25 |
DTO? DAO? (0) | 2021.03.10 |
Comments