작은달팽이 2023. 1. 13. 14:14

이번주 스프링 수업에서는 로깅에 대한 이론수업과 Mock에 대해 공부했습니다.


Logback(LOGGING)

 

  • 로깅
    • 오류발생 시 콘솔에 print해서 나오도록 찍는 것
    • 시스템이 동작할 때 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것
    • 스프링부트 프로젝트를 생성하고, 의존관계를 확인해보면 logging 스타터를 이용하여 기본적으로Logback과 Log4j를 SLF4J 구현체로 가지고 있는 걸 확인할 수 있다.
    • 5단계의 로그 레벨
      • Error : 예상하지 못한 심각한 문제가 발생하는 경우, 즉시 조취를 취해야 할 수준의 레벨
      • Warn : 로직 상 유효성 확인, 예상 가능한 문제로 인한 예외 처리, 당장 서비스 운영에는 영향이 없지만 주의해야 할 부분
      • Info : 운영에 참고할만한 사항, 중요한 비즈니스 프로세스가 완료됨
      • Debug : 개발 단계에서 사용하며, SQL 로깅을 할 수 있음
      • Trace : 모든 레벨에 대한 로깅이 추적되므로 개발 단계에서 사용함. 서버의 일거수일투족을 모두 찍은 것, 동작하나하나 나온다.실제운영에서는 쓸모가 없다. 어디에서 문제가 발생한건지 알 수 없다.
    • 시간이 오래 걸린다. → 효율적으로 로깅하는 방법을 이해하는 것이 중요하다.

 

Mock

 

  • Mock 이란?
    • 모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트 할 경우 테스트를 수행할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듀을 "흉내"내는 "가짜"모듈을 작성하여 테스트의 효율성을 높이는데 사용하는 객체이다. 사용자 인터페이스(UI)나 데이터베이스 테스트 등과 같이 자동화된 테스트를 수행하기 어려운 때 널리 사용된다.  - 출처 : 위키백과
      • 데이터베이스 테스트 : 자료의 변경을 수반하는 데이터베이스에 대한 작업을 테스트 하는 경우 테스트 수행 후 매번 데이터베이스의 자료를 원래대로 돌려놔야 하는데 이럴 경우 모의 객체를 이용해 데이터베이스의 응답을 흉내내어 데이터의 변경 없이 테스트가 가능하다. - 출처 : 위키백과
  • Mock 객체를 직접 생성하는 경우도 있지만 일일이 클래스를 만들기 번거롭기 때문에 Mockito 라이브러리를 이용한다.
  • Mockhito(프로젝트 내부호출)
    • 프로젝트 내부에서 특정 클래스의 메서드를 호출하여 값이 주어진 조건에 따라 반환을 하는지 확인
  • MockMVC(외부호출)
    • 스프링에서 MVC테스트를 하기위한 방법을 논의하였고, 스프링 프레임워트에 spring-test모듈을 더한 것이 MockMVC다.
    • 내부에서 Mock을 만들어서 외부에서 호출하는 형태, 내부적으로 미리 검사 (swagger, postman과 맥락비 비슷하다)