2017-11-04 1 views
0

이 경우 Azure 클라우드 기능을 사용하는 오픈 소스 프로젝트에 추가하고 있지만 동일한 일반적인 문제는 모든 클라우드 API에 적용 할 수 있습니다. 코드에 대한 테스트를 작성하고 싶지만 테스트 결과는 내가 사용하고있는 클라우드 서비스에서 발생한 일에 의존하고 있으며 이러한 일이 발생하려면 클라우드 서비스에 자격 증명을 제공해야합니다. 개인 프로젝트에서 필자는 클라우드 자격 증명을 테스트 환경에 추가 할 수 있었지만 공개/공개 소스 프로젝트의 경우이를 수행 할 수 없습니다. 로컬에서 쉽게 테스트 할 수 있지만이 프로젝트는 CI (많은 OSS 프로젝트와 마찬가지로)를 사용하므로 실제로 수행 할 수 없습니다.클라우드 API를 사용할 때 자동 테스트를 작성하는 방법은 무엇입니까?

하나의 접근 방식은 mock 또는 유사한 것을 사용하는 것 같습니다.하지만 실제로는 상황이 실제로 일어나고 있는지 테스트하지 않는 것 같아서 100 % 적용 범위를 달성하는 데 거의 의미없는 방법으로 저를 공격합니다.

문제의 클라우드 서비스와 동일한 인터페이스를 만들기 위해 스핀 업할 수있는 '가상 테스트 클라우드'환경이 있습니까? 테스트 용도로만 사용할 수 있습니까? 문제가 부작용을 어떻게 다루는가? (문제의 코드는 DNS 항목을 생성하고 다른 클라우드 호출이 아닌 시스템의 해결자를 사용하여 DNS 항목의 실제 존재 여부를 테스트하는 것이 이상적입니까?)

사람들은 어떻게 이러한 종류의 테스트를 수행합니까?

답변

0

필요한 자격 증명을 전달하는 방법을 배우려면 spike solution으로 시작하십시오. 이 지식으로, TDD acceptance test 간단한 API를 호출하고 "성공"결과를 얻을 수 있습니다.

내 저장소에서 자격 증명을 제외했습니다. 대신 지침이있는 템플릿 파일을 포함합니다.

거기에서 TDD로 단위 테스트를 보내고 요청을 보내고 응답을받습니다. 나는 어떤 서비스와도 실제 통신을 테스트하지 않는다. 대신 :

  • 요청 내용을 테스트하십시오.
  • 응답을 생성하고 처리 방법을 테스트하십시오. 이렇게하면 모든 종류의 오류 조건을 쉽게 테스트 할 수 있습니다.

자격 증명, 요청 및 응답을 TDD로 보내면 spike test을 사용하여 모든 것이 실제로 작동하는지 확인합니다. 기본적으로이 작업은 신속하게 함께 해킹 할 수있는 무언가에 대한 자동이 아닌 확인 기능을 사용합니다.

+0

자동화 된 테스트가 테스트의 주요 방법 인 오픈 소스 프로젝트의 세계에서 이것이 안정적으로 어떻게 작동하는지는 알 수 없습니다. 내가 예상하는 한 가지 중요한 문제는 API가 변경되면 문제가 발생하지만 자동화 된 테스트는 계속 진행될 것이라는 점입니다. – askvictor

+0

그렇기 때문에 일부 수락 테스트가 필요합니다. 계약 테스트는 기본적으로 계약이 변경되지 않았 음을 테스트하는 역할을합니다. 테스트 피라미드에서 레벨 업, 그들은 최소한이어야합니다. –

관련 문제