msa프로젝트에서 kafka, feignClient 테스트
214
작성한 질문수 1
안녕하세요~
강의가 넘 좋습니다!! 넘 재밌게 잘 들었어요~
msa프로젝트에서 kafka, feignClient는 테스트를 어떻게 진행하는지 궁금합니다.
(서비스단 테스트시 카프카를 mocking해서 테스트하는 것을 여쭙는게 아닙니당 ㅎㅎ)
저 자체는 테스트하지 않으시는지..?
실제로는 서비스 여러개 띄워놓고 메세지 발행이나 api 통신이 되는지 확인하고 있는데 테스트로도 할 수 있는 방법이 있나해서요.
현업에서는 어떻게 하는지 궁금합니다~
답변 2
0
안녕하세요, 보라 님!
MSA 환경에서 서비스별 mocking 이 아닌 실제 전체 동작을 검증하는 자동화 테스트는, 상당히 복잡한 작업인데요.
불가능하지는 않지만, 서비스 특성에 따라 고려해야 할 점이 많습니다.
어떤 것을 검증할 것인지를 구체적으로 정의해야 하고 (TC)
검증 주기, 검증 방식 등을 고민해야 합니다.
예를 들어 A 서비스에 특정 API를 호출한 뒤, 일정 시간 후 B 서비스에 다른 API를 호출하여 원하는 형태로 상태가 반영되었는지 등을 검증할 수 있을텐데요.
여기서 '일정 시간'을 어느 정도 범위로 잡을 것인지, 또 말씀하신대로 kafka 등 메시지 플랫폼의 특성을 고려한 테스트 케이스 설계가 필요할 것입니다.
이런 테스트는 일정 주기마다 수행되도록 자동화할 수도 있고, 만약 어렵다면 필요할 때 사람이 수동으로 수행하여 검증할 수도 있겠습니다.
정리하면, 테스트해야 할 범위가 매우 크고 고려할 지점이 많기 때문에 구축 비용이 높다는 점, 상세한 TC 작성이 필요하고 검증 통과 허용 범위 등을 설계해야 한다는 점을 말씀드리고 싶네요.
도움이 되셨기를 바랍니다.
감사합니다 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
보라님 질문 감사드립니다!
MSA 프로젝트에서 Kafka와 FeignClient의 테스트에 대한 방법을 설명드리겠습니다. 실제 여러 서비스를 띄워놓고 메시지 발행이나 API 통신을 확인하는 과정은 주로 통합 테스트나 E2E(종단간) 테스트로 설명됩니다.
Kafka 테스트 방법
Kafka Embedded Broker: 테스트 환경에서 실제 Kafka Broker를 활용하지 않고 임베디드 Kafka를 사용하는 방식입니다. 이렇게 하면 테스트 중 메시지 발행 및 수신을 테스트할 수 있습니다.
Containerization:
testcontainers라이브러리를 사용해서 Docker를 통해 Kafka 컨테이너를 띄우고 테스트를 수행할 수 있습니다.
FeignClient 테스트 방법
Mocking:
@MockBean을 사용해 FeignClient를 목킹하여 TestRestTemplate이나 WebTestClient를 사용해 테스트할 수 있습니다.Contract Test: 실제 서비스를 띄워놓고 통신이 정상적으로 되는지 확인하는 것이 가능하며, 이를 위해 Spring Cloud Contract 같은 계약 기반 테스트 도구를 사용할 수 있습니다.
현업에서는 테스트의 종류에 따라 다양한 방법이 활용됩니다. 오픈 소스 및 기능 테스트 라이브러리를 이용하여 컨테이너화 된 환경에서의 테스트도 고려하실 수 있습니다. Kafka나 FeignClient의 실제 통신을 검증하는 것은 별도의 통합 테스트 단계에서 이루어지고, 일반적으로는 각 서비스를 독립적으로 테스트합니다.
자세한 테스트 전략은 프로젝트의 요구사항이나 환경에 따라 다를 수 있습니다. 테스트 자동화를 통해 신뢰성을 높이는 것이 좋습니다.
추가적인 자료가 필요하시면, Spring Boot Reference Documentation에서 더 많은 정보를 확인하실 수 있습니다.
계속해서 질문 있으시면 언제든지 문의 주세요! 감사합니다. 😊
private 상수 테스트 관련 질문
0
87
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
128
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
163
2
테스트 문서화 질문입니다
0
107
2
단위테스트 질문이 있습니다
0
96
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
106
2
ERD 가장자리에 있는 도메인 테스트 질문
0
90
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
136
2
OrderCreateRequest DTO에 대해서 궁금한점
0
104
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
157
2
계층 관련 질문이 있습니다.
0
140
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
124
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
135
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
235
2
Service+Repository 통합테스트 관련 질문입니다.
0
151
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
186
2
test 용 .yml
0
91
2
throws Exception
0
81
2
카페키오스크 클래스 문의 ,,
0
90
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
176
2
테스트 코드에서 필요한 생성자
0
139
1
tearDown 순서
0
116
2
@Builder 생성자 private
0
137
2
@DisplayName gradle / intellJ
0
94
2





