Azure を初めて使用する JavaScript 開発者は、この Azure テスト ガイドを使用して、Azure SDK やその他のリソースを使用した単体、統合、CI/CD、AI テスト戦略を学習し、アプリケーションの品質、パフォーマンス、信頼性を確保します。
Azure Well-Architected Framework(アジュール ウェルアーキテクテッド フレームワーク)
Azure Well-Architected Framework には、次の 5 つの柱にまたがるクラウド アプリケーション用の設計フレームワークが用意されています。
- 信頼性 – 障害に対するアプリケーションの回復性を確保し、迅速に回復します。
- セキュリティ – アプリケーションとデータを脅威から保護します。
- パフォーマンス効率 – システムがリソースを使用して要件を満たす方法を最適化します。
- コストの最適化 – 価値を提供しながらコストを管理します。
- オペレーショナル エクセレンス – プロセスと監視を改善し、アプリケーションを効果的に提供します。
この記事のテスト戦略は、主に運用プロセスの自動化、検証、継続的な改善を重視する オペレーショナル エクセレンス の柱に沿っています。
JavaScript での Azure SDK の内部および外側のテスト ループ
内部テスト ループと外部テスト ループは、ソフトウェア テストの基本的な概念です。特に、Azure のようなクラウド プラットフォームにデプロイされたアプリケーションの場合:
内部ループとは、開発者が開発フェーズ中に単体テストと統合テストを頻繁に実行するローカル環境を指します。 このループでは、迅速なフィードバックとイテレーションに重点を置いています。
外部ループには、開発者が継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプライン、ステージング環境、および運用環境で実行するテストが含まれます。 これらのテストでは、多くの場合、Azure DevOps または GitHub Actions を利用します。
これらのテストには、エンド ツー エンド (E2E)、パフォーマンス、およびセキュリティ テストが含まれます。 最終的な運用環境と密接にミラー化されている、または同じ環境でのアプリケーションの動作を検証します。 効率的なテスト戦略では、両方のループを使用して、デプロイ前とデプロイ後の包括的なカバレッジと品質保証を保証します。
詳細情報:
- CI/CD: 内容、理由、方法
- GitHub での CI/CD と自動化に関する初心者向けガイド
- GitHub Actions 初期ワークフロー
- ローカルにデプロイされたアプリにクラウドでホストされるブラウザーを使用する
Azure SDK を使用したローカルおよびクラウドベースのテスト
Azure を使用しないローカル テスト では、Azure サービスをシミュレートする必要があります。 この方法を使用すると、実際の Azure サービスに関連するコストやネットワーク待機時間を発生させずに、変更をすばやくテストできます。
一方、Azure での クラウドベースのテスト では、実際の Azure リソースを利用して、クラウド環境でのアプリケーションの統合、セキュリティ、パフォーマンスを検証します。 この方法は、運用環境に似た設定での最終的な検証に不可欠です。 これは、ライブ Azure サービスでアプリケーションが期待どおりに動作することを保証するのに役立ちます。
エミュレーターと開発コンテナーは、Azure サービスを使用したローカル開発を異なる方法で強化します。 エミュレーターは、Azure サービスを模倣して、Azure の料金なしでコスト効率の高い早期テストを行いますが、ライブ サービス機能を完全にレプリケートできない可能性があります。 開発コンテナーは、アプリケーションの依存関係やサービスを含め、運用環境をより密接にレプリケートして、運用環境へのシームレスな移行を容易にします。 開発コンテナーは複雑なアプリケーションに適していますが、エミュレーターよりも多くのセットアップが必要です。
エミュレーター
エミュレーターには次のものが含まれます。
- Azurite (Azure Storage Emulator)
- Azure Cosmos DB Emulator
- Azure SignalR Emulator
- Azure Event Hubs Emulator
- Azure Functions Core Tools (ローカル Azure Functions ランタイム)
- Azure Logic Apps Standard (ローカル開発)
- Azure API Management 自己ホスト型ゲートウェイ
- Azure IoT Edge ランタイム
開発コンテナー
開発コンテナーは、特に 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 Load Testing のドキュメント
- Web アプリでのパフォーマンスのボトルネックの特定に関するチュートリアル
- GitHub: Azure Load Testing
セキュリティ テスト
Azure でのセキュリティ テストでは、未承認のアクセスやデータ侵害を防ぐために、アプリケーションの潜在的な脆弱性を特定する必要があります。
脆弱性スキャン ツールは、コードまたは構成のセキュリティの弱点を自動的に検出するために不可欠です。 GitHub Advanced Security 機能を従来の静的アプリケーション セキュリティ テスト (SAST) ツールと統合することで、Azure にデプロイされたアプリケーションのセキュリティ体制を向上させることができます。 主な機能は次のとおりです。
- コード スキャン: デプロイ前にコードベース内の脆弱性を識別します。
- シークレット スキャン: 機密データの漏えいを防ぎます。
- サプライ チェーンの監視: 侵害された可能性のある依存関係から保護するのに役立ちます。
これらの統合セキュリティ対策は、脆弱性を早期に特定し、データ侵害を防ぎ、アプリケーションのサプライ チェーンの整合性を確保するのに役立ちます。
侵入テスト では、アプリケーションに対するサイバー攻撃をシミュレートして、セキュリティ体制を評価します。 Azure には、プラットフォームにデプロイされたアプリケーションが脅威に対してセキュリティで保護されていることを確認するために、これらのテストを実行するためのガイダンスとツールが用意されています。
脆弱性を早期にキャッチするために、CodeQL を CI パイプラインに統合することをお勧めします。
詳細情報:
コンプライアンスとガバナンスのテスト
特にクラウド環境では、アプリケーションが法的、規制、およびポリシーの要件に準拠していることを確認することが重要です。 規制コンプライアンス テストでは、アプリケーションが GDPR、HIPAA、SOC 2 などの標準を満たしていることを確認します。
Azure には、Azure リソース全体のコンプライアンスの自動化と適用に役立つ、Azure Policy や Azure Blueprints などのポリシーとコンプライアンス ツールが用意されています。 これらのツールを使用すると、アプリケーションのデプロイでガバナンスとコンプライアンス標準を維持するプロセスが簡略化されます。
詳細情報:
- Azure のガバナンス、セキュリティ、コンプライアンス
- Terraform と Azure を使用してコンプライアンス テストを実装する
アクセシビリティ テスト
アクセシビリティ テストは、ソフトウェアを包括的にし、法的基準に準拠するために不可欠です。 Accessibility Insights などのツールは、Web アプリやモバイル アプリのアクセシビリティの問題を特定して修正するのに役立ちます。 Accessibility Insights を開発ワークフローに統合すると、Web コンテンツ アクセシビリティ ガイドライン (WCAG) 標準に基づくガイダンスとレポートを提供することで、自動化された手動チェックが容易になります。
A/B テスト
A/B テスト (分割テスト) は、Web ページまたはアプリの 2 つのバージョンを相互に比較して、どちらがパフォーマンスが優れているかを判断する方法です。 Azure には、A/B テストをサポートする次のサービスが用意されています。
Azure App Service: ライブ アプリに影響を与えずにアプリのバージョンをテストできるステージング環境を可能にするデプロイ スロットを提供します。
Azure Container Apps: マイクロサービス ベースのアプリケーションを実行するための柔軟な環境を提供します。 この環境で A/B テストを実装して、アプリのバージョンをテストできます。
これらのサービスを使用して、アプリケーションのバリエーションをデプロイし、ユーザーの応答と有効性を測定します。
Azure SDK テスト
Azure サービスを使用する開発者にとって、堅牢でスケーラブルなアプリケーションを作成するためには、Azure SDK の能力を身に付ける必要があります。 JavaScript SDK 用の GitHub でホストされている次の Azure SDK テストは、貴重なリソースです。
これらのテストを探索すると、シームレスな Azure サービス統合に関する分析情報が提供され、Azure リソースの相互作用に関するベスト プラクティスが紹介され、効率的で安全な実装を確保するのに役立ちます。 広範な SDK の例を調べて、包括的な理解を深めます。