다음을 통해 공유


JavaScript 애플리케이션에 대한 Azure 테스트 가이드

Azure를 접하는 JavaScript 개발자는 이 Azure 테스트 가이드를 사용하여 Azure SDK 및 기타 리소스와 함께 단위, 통합, CI/CD 및 AI 테스트 전략을 학습하여 애플리케이션의 품질, 성능 및 안정성을 보장합니다.

Azure Well-Architected 프레임워크

Azure Well-Architected Framework는 다음과 같은 5가지 핵심 요소에서 클라우드 애플리케이션을 위한 디자인 프레임워크를 제공합니다.

  • 안정성 – 애플리케이션이 오류에 대한 복원력을 보장하고 신속하게 복구되도록 합니다.
  • 보안 – 위협으로부터 애플리케이션 및 데이터 보호
  • 성능 효율성 – 시스템에서 리소스를 사용하여 요구 사항을 충족하는 방법을 최적화합니다.
  • 비용 최적화 – 가치를 제공하는 동안 비용 관리
  • 운영 우수성 – 효과적으로 애플리케이션을 제공하기 위해 프로세스 및 모니터링을 개선합니다.

이 문서의 테스트 전략은 주로 운영 프로세스의 자동화, 유효성 검사 및 지속적인 개선을 강조하는 운영 우수성 핵심 요소와 일치합니다.

JavaScript의 Azure SDK에 대한 내부 및 외부 테스트 루프

내부 및 외부 테스트 루프는 소프트웨어 테스트의 기본 개념이며, 특히 Azure와 같은 클라우드 플랫폼에 배포된 애플리케이션의 경우 다음과 같습니다.

  • 내부 루프는 개발자가 개발 단계에서 단위 및 통합 테스트를 자주 실행하는 로컬 환경을 나타냅니다. 이 루프는 빠른 피드백 및 반복에 중점을 둡니다.

  • 외부 루프는 개발자가 CI/CD(지속적인 통합 및 지속적인 업데이트) 파이프라인, 스테이징 및 프로덕션 환경에서 실행하는 테스트를 포함합니다. 이러한 테스트는 종종 Azure DevOps 또는 GitHub Actions를 활용합니다.

이러한 테스트에는 E2E(엔드 투 엔드), 성능 및 보안 테스트가 포함됩니다. 최종 프로덕션 환경과 밀접하게 미러링되거나 동일한 환경에서 애플리케이션의 동작에 대한 유효성을 검사합니다. 효율적인 테스트 전략은 두 루프를 모두 사용하여 배포 전후에 포괄적인 적용 범위와 품질 보증을 보장합니다.

더 알아보세요:

Azure SDK를 사용한 로컬 및 클라우드 기반 테스트

Azure가 없는 로컬 테스트 에는 Azure 서비스 시뮬레이션이 포함됩니다. 실제 Azure 서비스와 관련된 비용 또는 네트워크 대기 시간을 발생시키지 않고 변경 내용을 신속하게 테스트하려면 이 방법을 사용합니다.

반면, Azure를 사용한 클라우드 기반 테스트 는 실제 Azure 리소스를 활용하여 클라우드 환경에서 애플리케이션의 통합, 보안 및 성능의 유효성을 검사합니다. 이 메서드는 프로덕션과 유사한 설정에서 최종 유효성 검사에 중요합니다. 이는 애플리케이션이 라이브 Azure 서비스에서 예상대로 동작하도록 하는 데 도움이 됩니다.

에뮬레이터 및 개발 컨테이너는 Azure 서비스를 사용하여 로컬 개발을 다르게 향상시킵니다. 에뮬레이터는 Azure 요금 없이 비용 효율적인 초기 단계 테스트를 위해 Azure 서비스를 모방하지만 라이브 서비스 기능을 완전히 복제하지는 못할 수 있습니다. 개발 컨테이너는 애플리케이션 종속성 및 서비스를 포함하여 프로덕션 환경을 보다 긴밀하게 복제하여 프로덕션으로 원활하게 전환할 수 있도록 지원합니다. 개발 컨테이너는 복잡한 애플리케이션에 적합하지만 에뮬레이터보다 더 많은 설정이 필요합니다.

에뮬레이터

에뮬레이터는 다음과 같습니다.

개발 컨테이너

개발 컨테이너는 특히 Azure 서비스 작업에서 로컬 개발에 에뮬레이터를 사용하는 강력한 대안을 제공합니다.

컨테이너에서 서비스를 실행하여 프로덕션 환경을 밀접하게 반영하는 로컬 환경을 만들어 개발, 테스트 및 배포 단계에서 일관성을 제공합니다. 또한 실제 조건을 보다 정확하게 시뮬레이션하여 테스트의 안정성을 향상시킵니다.

Azure 서비스의 설정 및 데이터를 복제하도록 컨테이너를 구성합니다. 이러한 방식으로 컨테이너는 라이브 Azure 서비스에 연결하는 오버헤드 없이 애플리케이션을 개발하고 테스트하기 위한 강력한 플랫폼을 제공합니다.

개발 컨테이너에는 Azure SQL Database가 포함됩니다.

더 알아보세요:

JavaScript의 단위 테스트

JavaScript에서 Azure SDK를 사용한 단위 테스트는 종종 Jest 또는 Vitest 와 같은 프레임워크를 사용하여 개별 구성 요소 또는 함수를 격리하고 테스트합니다.

네이티브 Node.js 테스트의 경우 SDK 클라이언트 프로토타입에서 메서드를 재정의하거나 간단한 모의 함수를 사용하여 추가 라이브러리 없이 Azure SDK를 수동으로 호출합니다.

자세한 내용은 이 문서의 뒷부분에 있는 Azure SDK 테스트 섹션을 참조하세요.

JavaScript의 통합 테스트

통합 테스트는 애플리케이션과 Azure 서비스 간의 상호 작용을 평가하여 구성 요소가 예상대로 함께 작동하도록 합니다.

Azure DevOps의 Azure Pipelines 또는 GitHub Actions의 워크플로를 사용하여 자동화된 통합 테스트를 설정합니다. 이 방법은 클라우드 환경에서 구성 요소의 배포 및 테스트를 자동화합니다. 네트워크 대기 시간 또는 서비스 구성 오류와 같이 단위 테스트 중에 명백하지 않을 수 있는 문제를 식별하는 데 도움이 됩니다.

모의 Azure 서비스

Azure 서비스를 모의하는 것은 Azure SDK와 통합되는 JavaScript 애플리케이션을 테스트하는 일반적인 방법입니다. Azure 서비스 응답을 시뮬레이션하여 애플리케이션 논리를 외부 종속성으로부터 격리하여 테스트가 빠르고 안정적으로 실행되도록 합니다.

Azure SDK 통합을 테스트하는 방법에 대해 자세히 알아봅니다.

연속 통합 테스트

CI 테스트에는 코드베이스를 변경할 때마다 테스트가 자동으로 실행됩니다. Azure DevOps와 같은 CI 도구는 빌드, 테스트 및 배포를 자동화하기 위한 통합 환경을 제공합니다. 자동화된 테스트를 포함하도록 파이프라인을 구성하면 모든 변경 내용이 확인되어 버그 및 회귀 가능성이 줄어듭니다.

적절한 파이프라인 구성 은 효율적인 CI 프로세스에 매우 중요합니다. 여기에는 자동 테스트 실행을 위한 트리거 설정 및 다양한 테스트 단계에 대한 환경 구성이 포함됩니다.

더 알아보세요:

Azure 테스트 계획

Azure Test Plans는 Azure DevOps 내에서 수동 및 예비 테스트를 위한 포괄적인 제품군을 제공합니다.

이 서비스는 수동 테스트에 대한 구조적 접근 방식을 제공하여 사람의 판단이 필요하거나 자동화하기 어려운 시나리오에서 도움이 될 수 있습니다. Teams는 이를 사용하여 버그 보고를 지원하기 위해 스크린샷 및 비디오와 같은 풍부한 데이터를 캡처하는 등 테스트 활동을 계획, 실행 및 추적할 수 있습니다. Azure Test Plans를 CI/CD 프로세스에 통합하면 자동화된 테스트 사례와 수동 테스트 사례를 모두 다루는 전체적인 테스트 전략을 제공합니다.

엔드 투 엔드 테스트

엔드 투 엔드 테스트는 실제 사용자 시나리오를 시뮬레이션하는 환경에서 애플리케이션의 전체 작업의 유효성을 검사합니다. Playwright와 같은 프레임워크를 사용하면 브라우저 기반 테스트를 자동화하여 사용자와 마찬가지로 애플리케이션과 상호 작용할 수 있습니다.

시나리오 기반 테스트 에는 등록, 작업 수행 및 로그아웃과 같은 전체 사용자 흐름에 대한 테스트 사례를 만드는 작업이 포함됩니다. 이 테스트를 사용하여 Azure에서 애플리케이션의 기능 및 사용자 환경을 확인합니다.

더 알아보세요:

성능 테스트

성능 테스트는 예상 부하를 처리하고 스트레스 상태에서 잘 수행할 수 있도록 Azure에 배포된 애플리케이션에 필수적입니다.

벤치마킹 에는 정의된 메트릭 또는 표준에 대해 애플리케이션의 성능을 측정하는 작업이 포함됩니다. Azure Load Testing 서비스를 사용하여 높은 트래픽을 시뮬레이션하고 애플리케이션의 확장성 및 복원력을 분석합니다.

CLI 예제:

az load test create --resource-group MyResourceGroup --name MyLoadTest --file loadTestConfig.json

더 알아보세요:

보안 테스트

Azure의 보안 테스트에는 무단 액세스 또는 데이터 침해를 방지하기 위해 애플리케이션의 잠재적 취약성을 식별하는 작업이 포함됩니다.

취약성 검사 도구는 코드 또는 구성에서 보안 약점을 자동으로 검색하는 데 필수적입니다. GitHub 고급 보안 기능을 기존 SAST(정적 애플리케이션 보안 테스트) 도구와 통합하면 Azure에 배포된 애플리케이션의 보안 상태를 개선할 수 있습니다. 주요 기능은 다음과 같습니다.

  • 코드 검색: 배포 전에 코드베이스 내의 취약성을 식별합니다.
  • 비밀 검사: 중요한 데이터의 노출을 방지하는 데 도움이 됩니다.
  • 공급망 모니터링: 잠재적으로 손상된 종속성으로부터 보호하는 데 도움이 됩니다.

이러한 통합 보안 조치는 취약성을 조기에 식별하고, 데이터 위반을 방지하며, 애플리케이션 공급망의 무결성을 보장하는 데 도움이 될 수 있습니다.

침투 테스트 는 애플리케이션에 대한 사이버 공격을 시뮬레이션하여 보안 상태를 평가합니다. Azure는 플랫폼에 배포된 애플리케이션이 위협에서 안전하게 보호되도록 하기 위해 이러한 테스트를 수행하기 위한 지침과 도구를 제공합니다.

취약성을 조기에 catch하려면 CODEQL을 CI 파이프라인에 통합하는 것이 좋습니다.

더 알아보세요:

규정 준수 및 거버넌스 테스트

애플리케이션이 법률, 규정 및 정책 요구 사항을 준수하는지 확인하는 것은 특히 클라우드 환경에서 매우 중요합니다. 규정 준수 테스트는 애플리케이션이 GDPR, HIPAA 또는 SOC 2와 같은 표준을 충족하는지 확인합니다.

Azure는 Azure 리소스 전체에서 규정 준수를 자동화하고 적용하는 데 도움이 되는 정책 및 규정 준수 도구(예: Azure Policy 및 Azure Blueprints)를 제공합니다. 이러한 도구는 애플리케이션 배포에서 거버넌스 및 규정 준수 표준을 유지하는 프로세스를 간소화합니다.

더 알아보세요:

접근성 테스트

접근성 테스트는 소프트웨어를 포괄적이고 법적 표준을 준수하는 데 필수적입니다. Accessibility Insights와 같은 도구는 웹 및 모바일 앱에서 접근성 문제를 식별하고 해결하는 데 도움이 됩니다. Accessibility Insights를 개발 워크플로에 통합하면 WCAG(웹 콘텐츠 접근성 지침) 표준을 기반으로 하는 지침 및 보고서를 제공하여 자동화된 수동 검사를 용이하게 합니다.

A/B 테스트

A/B 테스트 또는 분할 테스트는 웹 페이지 또는 앱의 두 버전을 서로 비교하여 어떤 버전이 더 잘 수행되는지 확인하는 방법입니다. Azure는 A/B 테스트를 지원하는 다음 서비스를 제공합니다.

  • Azure App Service: 라이브 앱에 영향을 주지 않고 앱 버전을 테스트할 수 있는 스테이징 환경을 허용하는 배포 슬롯을 제공합니다.

  • Azure Container Apps: 마이크로 서비스 기반 애플리케이션을 실행하기 위한 유연한 환경을 제공합니다. 이 환경에서 A/B 테스트를 구현하여 앱 버전을 테스트할 수 있습니다.

이러한 서비스를 사용하여 애플리케이션의 변형을 배포한 다음 사용자 응답 및 효율성을 측정합니다.

Azure SDK 테스트

Azure 서비스를 사용하는 개발자에게 Azure SDK에 대한 숙련도를 얻는 것은 강력하고 확장 가능한 애플리케이션을 만드는 데 필수적입니다. JavaScript SDK용 GitHub에서 호스트되는 다음 Azure SDK 테스트는 매우 귀중한 리소스입니다.

이러한 테스트를 탐색하면 원활한 Azure 서비스 통합에 대한 인사이트를 제공하고, Azure 리소스 상호 작용에 대한 모범 사례를 소개하며, 효율적이고 안전한 구현을 보장하는 데 도움이 됩니다. 포괄적인 이해를 위해 광범위한 SDK 예제를 살펴봅니다.

추가 리소스