작성
·
77
답변 2
0
안녕하세요, 보라 님!
MSA 환경에서 서비스별 mocking 이 아닌 실제 전체 동작을 검증하는 자동화 테스트는, 상당히 복잡한 작업인데요.
불가능하지는 않지만, 서비스 특성에 따라 고려해야 할 점이 많습니다.
어떤 것을 검증할 것인지를 구체적으로 정의해야 하고 (TC)
검증 주기, 검증 방식 등을 고민해야 합니다.
예를 들어 A 서비스에 특정 API를 호출한 뒤, 일정 시간 후 B 서비스에 다른 API를 호출하여 원하는 형태로 상태가 반영되었는지 등을 검증할 수 있을텐데요.
여기서 '일정 시간'을 어느 정도 범위로 잡을 것인지, 또 말씀하신대로 kafka 등 메시지 플랫폼의 특성을 고려한 테스트 케이스 설계가 필요할 것입니다.
이런 테스트는 일정 주기마다 수행되도록 자동화할 수도 있고, 만약 어렵다면 필요할 때 사람이 수동으로 수행하여 검증할 수도 있겠습니다.
정리하면, 테스트해야 할 범위가 매우 크고 고려할 지점이 많기 때문에 구축 비용이 높다는 점, 상세한 TC 작성이 필요하고 검증 통과 허용 범위 등을 설계해야 한다는 점을 말씀드리고 싶네요.
도움이 되셨기를 바랍니다.
감사합니다 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
보라님 질문 감사드립니다!
MSA 프로젝트에서 Kafka와 FeignClient의 테스트에 대한 방법을 설명드리겠습니다. 실제 여러 서비스를 띄워놓고 메시지 발행이나 API 통신을 확인하는 과정은 주로 통합 테스트나 E2E(종단간) 테스트로 설명됩니다.
Kafka Embedded Broker: 테스트 환경에서 실제 Kafka Broker를 활용하지 않고 임베디드 Kafka를 사용하는 방식입니다. 이렇게 하면 테스트 중 메시지 발행 및 수신을 테스트할 수 있습니다.
Containerization: testcontainers
라이브러리를 사용해서 Docker를 통해 Kafka 컨테이너를 띄우고 테스트를 수행할 수 있습니다.
Mocking: @MockBean
을 사용해 FeignClient를 목킹하여 TestRestTemplate이나 WebTestClient를 사용해 테스트할 수 있습니다.
Contract Test: 실제 서비스를 띄워놓고 통신이 정상적으로 되는지 확인하는 것이 가능하며, 이를 위해 Spring Cloud Contract 같은 계약 기반 테스트 도구를 사용할 수 있습니다.
현업에서는 테스트의 종류에 따라 다양한 방법이 활용됩니다. 오픈 소스 및 기능 테스트 라이브러리를 이용하여 컨테이너화 된 환경에서의 테스트도 고려하실 수 있습니다. Kafka나 FeignClient의 실제 통신을 검증하는 것은 별도의 통합 테스트 단계에서 이루어지고, 일반적으로는 각 서비스를 독립적으로 테스트합니다.
자세한 테스트 전략은 프로젝트의 요구사항이나 환경에 따라 다를 수 있습니다. 테스트 자동화를 통해 신뢰성을 높이는 것이 좋습니다.
추가적인 자료가 필요하시면, Spring Boot Reference Documentation에서 더 많은 정보를 확인하실 수 있습니다.
계속해서 질문 있으시면 언제든지 문의 주세요! 감사합니다. 😊