개발을 하면서 코드를 짜는 것만큼 중요한 요소가 있다.
바로 테스트 이다.
서비스를 이용하는 사용자는 개발자의 의도대로 서비스를 사용해주지 않는다.
여러 상황에 대한 시나리오를 두고 사용자가 서비스를 이용했을때를 가정해 내 코드들이 의도대로 동작하는지 확인해보는 과정이 중요하다.
서비스를 테스트하는 방법에는 여러가지가 존재한다.
사람들이 많이 아는 단위 테스트, 통합 테스트 부터 기술한다.
단위 테스트 (=unit test) 는 말 그대로 아주 작은 단위부터 테스트하는 방법을 말한다.
메소드 하나하나가 적절한 입력을 input으로 줬을때 그에 따른 적절한 output이 나오느냐를 확인하며 메소드가 내 의도대로 동작하는지를 테스트하는 방법이다.
개별 메소드나 함수의 기능을 확인하기 때문에 다른 동작이 필요하지않아 독립적이고 빠르게 테스트 할 수 있다는 특징이 있다.
어플리케이션은 여러 메소드들이 서로 상호작용하며 사용자에게 더 나은 사용자 경험을 줘야한다.
이렇게 개별 모듈들이 결합되어 하나의 큰 시스템이 잘 동작하는지 검증하는 테스트가 바로 통합 테스트이다.
어플리케이션이 동작하는데 필요한 데이터베이스 또는 네트워크를 함께 확인해야하기에 단위테스트에 비해 복잡하고 시간이 오래 걸린다.
슬라이스 테스트라는 용어는 뭘까?
Springboot를 활용해서 어플리케이션을 개발하면 보통 mvc 패턴을 통해 controller, service, repository같은 특정 레이어를 만들어 개발한다.
이런 특정 레이어들의 동작을 확인하는 테스트가 슬라이스 테스트이다.

간혹들어본적 있을듯한 Mockito 라이브러리를 이때 활용하게 된다.
@SpringBootTest 어노테이션을 사용해 bean을 로드하고 테스트하게되면 그만큼 시간이 오래걸리지만 @MockMvc를 이용하게 되면 테스트하고자하는 컨트롤러가 호출할 service를 mock 으로 사용하게되면서 테스트와 무관한 bean을 로드하는 시간을 줄일 수 있다.
면접 질문 내용과 답변의 일부는 기술 면접 구독 서비스 - 매일메일 에 있다.
흥미로웠다면 구독해보는 것도 추천한다!