일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DP
- 스프링
- BFS
- 그래프
- 프로젝트
- 자료구조
- 코틀린
- TDD
- 네트워크
- back-end
- algorithm
- lambda
- 프로그래머스
- kotlin
- Java8
- 알고리즘
- baekjoon
- LEVEL2
- OS
- programmers
- 백트래킹
- 백준
- Spring
- backtracking
- 자바
- 운영체제
- java
- 모던자바
- Brute-force
- DFS
- Today
- Total
요깨비's LAB
[Spring Boot, Back-End] 3. Test Driven Development 본문
[Spring Boot, Back-End] 3. Test Driven Development
요깨비 2019. 12. 30. 18:071. TDD(테스트 주도 개발/목표 주도 개발)
우리가 목표를 달성했는지 어떻게 알수 있죠? 네. 바로 테스트를 해보는 겁니다.
이 테스트를 통과하면 목표를 달성한 것이고, 통과하지 못하면 목표를 달성하지 못한 것이죠.
그리고 우리가 테스트를 하려면 어떻게 해야하죠? 개발자가 아닌 사용자의 입장에서 사용해봐야 하죠?
그래서 사용자 중심 개발이기도 합니다.
우리가 TDD를 하는 이유는 "올바르게 작동하는 깔끔한 코드를 만들기 위해" 입니다.
그렇다면 이것을 어떻게 실천할 수 있을까요?
우선 올바르게 작동하도록 코드를 만듭니다. 그리고 이거를 깔끔하게 작동하는 코드가 되도록 Refactoring을 해줍니다.
리펙토링은 작동하는 로직은 그대로 두면서 내부 구현을 바꾸는 것을 의미합니다. 이것을 위해
올바르게 작동한다는 것을 보장해 줄 수 있는 Test Code가 필요합니다.
그리고 이 테스트 코드를 가장 먼저 작성하자는 것이 바로 TDD입니다.
2. TDD의 세가지 과정
TDD에는 세가지 과정을 거쳐서 진행됩니다.
-
Red(실패하는 테스트): 우리는 어떠한 결과를 기대하고 일단 테스트 코드를 작성합니다.
예를 들어, 1과 1을 더해서 2를 반환해주는 함수 Add를 만든다고 할때, 우리는 일단 테스트 코드로 Add(1,1)이라고 작성합니다. 하지만 Add라는 함수를 만들지 않았기 때문에 실패하게 됩니다. -
Green: 우리는 Add 함수를 만들고 이것이 무조건 2를 반환하게 해주었습니다. 하지만, 여기에
1과 3을 넣으면 4가 아닌 2가 반환되어 또 실패하게 되겠죠? -
Refactoring: 이제 우리는 리펙토링 단계로 와서 x와 y 파라미터를 받아와서 두 값을 더한 값을 반환하도록 리펙토링을 하면 내부 구현만 바뀌게 되겠죠?
예시가 너무 간단해서 오히려 불필요해보이지만 실무에서 복잡하고, 한번 실행할때 오래 걸리는 부분을 구현할 때
TDD는 강력하게 작동합니다.
코드는 앞으로 프로젝트를 진행하면서 실제 코드로 TDD를 적용하면서 익히도록 하겠습니다.
* TDD에 관련해서는 따로 카테고리를 빼서 만들 예정입니다.
'웹 개발 > 스프링 부트 프로젝트(레스토랑 예약)' 카테고리의 다른 글
[Spring Boot, Back-End] 번외. 의존성 주입 (0) | 2020.01.07 |
---|---|
[Spring Boot, Back-End] 5. 가게 상세 구현 (0) | 2020.01.07 |
[Spring Boot, Back-End] 4. 가게 목록 구현 (0) | 2019.12.30 |
[Spring Boot, Back-End] 2. 프로젝트 시작 (0) | 2019.12.30 |
[Spring Boot, Back-End] 1. 어떻게 만들 것인가 (0) | 2019.12.30 |