단위 테스트를 작성해야 하는 이유는 많다. 그 중에서 몇 가지만 살펴보고 넘어가자면 아래와 같다.
단위 테스트의 중요성
- 코드를 작성하고 수정 또는 추가할 때 오류가 어떤 곳에서 발생하는지 빠르게 찾아낼 수 있다.
- 오류를 빠르게 찾아낼 수도 있지만 다른 코드를 수정할 때 안정성을 갖고 진행할 수 있다.
- 코드 작성과 수정 그리고 유지, 종합적인 것을 생각했을 때 결과적으로 시간과 비용을 절감할 수 있다.
시간과 비용을 절약할 수 있다는데 어떤 부분에서인지 와닿지 않을 수 있다. 단위 테스트 코드를 작성하지 않았다면 개발이 끝난 후 통합 테스트를 진행하기 위해 애플리케이션을 실행해 수동으로 통합 테스트를 진행해야 한다. 통합 테스트는 캐시, 데이터베이스 등 다른 컴포넌트들과 연결하거나 추가적인 시간이 필요하게 된다. 테스트 코드를 거치지 않고 어떤 버그가 있을지 모르는 상황에서 수동으로 테스트를 진행한다면 수 없이 반복하고 발생하는 오류를 해결하기 위해 전체적으로 코드를 고쳐야할 최악의 상황을 마주할 수도 있다.
그래서 각 기능별 테스트 코드를 작성해 확인하고 개발하는 습관을 길러야 한다.
개선이 필요한 단위 테스트
- 가독성이 떨어지거나 이해가 어려운 테스트.
- 외부 리소스(데이터베이스, API등)에대한 종속성이 높은 코드.
- 다양한 입력 값을 고려하지 않는 케이스.
또 생각 해봐야할 것이 있다. 과연 위의 경우처럼 잘못 작성된 테스트는 없는게 낫나? -> 나의 답은 잘못된 테스트 코드라도 있는게 좋을것이다. 테스트 코드가 위의 경우처럼 이해가 어렵거나 범위가 한정적일 수 있지만 여전히 코드가 올바르게 작동한다는 어느 정도의 보증은 되기 때문이다. 그렇기에 보다 나은 테스트 코드를 작성하기 위해 노력해야 한다.
TDD가 뭔데?
테스트 주도 개발(Test-Driven Development, TDD)라고 이해하자. 풀어 말하자면 실제 코드를 작성하기 전에 테스트 코드를 먼저 작성한다는 뜻이다. TDD 접근 방식은 코드 품질을 개선하고 결함을 줄이며 보다 효율적이고 효과적인 개발 프로세스 구축을 목표한다. 테스트를 먼저 작성함으로써 개발자는 작성하는 코드가 예상 요구 사항을 충족하고 다양한 입력 값이 올바르게 작동하는지 확인할 수 있다. 이러한 방법은 개발 초기에 잠재적인 문제를 식별하는 데 도움이 되므로 문제를 더 쉽고 저렴하게 해결할 수 있을 것이다.
실패한 테스트 작성: 아직 코드에 구현되지 않은 특정 동작이나 기능을 확인하는 테스트를 작성한다.
테스트를 통과하는 가장 간단한 코드 작성: 테스트를 통과하는 데 필요한 최소한의 코드를 작성한다.
.코드 리팩터링: 코드를 리팩터링하며 모든 테스트를 계속 통과하게 하고 효율적, 유지 관리, 확장 가능하도록 만든다.
반복: 다른 실패한 테스트를 작성하고 이를 통과하기 위한 최소한의 코드를 작성한 후 리팩토링 반복.
'TIL' 카테고리의 다른 글
웹 사이트 CSRF공격과 XSS 공격 (0) | 2023.04.10 |
---|---|
포스트맨 이용한 카카오톡 로그인 테스트 - OAuth2 (0) | 2023.03.30 |
개발자는 협업이 왜 중요하다는 건데 ? (0) | 2023.03.27 |
SpringBoot DB 설계 - ERD 그리기 (0) | 2023.03.25 |
CI/CD 자동배포 (0) | 2023.03.23 |