注意
テスト エンジンは非推奨 となり、今後のリリースで削除される予定です。 Power Platform および Dynamics 365 サービスのテスト自動化機能には、Power Platform Playwright サンプルを使用します。
Power Platform アプリケーションの包括的なテスト計画の作成は、特に複雑なシナリオの場合、時間がかかる場合があります。 GitHub Copilotなどの AI 支援作成ツールは、テスト テンプレートの生成、テスト ケースの提案、定型コードの作成の自動化によって、このプロセスを大幅に高速化できます。
このガイドでは、Power Platform ソース管理ソリューションでGitHub Copilotを使用して、テスト エンジンのテスト 計画を効率的に作成する方法について説明します。
前提条件
始める前に、以下のことを確認してください:
- Visual Studio Code インストール済み
- GitHub Copilot サブスクリプション
- VS Code のGitHub Copilot Chat拡張機能
- Power Platform CLI がインストールされている
- ソース管理された Power Platform ソリューション
テスト作成環境のセットアップ
AI 支援によるテスト作成の効果を最大化するには、これらのツールを構造化されたワークフローで組み合わせます。
- ソース ファイルを取得する
- ソース管理から Power Platform 環境またはソリューションのクローンを作成する
- pac solution export と pac solution unpack を使用して、Power Platform ファイルからソリューションをエクスポートし、解凍します
- バージョン管理のために git リポジトリを初期化する (まだ行っていない場合)
- ソリューション リポジトリに専用のテスト フォルダーを作成します
- Visual Studio Codeでソリューション フォルダーを開く
テスト作成にGitHub Copilotを使用する
GitHub Copilotは、ソース管理ソリューションに基づいてさまざまなテスト コンポーネントを生成するのに役立ちます。 その機能を効果的に使用する方法は次のとおりです。
サンプル ドキュメントをコンテキストとして使用する
Test Engine サンプル カタログは、GitHub Copilotの参照資料の豊富なソースを提供します。 次の方法で、Copilotがより高品質なテストを生成できるように支援できます。
- ワークスペースに samples.md ファイルを含める
- プロンプト内で特定のサンプルを参照すること
- サンプル GitHub リポジトリへのリンクの提供
たとえば、以下を実行できます。
- VS Code でアプリケーション コードと samples.md ファイルの両方を開きます
- Copilotに「ButtonClickerサンプルに似た」テストや「Dataverseサンプルのパターンを使用する」テストを作成するように依頼してください。
- テストのニーズに合ったサンプルから特定の機能を参照する
このアプローチは、CopilotがPower Platformテストエンジンのパターンを理解し、より正確なテストを生成するのに役立ちます。
エージェント モードでのGitHub Copilotの操作
Visual Studio Codeの GitHub Copilot Chatは、ソリューション ファイルに基づいてテストを生成するのに役立つ Agent Mode を提供します。 このモードを使用すると、Copilotはプロジェクトコンテキストにアクセスして理解することができます。
テスト生成にエージェント モードを使用するには、次の手順を実行します。
- VS Code で GitHub Copilot Chatを開きます (Ctrl + Shift + I)
- Copilot モード セレクターから Agent を選択します
- 作成するテストに関する詳細なプロンプトを作成します
テスト生成のプロンプトの例
テスト生成には、次のようなプロンプトを使用してみてください。
目標:
ButtonClicker サンプルの後にモデル化されたPower Apps テスト エンジンを使用して、キャンバス アプリ用の包括的なテスト スイートを生成します。
プロンプト:
https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker のサンプルを参考にして、./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml のテストを生成します。 想定されるケース、エッジ ケース、例外ケースを作成します。 テストはテスト YAML ファイルと Power Fx テスト ステップ、config.json、RunTest.ps1 をサンプルに基づいて作成し、テストを実行できるようにします。
目標:
モデル駆動型アプリの詳細なテスト計画を作成して、コア機能とビジネスロジックが期待どおりに機能していることを確認します。
プロンプト:
./SolutionPackage/src/Other/Solution.xml にある モデル駆動型アプリ の包括的なテスト計画を作成します。 このテストでは、フォームの読み込み、レコードの作成、ビジネス ルールの実行を検証する必要があります。 テストの YAML、Power Fx ステップ、テストを実行する PowerShell スクリプトを生成します。
目標:
Dataverse エンティティのテスト計画を作成し、Power Fx アクションによる CRUD 操作を検証します。
プロンプト:
Dataverse エンティティに関する包括的なテスト計画を作成します。 テストは、作成、更新、削除の Power Fx アクションを実行する必要があります。 テストの YAML、Power Fx ステップ、テストを実行する PowerShell スクリプトを生成します。
生成されたテスト コンポーネントを理解する
GitHub Copilotがテストを生成すると、通常、次のコンポーネントが作成されます。
- YAML テスト計画: テスト構造、アプリの URL、テスト手順を定義します
- Power Fx テスト ステップ: Power Fx 式を使用してテスト ロジックが含まれます
- config.json: テスト実行パラメーターの構成
- RunTest.ps1: テストを実行する PowerShell スクリプト
例: 生成されたテスト構造
MyAppTests/
├── MyAppTest.fx.yaml # Power Fx test steps
├── MyAppTest.yml # Test plan definition
├── config.json # Test configuration
└── RunTest.ps1 # Test execution script
AI 支援によるテスト作成のベスト プラクティス
テスト エンジンのテスト作成のGitHub Copilotを最大限に活用するには、次のセクションを検討してください。
プロンプトに明確なコンテキストを提供する
テストする対象を具体的に指定し、以下への参照を含めます。
- テストする正確なファイル
- テンプレートとして使用するサンプル テスト
- 対象とする具体的なテスト シナリオ
- 認証または環境の要件
コンテキストに Test Engine サンプルを使用する
samples.md ドキュメントでは、テスト エンジン リポジトリから入手できるすべてのサンプルがカタログ化されています。これは、GitHub Copilotのプロンプトを作成する際の参考として最適です。 たとえば、ボタンのある canvas アプリをテストする場合、ボタン クリッカーのサンプル を参照します:
プロンプト:
./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yamlに、https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker の ButtonClicker サンプルを使用してキャンバス アプリのテストを生成します。 テストでは、次のことを行う必要があります。
1. カウンターボタンで画面上の値が増分処理されることを確認します
2. 試験境界条件 (最大値など)
3. OnTestCaseStart と OnTestCaseComplete ライフサイクル フックを含める
4. 適切な環境変数を使用して config.json を生成する
このアプローチCopilotテスト構造を理解し、実証済みの例に基づいて、より正確でコンテキストに関連するテストを生成するのに役立ちます。
ソース管理されたソリューションをコンテキストとして使用する
Copilotは、ソリューション構造を分析できる場合に最適なパフォーマンスを発揮します。 ソース管理を使用して Power Platform ソリューションにこのコンテキストを提供します。 このコンテキストを使用すると、Copilotで次のことができます。
- アプリの構造を理解する
- コントロールの名前とプロパティを識別する
- より正確なテスト手順の生成
- 正しいファイル パスを参照する
生成されたテストの確認と調整
AI が生成したテストは優れた出発点となりますが、常に次の点に注意してください。
- コントロール参照がアプリケーションと一致することを確認する
- ビジネス クリティカルな機能に対してアサーションを追加する
- エッジケースが適切に処理されていることを確認する
- 認証構成の検証
手作業の専門知識と組み合わせる
複雑なテスト シナリオの場合は、GitHub Copilotを使用して次の操作を行います。
- テストのフレームワークと構造を生成する
- 標準の検証パターンを作成する
- 考慮すべきエッジケースの提案
次に、専門領域の知識を活用し、さらに強化します。
- ビジネス特有の検証ルール
- 環境に関する考慮事項
- 特殊なテストデータ
一般的なテスト生成パターン
このセクションでは、一般的なテスト生成パターンをいくつか紹介します。
キャンバス アプリのテスト
キャンバス アプリでは、ソース管理ソリューションの App.fx.yaml ファイルを参照するプロンプトを使用します:
プロンプト:
./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml の キャンバス アプリに、経費申請プロセスを検証するテストを生成します。 テストでは、経費フィールドに入力し、フォームを送信して、確認メッセージが表示されることを確認する必要があります。
モデル駆動型アプリのテスト
モデル駆動型アプリの場合は、エンティティ ナビゲーション、フォーム 対話、およびビジネス ルールに焦点を当てます。
プロンプト:
アカウント エンティティフォームのテストを実施する、モデル駆動型アプリのテストを作成します。 このテストでは、新しい取引先企業レコードを作成し、必須フィールドを検証し、与信限度額計算のビジネス ルールが正しく機能していることを確認する必要があります。
Dataverse 拡張機能のテスト
Dataverse テストでは、データ操作とビジネスロジックの検証に重点を置きます:
プロンプト:
Dataverse テストを生成して、ソリューションのカスタム プラグインを検証します。 このテストでは、テスト レコードを作成し、プラグインの実行をトリガーし、予想されるデータ変換が行われたことを確認する必要があります。
サンプル固有のテスト プロンプト
最も正確な試験結果を得るには、Test Engine のサンプル カタログから試験ニーズに合った特定のサンプルを参照してください。 一般的なテスト シナリオに合わせて調整されたプロンプトを次に示します。
ButtonClicker サンプル プロンプト
ButtonClicker サンプルは、基本的なカウンター機能のテストを示しています。 これらのプロンプトを使用します:
プロンプト:
ButtonClicker サンプルと同様の構造を持つカウンター アプリのテストを生成します。 私のアプリには、"IncrementBtn" と "ResetBtn" という名前のボタンと、現在のカウントを表示する "CounterLabel" があります。 両方のボタンが正しく機能し、最大数が 10 であることを確認するテストを作成します。
プロンプト:
ButtonClicker サンプルを参考にして、ボタン インタラクション アプリのテストを作成します。 私のアプリには "SubmitButton" があり、"NameInput" フィールドと "EmailInput" フィールドが入力された場合にのみ有効にする必要があります。 この動作を検証するための Power Fx ステップを含むテスト計画を作成します。
ギャラリー テスト プロンプト
BasicGallery と NestedGalleryのサンプルは、ギャラリー インタラクションをテストする方法を示しています。
プロンプト:
「Products」ギャラリーには、「TitleLabel」、「PriceLabel」、「SelectButton」コントロールを含む商品アイテムがあり、それをテストするための私のギャラリーアプリのテストを生成します。 BasicGallery サンプル構造を使用して、項目を選択できることと、正しい詳細が "DetailPanel" に表示されることを確認します。
データ操作プロンプト
データ操作テストを示す Dataverse サンプル:
プロンプト:
Dataverse サンプル パターンを使用して CRM アプリのテストを作成します。 新しい取引先担当者レコードを作成して更新し、変更が保持されることを確認できることをテストします。 UI テストと直接 Dataverse 操作の両方を含みます。
AIテスト用プロンプト
AI を搭載した機能のテストについては、AI プロンプトのサンプルを参照してください:
プロンプト:
AI プロンプトのサンプルに基づいて、感情分析アプリのテストを生成します。 アプリには "FeedbackInput" テキスト ボックスがあり、AI Builderを使用して、正、負、または中立として分類します。 さまざまな入力が許容可能なしきい値内で期待される出力を生成することを検証するテストを作成します。
高度なテクニック
この項では、高度なプロンプト機能の例を示します。
マルチ環境テストスイートの作成
複数の環境で動作するテストを生成するようにCopilotを求めることができます。
プロンプト:
DEV、TEST、PROD の各環境で実行可能なアプリのテスト スイートを、各環境に適した構成変数で生成します。
データモックシナリオの生成
コネクタ モッキングによる分離テストに使用:
プロンプト:
Office 365 Outlook コネクタを使用するアプリのモック コネクタ応答を含むテストを作成します。 テストでは、メールの受信をシミュレートし、アプリの処理ロジックを検証する必要があります。
AI 機能のテストと非決定論的結果の処理
AI を活用したアプリケーションを使用する場合、同じ入力であっても AI の出力が実行間でわずかに異なる可能性があるため、テストには独自の課題が生じます。 この非決定論的な動作には、特別なテスト アプローチが必要です。
非決定論的テストの理解
非決定論的テストでは、テストの実行間で正当に変化する可能性のある出力を検証します。
- AI モデルの出力: GPT やカスタム AI Builder コンポーネントなどの AI モデルからの応答
- 信頼度スコア: 許容範囲内で変動する可能性のある数値評価
- 生成されたコンテンツ: AI システムが作成したテキストやレコメンデーション
AI 能力の決定論的テストに Preview.AIExecutePrompt を使用
Test Engine は、AI 応答の決定論的検証を可能にする Preview.AIExecutePrompt を提供します。 このアプローチにより、ユーザーは次のことが可能になります:
- テスト シナリオ内で AI プロンプトを実行する
- 構造化された応答の解析と検証
- 重要な出力が、潜在的な変動にもかかわらず期待に応えていることを検証
例: AI Builderを使用した評価
次の例は、Preview.AIExecutePrompt 関数を使用して AI を利用した評価システムをテストする方法を示しています。
EvaluateTestQuestionPrompt(Prompt: TestQuestion): TestResult =
With({
Response: ParseJSON(
Preview.AIExecutePrompt("PromptEvaluator",
{
Context: "You are a helpful agent asking about external customer service questions.",
Question: Prompt.Question
}).Text)
},If(
IsError(AssertNotError(Prompt.ExpectedRating=Response.Rating, Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating)),
{PassFail: 1, Summary: Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating}, {PassFail: 0, Summary: "Pass " & Prompt.Question}
))
この例では:
- このテストでは、"PromptEvaluator" モデルに対して AI プロンプトを実行します
- 評価のためにコンテキストと質問を渡します
- 返された評価が期待値と一致することを検証します
- テストの成功または失敗に関する明確なフィードバックを提供します
PowerApps-TestEngine リポジトリの AI プロンプトのサンプルで完全な実装を調べることができます。
AIを意識したテストの組み込み
GitHub Copilotを使用して AI を利用したアプリケーションのテストを生成する場合:
プロンプト:
AI Builder のフォーム処理を使用する AI 搭載アプリのテストを生成します。 非決定論的な出力に対する適切な許容範囲で AI の結果を検証するテスト ステップを含みます。
トラブルシューティングと改善
GitHub Copilotがニーズを満たさないテストを生成する場合:
- プロンプトを絞り込む: テストする内容をより具体的にします
- 例を提供する: 希望のスタイルに合った特定のテスト サンプルへのリンク
- 複雑なテストを分割する: より小さく、より焦点を絞ったテスト コンポーネントの作成を要求する
- Iterate: Copilotの応答を使用して次のプロンプトを絞り込みます
関連記事
Test Engine の機能を確認する
Test Engine のサンプル カタログを参照する
Power Fx のテスト機能の詳細情報
YAML のテスト形式を理解する
認証オプションの詳細情報
トレーニング: GitHub Copilot エージェント モードでアプリケーションをビルドする