Microsoft AZ-400: テスト戦略と品質エンジニアリング — 学習ガイド
こちらの一部です: Microsoft DevOps Engineer Expert AZ-400 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
Azure DevOpsとAzureのテスト機能
Azure Test Plansは、高度な手動テストと探索的テスト、さらにトレーサビリティを提供します:
- テストケースは、手順、期待される結果、およびパラメータを定義します。共有ステップとパラメータ化されたテストケースにより、重複を削減できます。要件ベースのスイートは、テストケースをプロダクトバックログ項目やユーザーストーリーに対応させ、静的スイートやクエリベースのスイートは、実行のためにテストをグループ化します。
- テスト実行では、スイートと構成をテスターに割り当て、結果と所要時間を記録し、診断情報をキャプチャします。豊富なバグ報告機能には、スクリーンショット、ビデオ、環境データ、アクションログが含まれます。
- 探索的テストでは、Test & Feedbackブラウザ拡張機能を使用して、アドホックな探索中にチャーター、セッションノート、および成果物をキャプチャします。発見事項を作業項目にリンクし、要件とテストセッションのカバレッジを分析します。
自動テストはパイプラインに直接統合されます:
- Visual Studio Testタスク (VsTest) を使用して、MSTest、NUnit、xUnitテストを実行し、TRX形式の結果を公開します。.NETの場合、適切なロガー (trx, junit) を指定した
dotnet testの使用が一般的です。 - Javaの場合、MavenまたはGradle経由でJUnitを実行し、Publish Test ResultsタスクでJUnit XMLを公開します。JavaScriptの場合、ランナー (Jest, Mocha) を設定してJUnit XMLを出力させます。
- Publish Test Resultsは、複数の実行にわたる結果と傾向を集約します。レポートを統一し、不安定なテスト (flaky test) の分析を可能にするために、結果のフォーマット (TRXまたはJUnit XML) を標準化します。
- テストケースを自動テストメソッドにマッピングすることで、自動テストの実行をAzure Test Plansに結びつけ、要件から実行、欠陥までのエンドツーエンドのトレーサビリティを確保します。
コードカバレッジは、測定可能な品質のガードレールです:
- Coverlet (.NET用)、JaCoCo (Java用)、またはCobertura/lcov (JavaScript用) を使用してカバレッジを収集します。Azure DevOpsが理解できる形式に変換し、Publish Code Coverage Results経由で公開して、傾向と差分を可視化します。
- ビルド時に最小しきい値を強制します。.NETの場合、Coverletのしきい値スイッチを使用して、行またはブランチのカバレッジがポリシーを下回った場合にビルドを失敗させます。あるいは、Build Quality Checks拡張機能を使用して、カバレッジと傾向ベースのポリシーを強制することもできます。
- カバレッジをゲートとしたデプロイは、品質が低下した場合に次のステージへの進行を防ぎます。YAMLでは、カバレッジが目標を下回った場合に品質ステージを失敗させます。クラシックリリースでは、プロモーションの前に測定されたカバレッジを検証するために、Azure FunctionやRESTチェックを呼び出すゲートを使用します。
パフォーマンス、カオス、およびレジリエンス
負荷テストとパフォーマンステストは、非機能要件を早期かつ継続的に検証します:
- Azure Load Testingは、Application Insightsからのバックエンドテレメトリと相関させながら、JMeterベースの負荷を大規模にオーケストレーションします。JMXテストプランをインポートし、合否基準 (例: p95レイテンシ、エラー率) を設定し、結果をパイプラインに表示します。ベースラインが満たされない場合に進行をブロックするために、Azure Monitorゲートまたは環境チェックを使用します。
- Apache JMeterは、プロトコルレベルの負荷テストにおいて依然として汎用性の高い選択肢です。スレッドグループとアサーションはCI用にパラメータ化しておきます。JMXとCSVデータセットはコードと共に保存し、シナリオと合わせてバージョン管理します。
- k6は、開発者フレンドリーな「コードとしての負荷テスト」を可能にします。Azure PipelinesでコンテナまたはNodeランタイム経由でk6を実行し、結果をキャプチャし、公開用にJUnitまたはJSONにエクスポートします。k6スクリプト内のしきい値式を使用して、実行を決定論的に失敗させます。
- ベースライン管理は非常に重要です。環境ごとのレイテンシ、スループット、リソース使用率の傾向を追跡します。SLOを確立し、代表的なデータ量と構成の下でテストが実行されるようにします。
カオスエンジニアリングは、障害発生時のレジリエンスを検証します:
- Azure Chaos Studioは、制御された影響範囲 (blast radius) とセーフガードを備え、Azureリソースに対して障害を注入します。実験の種類には、VMへのCPU/メモリ負荷、ネットワークのレイテンシ/ブラックホール、プロセスキル、サービスの調整 (throttling) などが含まれます。
- まず本番前環境で実験を実行し、Application InsightsとAzure Monitorで計装して、障害モード、エラーバジェット、および自動回復の動作をキャプチャします。
- レジリエンスの検証では、カオスとヘルスプローブおよび合成トランザクションを組み合わせ、ユーザーにとって重要なパスが利用可能なままであるか、正常に機能低下 (degrade gracefully) することを確認します。レジリエンスに関する仮説が確認され、アラートが設計どおりに動作した場合にのみ、プロモーションを行います。
アクセシビリティ、コンプライアンス、ガバナンス
アクセシビリティとコンプライアンスは、品質の基本です。
- 公開されるエクスペリエンスについては、最低でもWCAG 2.1 AAに準拠します。要件をAzure Boardsの受け入れ基準に落とし込み、Azure Test Plansで専用のアクセシビリティテストケースを作成します。
- Playwright、Cypress、SeleniumなどのUIテストフレームワークに統合されたaxe-coreでチェックを自動化します。重大な違反が検出された場合はビルドを失敗させ、アクセシビリティレポートをパイプラインアーティファクトとして発行します。
- 自動化を補完するために、手動監査(キーボードナビゲーション、スクリーンリーダーのサポート、動的コンテキストでの色のコントラスト)を実施し、Test & Feedback拡張機能を使用した探索的セッションで発見事項を記録します。
- Azure Pipelinesにおけるコンプライアンスと品質ガバナンスでは、環境チェックとゲートを使用します。パフォーマンスと可用性については、デプロイ前にAzure MonitorまたはAzure Load Testingにクエリを実行してベースラインを確認します。カバレッジやアクセシビリティのゲートキーピングには、発行されたレポートを解析してpass/failを返す関数またはRESTチェックを呼び出します。これにより、非機能品質が後付けではなく、リリースの前提条件として強制されます。
テスト結果の公開と分析により、フィードバックループが完結します。
- 結果フォーマットとカバレッジレポートを標準化し、テスト分析(Test Analytics)にデータを取り込み、合格率の傾向を追跡し、不安定なテストを自動的に検出します。
- ビルドポリシーとブランチ保護を使用して、マージ前にテストがすべて成功し、十分なカバレッジがあることを要求します。フィードバックを高速に保つため、テストステージを並列化し、大規模なスイートを分割(shard)し、依存関係をキャッシュしてサイクルタイムを短縮します。
実践的な問題シナリオ
Adobeは、ドキュメント処理プラットフォームをAzure上のマイクロサービスへとモダナイズしています。エンジニアリングリーダーシップは、リグレッションのない迅速なリリースサイクル、証明可能なパフォーマンスベースライン、リージョン規模のネットワーク障害への回復性、そしてWCAG 2.1 AA準拠を必須としています。現在のパイプラインは、不安定なE2Eテストと一貫性のないテストデータに悩まされています。
- テストピラミッドとシフトレフトプラクティスの確立
- コアライブラリとサービスにTDD(テスト駆動開発)を採用し、.NETコンポーネントにはNUnitとxUnit、JavaにはJUnitを使用して、大規模で決定論的な単体テストの基盤を構築します。SpecFlowとCucumberを用いたBDD(ビヘイビア駆動開発)により、チーム横断的な受け入れ基準を実行可能な仕様として捉えます。これにより、迅速なフィードバックと共通理解が保証されます。
- Azure Pipelinesでのテスト自動化と結果の公開
- .NETにはVsTest、JavaにはMaven/Gradleを使用して単体テストと統合テストを実行します。Publish Test Resultsタスクで結果を、Publish Code Coverage Resultsタスクでカバレッジを公開し、レポート作成を集中化し、不安定なテストの分析を可能にします。組み込みタスクにより、Azure DevOpsとの緊密な統合が実現し、カスタムツールの必要性が減少します。
- コードカバレッジのしきい値を強制し、デプロイをゲートする
- 重要なサービスについて、カバレッジが行(line)で80%、分岐(branch)で60%を下回った場合にビルドが失敗するように、CoverletとJaCoCoのしきい値を設定します。最新のカバレッジアーティファクトを読み込んでpass/failを返すAzure Functionを呼び出すリリースチェックを追加し、カバレッジがポリシーを下回る場合のデプロイを防ぎます。これにより、人手を介さずに品質ゲートが形式化されます。
- 決定論のためのテストデータ管理の実装
- fakerライブラリを使用して、単体テストと統合テスト用の合成データセットを生成します。システムテストでは、Data Factoryを使用した自動パイプラインを介して、Azure SQLデータベースのマスクされたコピーをクローンし、不可逆的なマスキングを適用します。環境間のパリティを保つためにBicepで環境をプロビジョニングします。これにより、プライバシーリスクとデータに起因する不安定さが排除されます。
- 不安定なテストの封じ込めと排除
- VsTestで
rerunFailedTestsを有効にして一時的な障害を緩和し、不安定な仕様には隔離マーカー(quarantine marker)を付けます。これにより、それらのテストはブロッキングスイートからは除外されつつも、実行とレポートは継続されます。隔離された各テストに対してAzure Boardsの作業項目を作成します。タイミングログやネットワークログを収集し、非決定論的な待機を削除することで根本原因を特定します。これにより、恒久的な修正を推進しながら、パイプラインの信頼性を維持します。
- Azure Load Testingとk6によるパフォーマンス検証
- 主要なユーザージャーニーをJMeterプランとしてモデル化し、ステージング環境へのデプロイ後にAzure Load Testingで実行します。p95レイテンシとエラー率を合否基準とします。APIレベルの開発者テストには、CIでk6スクリプトを組み込みのしきい値付きで実行します。ステージングのベースラインが満たされない場合に本番環境へのデプロイをブロックするために、Azure Monitorゲートを追加します。これらのツールは、Q&Aのゲートコンセプトに沿った、スケーラブルで測定可能なパフォーマンス強制策を提供します。
- Azure Chaos Studioによる回復性の証明
- ステージング環境で選択したマイクロサービスにネットワークレイテンシとCPU負荷を注入する実験を設計し、その間Application Insightsでエラーバジェットと回復を追跡します。本番環境への昇格前に、すべての回復性実験がSLOを満たすことを要求します。Chaos Studioのガバナンスコントロールは、制御された影響範囲(blast radius)と監査可能な実験を求めるAdobeのニーズに合致しています。
- アクセシビリティとコンプライアンスの確保
- PlaywrightのUIテストにaxe-coreを統合し、主要な画面でのWCAG 2.1 AA違反を自動的に検出します。違反レポートをビルドアーティファクトとして公開し、重大な問題があればビルドを失敗させます。手動検証のために、Azure Test PlansとTest & Feedback拡張機能を使用して探索的なアクセシビリティセッションを計画します。これにより、自動化されたカバレッジと人間中心のチェックが組み合わされます。
- トレーサビリティと分析の提供
- 自動テストを適切な箇所でAzure Test Plansにリンクし、テストスイートを要件と整合させ、テスト分析(Test Analytics)を使用して合格率の傾向を把握し、不安定なテストを特定し、修正作業に集中します。これにより、リーダーシップは品質の傾向とリリースの準備状況を一目で確認できます。
これらの各選択肢は、ファーストクラスの統合を実現するためのネイティブなAzure DevOpsおよびAzureサービス、環境チェックとゲートによるガバナンス、そしてフィードバックの速度、信頼性、コンプライアンスを最適化するバランスの取れたテスト戦略を重視しています。
← セキュリティ、コンプライアンス、DevSecOps · すべてのドメイン · モニタリング、可観測性、フィードバック →
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →