스프링 부트에서 테스트 코드를 작성하자

견고한 서비스를 만들고 싶은 개발자나 팀에서 TDD를 한다면 최소한 테스트 코드는 꼭❗ 작성한다.
대부분의 서비스 회사가 테스트 코드에 관해 요구하고 있다.
단위 테스트를 필수조건으로 두는 회사들도 종종 있다.
테스트 코드는 절대 빠질 수 없는 요소로 자리잡았다.
테스트 코드 작성의 기본을 배워보자.
테스트 코드 소개

❗️TDD와 단위테스트(Unit Test)는 다른 이야기다.
⚙️ TDD는 테스트가 주도하는 개발로 테스트 코드를 먼저 작성하는 것으로 시작한다.
⚙️ 단위테스트는 기능 단위의 테스트 코드를 작성하는 것. (리펙토링 미포함)
단위테스트를 배운후 TDD를 해보는 것이 좋다.
테스트 코드는 왜 작성해야할까❓
이론적으로는 아래와 같다.
- 개발단계 초기에 문제를 발견할 수 있도록 도와준다.
- 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 테스트 가능(회귀 테스트)
- 기능에 대한 불확실성 감소
- 단위테스트 자체가 문서로 사용될 수 있다.
1.
책에서 테스트를 배우기 전에 개발 방식은 아래와 같았다고 한다.
코드 작성 -> 프로그램(tomcat) 실행 -> postman과 같은 api 테스트 도구로 http 요청 -> 요청결과를 println으로 검증 -> 결과가 다르면 tomcat을 중지하고 코드 수정
코드를 수정할 때마다 프로그램 실행~코드수정 과정을 반복해야한다. 수십번씩 수정을 한다고 하면 톰캣을 재시작 시간 * n번 만큼 시간이 소요된다.
이는 테스트 코드가 없어 직접 수정된 기능을 확인해야 하기 때문에 톰캣을 재시작하는데 시간을 소요하는 것이다.
✏️ 학원에서 프로젝트 수행할때 톰캣을 계속 재시작해야하는게 좀 불편하다고 느꼈었는데 그것은 테스트 코드를 작성했다면 시간을 절약할 수 있는 일이었다!
2.
System.out.println()을 통해 눈으로 검증해야하는 문제 해결.
테스트 코드를 작성하면 더는 사람이 눈으로 검증하지 않아도 자동검증이 가능하다.
3.
개발자가 만든 기능을 안전하게 보호해준다.
B라는 기능을 추가하고 테스트가 잘되어 오픈했더니 기존에 잘되던 A기능에 문제가 생긴 경우, 이런 경우는 규모가 큰 서비스들에서 빈번하게 발생하는 일이다.
하나의 기능을 추가할 때마다 많은 자원이 들기 때문에 서비스의 모든 기능을 테스트 할 수 없다.
새로운 기능이 추가될때, 기존 기능이 잘 작동하는 것을 보장해주는 것이 테스트 코드의 역할이다.
테스트 코드 작성을 도와주는 프레임워크들 중 가장 대중적인 프레임워크로는 xUnit이 있다.
이는 개발환경(x)에 따라 Unit테스트를 도와주는 도구라고 생각하면된다.
JUnit - java / DBUnit - DB / cppUnit - C++ / NUnit - .net
이중에 JUnit을 사용하도록 하자. JUnit4를 사용하도록한다.
'Dev' 카테고리의 다른 글
| 롬복 소개 및 설치하기 (0) | 2023.09.14 |
|---|---|
| Hello Controller 테스트 코드 작성하기 (0) | 2023.09.12 |
| [GitHub] GitHub ReadMe 꾸미기 (0) | 2023.07.22 |
| 인텔리제이에서 깃과 깃허브 사용하기 (0) | 2023.07.20 |
| Gradle 프로젝트를 Spring boot 프로젝트로 변경하기 (0) | 2023.07.18 |