일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- 메서드명
- Jenkins
- 블로그 병행
- 우테코
- B+TREE
- 프리코스
- N+1
- BalancedTree
- ci/cd
- 어댑티브 해시 인덱스
- 기능별 구조
- mysql
- jacoco
- 월간회고
- java
- 백기선 스터디
- 멀티쓰레드 프로그래밍
- db
- useQuery
- 계층별 구조
- 카카오 2차 코딩테스트
- useMutation
- 회고
- DeleteAll
- 클래스
- Blue-Green
- InnoDB 버퍼 풀
- SQL 실행순서
- 주간회고
- Today
- Total
Haneul's Blog
[Java] TDD란? 본문
TDD란?
TDD란 테스트 주도 개발인 Test-driven develoment를 줄인 말입니다. 이는 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나로 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성하고, 그 테스트 케이스를 통과하기 위한 코드를 생성합니다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링하는 짧은 사이클을 통해서 개발을 하는 방법론이라고 할 수 있습니다.
더 정확하게 말하자면 TDD는 Red, Green, Refactoring의 사이클로 개발을 하는 과정을 거치는데 자세한 것은 아래에서 설명하겠습니다.
Red, Green, Refactoring
위 그림을 보면 빨간줄, 초록줄, 파란줄이 보입니다.
빨간줄 즉, Red는 하려는 행위를 변수, 객체 메서드가 있다는 전제하에 코드를 작성하고, 테스트를 실행하고 실패합니다.
초록줄 즉, Green은 테스트를 통과시키기 위한 코드를 작성합니다.
파란줄 즉, Refactoring은 통과된 코드를 리팩토링합니다.
JUnit을 통한 TDD 예시
간단한 덧셈을 하는 기능을 TDD를 통해 만들어보겠습니다.
1. TDD의 Red 단계인 Test코드를 먼저 작성하기 위해 필요한 테스트코드 메서드를 작성합니다.
2. add 기능을 만들기 위한 테스트 코드를 작성하는데 필요한 클래스가 아직 생성이 되어 있지 않기 때문에 이에 대한 클래스를 만들어줍니다.
3. add 기능을 만들기 위한 메서드가 아직 생성되지 않았기 때문에 이에 대한 메서드를 만들어줍니다.
4. 아직 add 로직을 짜지 않았기 때문에 테스트를 해보면 실패가 나옵니다.
5. 테스트가 통과할 수 있도록 실제 로직을 작성합니다.
6. 테스트가 통과하는 것을 확인하고 리팩토링 할 필요가 있다면 하고 아니면 넘어가면 됩니다.
이러한 예시처럼 먼저 테스트를 작성하고 필요에 따라서 클래스나 메서드를 만들어주고 일부러 실패하는 테스트를 만들어줍니다. 그리고 테스트를 통과할 수 있도록 기능을 만들고 테스트를 통과하는 것을 확인하고 리팩토링이 필요하다면 하고 아니라면 다른 기능을 이 순서대로 또 만들어주는 과정을 거치는 것이 TDD라고 할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] 람다식 (0) | 2022.10.27 |
---|---|
[Java] 제네릭 (0) | 2022.10.26 |
[Java] I/O (0) | 2022.10.25 |
[Java] 애노테이션 (0) | 2022.10.24 |
[Java] Enum (0) | 2022.10.23 |