Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- baekjoon
- C++
- 알고리즘 #코딩테스트 #프로그래머스 #C++ #vector #string
- 프로그래머스
- 코딩테스트
- spring
- rombok
- SpringDataJPA
- JPA autiding
- SpringBean
- 알고리즘
- 해싱
- testcode
- tdo
- Java
- index.html
- DynamicProgramming
- Gradle
- JPA
- SpringSecurity
- mustache
- SpringFramework
- springboot
- test case
- TDD
- kotlin
- Comparable
- API
- gitignore
- DB
Archives
- Today
- Total
천천히, 한결같이
[Spring] TDD, 테스트 케이스란? 본문
이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스책을 공부하며 정리한 내용입니다. 틀린 정보가 있을 수 있으니 주의하시고 댓글로 남겨주시길 바랍니다.
TDD란?
TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 합니다.
테스트 주도 개발(TDD)는 [그림2]와 같이 테스트 케이스를 먼저 작성한 후 실제 코드를 개발하여 리펙도링하는 절차를 말합니다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는 것을 말합니다.
단위 테스트란?
TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미합니다. TDD와는 다르게 순수하게 테스트 코드를 작성하는 것을 의미합니다.
응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트라고 이해라고 보시면 됩니다.
프로그래밍 언어마다 단위 테스트에서 사용하는 프레임워크가 다른데, Java에서는 주로 JUnit
을 사용해서 테스트합니다.
TDD 개발 주기
위의 그림은 TDD의 개발주기를 표현한 것입니다.
- RED : 항상 실패하는 테스트를 먼저 작성하고
- GREEN : 테스트가 통과하는 프로덕션 코드를 작성하고
- REFACTOR : 테스트가 통과하면 프로덕션 코드를 리팩토링합니다.
중요한 것은 실패하는 테스트 코드를 작성할 때까지 실제 코드를 작성하지 않는 것과, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성하는 것입니다. 이를 통해 불필요한 설계를 피할 수 있고 정확한 요구 사항에 집중할 수 있습니다.
테스트 코드의 장점
- 빠른 피드백
- Spring을 예로 들어서, 코드를 여러 번 수정할 때 마다 실행 결과를 확인하기 위해서 톰캣을 내렸다가 다시 실행을 해야 합니다. 눈과 손으로 직접 수정된 기능을 확인할 수 밖에 없기 때문입니다. 또한 톰캣을 켜고 끄는 과정이 반복된다면 피드백이 느려질 수 밖에 없을 것입니다. 만약 테스트 코드를 사용한다면 이러한 문제가 해결되기 때문에 빠른 피드백이 가능합니다.
- System.out.Println()을 통한 검증 문제 해결
- 대부분의 소프트웨어에서 눈으로 간단한 문제의 해결을 검증하기 위해서 콘솔창에 출력하는 기능을 많이 사용합니다. 하지만 테스트 케이스들을 사용해서 문제의 해결을 검증한다면 굳이 수동으로 검증을 하지 않아도 자동 검증이 가능케 되어 편하게 문제의 해결 검증이 가능합니다.
- 개발자가 만든 기능을 안전하게 보호
- 프로젝트의 규모가 크다고 가정했을 때, 기존 기능이 잘 작동되는 것을 보장해 주는 역할을 할 수 있습니다. A라는 기존 기능에 기본 기능을 비롯해 여러 경우를 모두 테스트 케이스를 통해 구현해 놓았다면 테스트 코드의 수행만으로 문제를 조기에 찾을 수 있습니다.
'Spring' 카테고리의 다른 글
[Spring] API 생성하기(1) (0) | 2021.12.29 |
---|---|
[Spring] 프로젝트에 Spring Data JPA 적용하고 테스트 코드 작성하기 (0) | 2021.12.27 |
[Spring] DTO와 롬복 만들고 적용하기 (0) | 2021.12.26 |
[Spring] 컨트롤러 생성하고 테스트 코드로 검증하기 (0) | 2021.12.25 |
[Spring] Gradle 프로젝트를 SpringBoot 프로젝트로 변경하기 (0) | 2021.12.23 |
Comments