개발 프록시 및 단위 테스트는 테스트 전략에서 다양한 용도로 사용됩니다. 둘 다 중요하지만 근본적으로 다른 방법으로 애플리케이션을 테스트합니다. 이를 함께 사용하면 애플리케이션의 동작을 포괄적으로 적용할 수 있습니다.
다양한 테스트 방법
단위 테스트는 모의 종속성을 사용하여 격리된 코드 부분을 테스트합니다. API를 호출하는 코드에 대한 단위 테스트를 작성하는 경우 일반적으로 미리 정의된 응답을 반환하도록 HTTP 클라이언트를 모의합니다. 이 방법을 사용하면 코드가 특정 시나리오를 올바르게 처리하는지 확인할 수 있습니다.
개발 프록시 는 시뮬레이션된 API 동작으로 실행 중인 애플리케이션을 테스트합니다. 개발자 프록시는 코드를 모의하는 대신 실제 HTTP 요청을 가로채고 오류, 제한 및 대기 시간과 같은 실제 조건을 시뮬레이션합니다. 이 방법은 코드와 API 사이의 모든 계층을 포함하여 애플리케이션 전체를 테스트합니다.
각각을 사용하는 경우
다음을 수행하려는 경우 단위 테스트를 사용합니다.
- 특정 함수 동작 및 에지 사례 테스트
- 격리된 업무 로직 검증
- 개발 중에 빠른 피드백 받기
- 높은 코드 커버리지 달성
- 특정 오류 처리 경로 테스트
다음을 수행하려면 개발자 프록시 를 사용합니다.
- 실행 중인 애플리케이션 엔드 투 엔드 테스트
- 재현하기 어려운 속도 제한이나 네트워크 문제와 같은 조건을 시뮬레이션합니다.
- 모든 계층에서 실제 재시도 논리 및 오류 처리 테스트
- 부하가 걸린 상태에서 임의의 오류와 함께 애플리케이션 실행
- 코드를 변경하지 않고 복원력 확인
개발자 프록시의 이점
개발 프록시는 기존 모의 테스트 방법보다 몇 가지 이점을 제공합니다.
- 코드 변경이 필요하지 않습니다. 개발자 프록시를 사용하도록 애플리케이션을 수정할 필요가 없습니다. 네트워크 수준에서 작동하여 HTTP 요청을 투명하게 가로챌 수 있습니다.
- 모든 HTTP 라이브러리에서 작동합니다. 일부 HTTP 라이브러리는 모의하기가 매우 어렵습니다. 개발자 프록시를 사용하면 RestSharp, HttpClient, Axios 또는 기타 라이브러리를 사용하는 것은 중요하지 않습니다. 개발자 프록시는 라이브러리에 관계없이 모든 HTTP 트래픽을 가로채고 있습니다.
- 실제 애플리케이션을 테스트합니다. 모의 HTTP 클라이언트를 사용한 단위 테스트는 실제 재시도 논리, 연결 처리 또는 시간 제한 동작을 테스트하지 않습니다. 개발자 프록시는 모든 종속성을 사용하여 실제 애플리케이션을 테스트합니다.
- 오류를 이해하기 쉽습니다. 실행 중인 애플리케이션에서 요청 시 오류를 트리거할 수 있는 경우 애플리케이션에서 오류를 처리하는 방법을 더 쉽게 이해하고 디버그할 수 있습니다.
- 복잡한 조건을 시뮬레이션합니다. 개발 프록시는 모의 객체로는 재현할 수 없는 조건들을 시뮬레이션할 수 있습니다. 예를 들어, 부하 상태에서의 임의 오류, 점진적 제한, 또는 간헐적인 네트워크 문제가 있습니다.
보완적인 테스트 전략
가장 효과적인 방법은 두 테스트 방법을 결합합니다.
- 논리에 단위 테스트를 사용합니다. 단위 테스트를 작성하여 비즈니스 논리, 데이터 변환 및 특정 오류 처리 코드 경로를 확인합니다.
- 복원력을 위해 개발 프록시를 사용합니다. 개발자 프록시를 사용하여 애플리케이션이 실제 API 조건(제한, 오류 및 느린 응답)을 올바르게 처리하는지 확인합니다.
- CI/CD에서 둘 다 사용합니다. 모든 커밋에 대한 빠른 피드백에 대한 단위 테스트를 실행합니다. 통합 테스트에서 개발 프록시를 사용하여 배포 전에 복원력 문제를 파악합니다.
단위 테스트는 코드가 올바른지 알려줍니다. 개발자 프록시는 애플리케이션이 복원력이 있는지 알려줍니다. 둘 다 필요합니다.
다음 단계
- 임의 오류로 내 앱 테스트 - 5분
- CI/CD에서 개발 프록시 사용 - 파이프라인에서 단위 테스트 및 개발 프록시 실행
Dev Proxy