注意
テスト エンジンは非推奨 となり、今後のリリースで削除される予定です。 Power Platform および Dynamics 365 サービスのテスト自動化機能には、Power Platform Playwright サンプルを使用します。
概要
Power Appsテスト エンジンは、さまざまな拡張ポイントを通じてコア テスト機能を拡張できる堅牢な拡張性フレームワークを備えています。 この記事では、以下について説明しています。
- Microsoftがファースト パーティの拡張機能をどのように署名し、検証するか
- Managed Extensibility Framework (MEF) を使用した拡張性モデルのしくみ
- 組織が独自の拡張機能を作成するためのオプション
Microsoft署名されたコンポーネント
重要
パブリック プレビュー フェーズ中、pac テストの実行 コマンドはMicrosoft署名された拡張機能のみを読み込みます。 この設計により、Test Engine プラットフォームのセキュリティ、安定性、パフォーマンスが確保されます。
Microsoftは、ファースト パーティのコンポーネントを構築、署名、検証して、品質とセキュリティの標準を満たしていることを確認します。 これらのコンポーネントには、以下のものが含まれます:
- コア認証プロバイダー
- キャンバス アプリとモデル駆動型アプリ プロバイダー
- Power Fx の標準機能と標準アクション
拡張性フレームワーク (MEF)
Test Engine では、Managed Extensibility Framework (MEF) を使用して、プラグインが可能なアーキテクチャを実現しています。 このフレームワークでは、主に 3 種類の拡張機能を使用できます。
認証拡張機能
認証拡張機能を使用すると、Power Platform でさまざまな方法で認証できます。
- ストレージ状態認証 - 既定のブラウザー ベースの認証方法
- 証明書ベースの認証 - 非対話型のテスト実行用
- カスタム認証プロバイダー - 特殊な認証シナリオ用
詳細については、Test Engine での認証を参照してください。
プロバイダー拡張機能
プロバイダー拡張機能を使用すると、さまざまな種類のアプリケーションをテストできます。
- Canvas アプリ プロバイダー - Power Apps キャンバス アプリケーションのテスト用
- モデル駆動型アプリ プロバイダー - Dataverse モデル駆動型アプリのテスト用
- Power Fx プロバイダー - Power Fx ステートメントの個別実行用
Portal Provider -Power Apps
詳細については、キャンバス アプリケーション、モデル駆動型アプリケーション、および Dataverse 拡張機能を参照してください。
Power Fx 拡張機能
Power Fx 拡張機能は、カスタム関数を使用して新しいテスト機能を追加します。
- ユーザー定義関数 - テスト計画で定義されたローコード関数
- C# ReflectionFunction の実装 - C# モジュールに実装されたカスタム関数
詳しくは、Power Fx 関数および C# ReflectionFunction の実装を参照してください。
拡張機能の開発オプション
組織には、Test Engine を拡張するための複数のオプションがあります。
オープンソース バージョンの使用
Power Appsテスト エンジンは、MIT ライセンスの下でオープンソース プロジェクトとして使用できます。 ファースト パーティのMicrosoft、サード パーティのチーム、および組織は、次のことができます。
- 特殊なテスト シナリオ用の新しいプロバイダーを作成する
- カスタム認証メカニズムを開発する
- 新しい C# ReflectionFunction 実装をビルドする
- コア機能を拡張するモジュールを作成する
- コア製品で検討するためにコントリビューションを提出する
Power Fx ユーザー定義関数
より単純なシナリオでは、テスト計画でユーザー定義関数を直接作成できます。
testSuite:
testCases:
- testCaseName: "Test with custom functions"
userDefineFunctions:
- name: "FormatDateString"
parameters: [date]
expression: "Text(date, 'yyyy-MM-dd')"
steps:
# Use the custom function in your test steps
- action: PowerFxTestStep
expression: FormatDateString(Now())
ReflectionFunction を含むカスタム C# Power Fx 関数
より複雑なシナリオでは、組織は ReflectionFunction クラスを実装し、モジュールを介して登録することで、カスタム C# 関数を開発できます。
// Define your function class
public class SampleFunction : ReflectionFunction
{
public SampleFunction() : base(DPath.Root.Append(new DName("Preview")), "Sample", FormulaType.Blank)
{
}
public BlankValue Execute()
{
Console.WriteLine("Sample function executed");
return BlankValue.NewBlank();
}
}
// Register your function in a module
[Export(typeof(ITestEngineModule))]
public class TestEngineSampleModule : ITestEngineModule
{
public void RegisterPowerFxFunction(PowerFxConfig config, ITestInfraFunctions testInfraFunctions,
ITestWebProvider testWebProvider, ISingleTestInstanceState singleTestInstanceState,
ITestState testState, IFileSystem fileSystem)
{
config.AddFunction(new SampleFunction());
}
// Implement other required interface methods...
}
Test Engine チームとのコラボレーション
オープンソース テスト エンジンを使用して重要な拡張機能を開発する組織は、拡張機能を公式製品で使用できるようにするためのプル要求を作成することを検討できます。 このプロセスには通常、次のものが含まれます。
- Development - オープンソース テスト エンジンを使用して拡張機能を作成する
- 検証 - 独自の環境で拡張機能を徹底的にテストします
- コラボレーション - Test Engine のコア チームと協力して拡張機能を評価します
- Integration - 承認された場合、Microsoft署名し、拡張機能を製品に統合します
このコラボレーション モデルにより、公式の Test Engine 製品のセキュリティと信頼性を維持しながら、イノベーションが可能になります。
技術統合ポイント
次のセクションでは、Test Engine の拡張性が Playwright や機能ライフサイクルなどのコア テクノロジとどのように統合されるかについて説明します。 これらの統合ポイントを理解すると、カスタム拡張機能を効果的に開発およびデプロイするのに役立ちます。
Playwright の統合
Power Appsテスト エンジンは、ブラウザーの自動化の基盤となる Playwright 上に構築されています。 カスタム拡張機能は、Playwright の IBrowserContext と使用して、高度なブラウザー ベースのテスト機能を作成できます。
機能のライフサイクル
新しい拡張機能は 機能ライフサイクルに従います。
- プレビュー名前空間 - 新しい拡張機能は、早期テストのためにプレビュー名前空間で最初に利用できます
- TestEngine 名前空間 - 検証後、拡張機能はコア TestEngine の名前空間に移動します
拡張モデルの利点
機能拡張モデルには、次のような大きな利点があります。
- 標準化 - Microsoft署名されたコンポーネントにより、一貫した品質とセキュリティが確保されます
- Innovation - オープンソース モデルにより、コミュニティ主導のイノベーションが可能になります
- 柔軟性 - 組織は、独自の要件に特化した拡張機能を作成できます
- 統合 - 貴重な拡張機能は、公式製品に含めることが検討されています