注意
プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が事前にアクセスし、そこからフィードバックを得ることができます。
Power Platform アプリケーションの包括的なテスト計画の作成は、特に複雑なシナリオの場合、時間がかかる場合があります。 GitHub Copilot のような AI 支援オーサリング ツールは、テスト テンプレートの生成、テスト ケースの提案、定型コード作成の自動化によって、このプロセスを大幅に加速することができます。
このガイドでは、GitHub Copilot と Power Platform ソース管理ソリューションを使用して、Test Engine のテスト プランを効率的に作成する方法について説明します。
前提条件
始める前に、以下のことを確認してください:
- 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 Test Engine のパターンを理解し、より正確なテストを生成する際に役立ちます。
エージェント モードでの GitHub Copilot の操作
Visual Studio Code の GitHub Copilot Chat には、ソリューション ファイルに基づいてテストを生成するのに役立つエージェント モードがあります。 このモードでは、Copilotがプロジェクトのコンテキストにアクセスし、より深く理解することができます。
テスト生成にエージェント モードを使用するには、次の手順を実行します。
- VS Code で、GitHub Copilot Chat (Ctrl+シフト+I) を開きます
- Copilot のモード セレクタからエージェントを選択します
- 作成するテストに関する詳細なプロンプトを作成します
テスト生成のプロンプトの例
テスト生成には、次のようなプロンプトを使用してみてください。
目標:
ButtonClicker サンプルをモデルにした Power Apps Test Engine を使用して、Canvas アプリの包括的なテスト スイートを生成します。
プロンプト:
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 支援によるテスト作成のベスト プラクティス
Test Engine 用 GitHub Copilot のテスト作成を最大限に活用するために、次のセクションを検討してください。
プロンプトに明確なコンテキストを提供する
テストする対象を具体的に指定し、以下への参照を含めます。
- テストする正確なファイル
- テンプレートとして使用するサンプル テスト
- カバーする特定のテストシナリオ
- 認証または環境の要件
コンテキストに Test Engine サンプルを使用する
samples.md ドキュメントには、Test Engine リポジトリから利用可能なすべてのサンプルがカタログされています。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のサンプルは、ギャラリー インタラクションをテストする方法を示しています。
プロンプト:
「TitleLabel」、「PriceLabel」、「SelectButton」 コントロールを含む品目を持つ 「Products」 ギャラリーがあるギャラリー アプリのテストを生成します。 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 がニーズを満たさないテストを生成した場合:
- プロンプトを絞り込む: テストする内容をより具体的にします
- 例を提供する: 希望のスタイルに合った特定のテスト サンプルへのリンク
- 複雑なテストを分割する: より小さく、より焦点を絞ったテスト コンポーネントの作成を要求する
- 反復: Copilot の応答を使用して、次のプロンプトを絞り込みます
関連記事
Test Engine の機能を確認する
Test Engine のサンプル カタログを参照する
Power Fx のテスト機能の詳細情報
YAML のテスト形式を理解する
認証オプションの詳細情報
トレーニング: GitHub Copilot エージェント モードを使用したアプリケーションの構築