postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다

2023. 10. 31. 20:55Project 해축갤/테스트 코드

728x90

매번 기능 만늘때마다 postman 띡 띡 딸깍 하며

기능 테스트 하는 게 너무나 귀찮습니다.

띡 띡 딸깍

'귀차니즘'이 많은 개발자냐고요?

네! 그거 잘못된 거 아니냐고요?

는 장난입니다만, 사실 진짜 알빠노이긴 합니다.

 

저는 귀찮은 일은 정말 질색입니다.

매번 기능, 코드 수정할 때 마다 일일히 postman 띡띡딸깍 하기 싫기도 하죠.

 

그리고 많은 사람들이 CI/CD 를 구축했다면서 테스트 없는 CI 를 구축한 경우를 여럿 봐왔는 데

사실 이건 CI 가 아니라고 생각합니다. 추후 생길 (사실 이미 매번 배포하다가 귀찮음을 겪어버리고)

CI/CD 구축을 위해서라도 테스트 코드를 작성해야 할 이유가 있죠.

 

그래서 이번 기회에 아얘 테스트 코드를 작성하기로 했습니다.

뭘 테스트 해야 하나?

결국 나는 어플리케이션을 테스트 하려고 하는 게 목적이니 다음과 같이 목표를 쪼개볼 수 있겠습니다.

  1. 어플리케이션의 기능이 제대로 동작하는 가?
  2. 어플리케이션의 안정성이 확보가 되었는가?

라는 주제들로 간단하게 생각해볼 수 있을 것입니다.

 

안정적이기 이전에 일단 뭐 기능을 하는 게 중요한 거니까,

1번에 대해 먼저 더 자세하게 파보도록 하죠.

어플리케이션에서 '기능'이란?

나의 Applicaiton이 사용자나, 다른 시스템에게 제공하는

기본적인 동작 및 서비스라고 정의를 내릴 수 있습니다.

 

그렇다면 기본적인 동작 및 서비스들을 Spring Boot 에서

어떻게 더 세분화가 가능할까를 생각해보자면 

  1. Client 의 HTTP 요청 처리
  2. 비즈니스 로직
  3. DB 에서의 CRUD 연산
  4. 외부 시스템(라이브러리, DB, Message Queue... etc) 처리
  5. 보안 관련

아마 이렇게 세분화가 가능할 것입니다.

아마 읽으시면서 바로바로 생각 나겠지만 굳이 적어보자면

  1. Client 의 HTTP 요청 처리 -> Controller
  2. 비즈니스 로직 -> Service
  3. DB 에서의 CRUD 연산 -> Repository
  4. 외부 시스템(라이브러리, DB, Message Queue... etc) 처리 -> Kafka 가 띄워져있는 지(물론 아직 없습니다)
  5. 보안, 유틸 관련 -> Security 가 잘 작동하는 지

이렇게 Spring Boot '적'으로 세분화가 가능합니다.

프로젝트에 어떻게 적용이 될까

프로젝트 구조

위는 저의 프로젝트 구조입니다.

아까 5가지 기준의 해당하도록 세분화를 해본다면 다음과 같을 것입니다.

세분화된 프로젝트 구조

각각이 맡은 기능은 위와 같고, 각각의 테스트 코드는 즉

각각의 기능이 잘 수행되나를 증명하는 코드의 내용을 담을 것입니다.

 

앞으로는 저의 귀차니즘을 줄이기 위한 테스트 코드 작성에 대한

테스트 코드 작성에 대한 내용으로 찾아뵙도록 하겠습니다 :)

728x90