HTTP 연결을 통한 단위 테스트 코드에 대한 DNS 해킹이 가능하거나 합리적입니까?

HTTP 연결을 통한 단위 테스트 코드에 대한 DNS 해킹이 가능하거나 합리적입니까?

로컬 테스트 서버를 사용하여 나가는 HTTP 연결을 모의하기 위해 제한된 방식으로 DNS를 하이재킹하는 합리적인 방법이 있습니까?

아이디어는 코드가 평소와 동일한 방식으로 실행되지만 요청은 대신 모의 응답을 반환하는 일부 로컬 테스트 서버로 리디렉션된다는 것입니다.

요청된 URI가 대신 localhost가 되도록 일련의 테스트 구성을 가짐으로써 이 작업을 수행할 수 있다는 것을 알고 있지만 이로 인해 과다한 문제가 발생한다는 것을 알았습니다. 가장 일반적인 것은 개발자가 프로덕션 구성의 주석 처리를 제거하는 것을 잊어버리거나 설정에 대해 혼란스러워하는 것입니다. 테스트 구성.

답변1

확인할 코드를 건드리지 않는 것이 현명합니다. 그러니 테스트 서버를 강제로 사용하도록 환경을 조작하는 것이 맞습니다.

DNS 해킹은 전체 네트워크에 영향을 미치며 동일한 서비스를 목표로 하는 다른 테스트를 짜증나게 할 수도 있습니다.

영향을 최소화하기 위해 네트워크 트래픽을 테스트 서버로 다시 라우팅하는 가장 간단한 방법은 파일을 구성하는 것입니다 hosts.클라이언트에서테스트할 소프트웨어가 설치된 곳.

# Linux:
/etc/hosts

# Windows:
%SystemRoot%\System32\drivers\etc\hosts

테스트 시스템의 IP를 프로덕션 서버의 DNS 이름에 매핑하면 됩니다.

# IP of the test server:
192.168.10.20   prod.server.com prod2.server.com
192.168.10.20   prod prod2      # if prod-servers are part of the local network.

서버 이름을 확인하기 위해 시스템은 먼저 파일을 확인합니다 hosts. 그런 다음 성공하지 못하면 DNS 요청을 따릅니다.

재구성 후에는 DNS 캐시를 지우는 것이 좋습니다.

# Linux:
resolvectl flush-caches

# Windows:
ipconfig /flushdns

이(또는 모든 DNS 솔루션)의 경우 소프트웨어가 프로덕션 서버의 IP 주소를 어디에도 코딩하지 않는지 확인해야 합니다. (인터넷/프로덕션 네트워크에서 테스트 네트워크 연결을 끊을 수도 있나요?)

관련 정보