21.7K Views
November 26, 22
スライド概要
Power Apps 勉強会 ~若手二人会 Power Apps テストを学ぼう~ のセッション2の資料になります。
2022/10 にプレビュー公開された Test Engine について解説します。 Power Apps のアプリでなぜテストをしなければいけないのか ~ Test Engine の機能的な部分までをご説明します。
#PowerApps #PowerPlatform ブログ: https://www.powerplatform.work
Power Apps の新しいテスト Power Apps Test Engine 2022 Power Apps TestEngine 2022 1
目次 Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
たく丸 人間種 Twitter @taku_ma_ru ブログ https://www.powerplatform.work YouTube https://youtube.com/@powerplatform_work 出身 青森 資格 Power Platform Functional Consultant Associate MCSD: App Builder 0 能 力 表 + 興 味 Power Apps 毎日投稿 ポケモン SV オーバーロード 50 100
ショート動画を含めて230動画以上投稿 https://youtube.com/@powerplatform_work
Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
Power Platform と一般的なアプリ開発の違い Power Apps とは 「Power Apps」は、Power Platform の中の1つでアプリを簡単に作成するためのローコード開発サービスです キャンバスアプリ Power Fx を使った自由度の高いUI で、様々なデータソースへアクセスする アプリを簡単に作成できる 現場向き モデル駆動型アプリ データモデルを設計するだけでアプリが 完成し、大量のデータの入力や検索、 業務フローの統一などが簡単にできる 業務管理向き その他データコネクタ
Power Platform と一般的なアプリ開発の違い Power Platform と一般的なアプリ開発の違い Power Platform と一般的なアプリでは「メンバー」と「開発体験」が異なります メンバー 従来の開発環境 Power Platform プロ開発者が高度な技術を使ってアプリケーションを開発する 基本は一般開発者(市民開発者)で必要な人が開発し、高度な部分はプロ開発者とコラボレーションする Power Apps Power Automate Power virtual Agents Power Pages 一般開発者 (市民開発者) Azure DevOps AI Builder Dataverse Power BI Power Fx プロ開発者
Power Platform と一般的なアプリ開発の違い ユーザーが実際にアプリを体験で きるタイミング Power Platform と一般的なアプリ開発の違い Power Platform と一般的なアプリでは「メンバー」と「開発体験」が異なります 従来の開発手法 ユーザーが実際に動作するアプリを確認できるタ イミングは受入テストのタイミングになります。 そのため、計画してからアプリの動作が確認でき るまでに非常に長いリードタイムが発生します。 また、実際に業務担当者と開発者での認識の 違いが発生しやすく、ユーザーが当初要件として もともめていたものと、実際にアプリ開発者が作 成した物との間にギャップが生じるリスク高まる可 能性があります。
Power Platform と一般的なアプリ開発の違い ユーザーが実際にアプリを体験で きるタイミング Power Platform と一般的なアプリ開発の違い Power Platform と一般的なアプリでは「メンバー」と「開発体験」が異なります Power Platformの開発手法 Low Code + WYSIWYG Power Apps で実際に機能するアプリを体験 できるタイミングは、作成している段階で確認で きます。従来の開発体験と違い、非常に早い段 階で機能するアプリの動作が体験できるため、 要件の変更や、すぐに機能追加への対応が可 能になります。 実際に業務に携わる人がアプリを開発することに よって、作成したアプリとのギャップが少なくなりま す。 Low Code で 高速開発
Power Platform と一般的なアプリ開発の違い ユーザーが実際にアプリを体験で きるタイミング Power Platform と一般的なアプリ開発の違い Power Platform と一般的なアプリでは「メンバー」と「開発体験」が異なります 従来の開発手法 Power Platformの開発手法 Low Code + WYSIWYG ユーザーが実際に動作するアプリを見るまでに長いリードタイムが あるため、ユーザーが当初の要件として求めていたものと、アプリ 開発者が作成したものとの間にギャップが生じるリスクが高まる 実際に機能するアプリを開発プロセスの非常に早い段階 で体験し、作成した物とのギャップを少なくし、要件が変 更された場合はすぐに機能を追加することができる Power Apps vs 従来のアプリ開発のアプローチ - Power Apps | Microsoft Learn
Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
テストの目的と計画 なぜテストを行うのか
テストの目的と種類 なぜテストを行うのか アプリの検証 自動テストや手動テストを行うのは、ソフトウェアが意図したとおりに動作することを確かめる必要があるため です 作られたアプリや機能はそのままではなく、要件が追加、変 更されることが多々あります。 機能が増えるにしたがって、1 人の開発者だけでは、含ま れているすべての機能を記憶したり、その機能を維持する 方法を追跡したりすることが難しくなる可能性があります。 テストを行うことによって、アプリの機能を追跡するだけでなく、 新しい機能を追加しても古い機能が破損されないことを継 続的に確認することもできます。 テストの基本的な目的は、アプリの変更によって既存の機 能が破損されないことを検証し、将来変更があっても、新し く追加されたコードが期待どおりに動作し続けることを確認 することです。 テストする理由 - Training | Microsoft Learn
テストの目的と種類 なぜテストを行うのか
テストの目的と種類 なぜテストを行うのか アーキテクチャの見直し Q A 時間がかかる テストをしない理由は? 不具合を出したくない 面倒 テストをしている(繰り返していない) テストできる環境がない
テストの目的と種類 なぜテストを行うのか アーキテクチャの見直し Q テストをしない理由は? A テストがやりにくい形になっている
テストの目的と種類 なぜテストを行うのか アーキテクチャの見直し テストがしやすい形に分割されるので、安定性が向上し、再利用しやすい機能になります Q 1 機能追加 機能フィードバック テスト 2 6 3 不具合確認 テストをしない理由は? 機能リリース A テストがやりにくい形 になっている 5 4 不具合修正 例えば1つの機能が巨大になっている場合、その中の小さな変更をテストす ることはできなかったり、やりにくかったりします。 テストを行うことによって機能 が分割され、テストがしやすい構成に変更させることができます。 テストにより、同じような処理が削減され、安定性が向上し、機能が理解し やすくなり、機能の移動も容易になります。
テストの目的と種類 なぜテストを行うのか アーキテクチャの見直し アプリを繰り返し、検証、アーキテクチャの見直しを行うこと でアプリそのものの品質を向上させる
テストの目的と種類 テストの種類 テストには、大きく分けて「単体テスト」「結合テスト」「受け入れテスト」があります 開発 単体テスト アプリの特定の機能や特徴が正しく機能するかどうかを確認します。 単体テストでは、ソリューションに含 まれるコードが正常に動作することを確認します。 品質保証テスト ソフトウェア品質の測定・確保・保証を目的として行われるテスト。 パフォーマンステスト システムに通常時やピーク時に想定される負荷をかけ、性能や耐久性を計測するテスト。 本番 結合テスト 統合したシステムが想定どおりに動作するかどうかを確認します。 すべての単体テストが正しく機能する 場合でも、2 つの単体間の統合が失敗する可能性があるため重要です。 結合テストは、実際の業務プ ロセスのケースに近いテスト シナリオに従って実行できます。 受け入れテスト 開発者が構築したアプリが、ユーザーが最初に要求した要件と一致していることが確認します。
Power Platform と一般的なアプリ開発の違い Power Apps もアプリケーション ローコードですが、 Power Apps もアプリです 【#PowerApps】キャンバスアプリもアプリなんだから自動テストを導入しよう - Qiita
Power Platform と一般的なアプリ開発の違い Power Apps もアプリケーション ローコードですが、 Power Apps もアプリです 理想 自分用のアプリ 1,2画面のアプリ 期間限定のアプリ
Power Platform と一般的なアプリ開発の違い Power Apps もアプリケーション ローコードですが、 Power Apps もアプリです 理想 現実 自分用のアプリ 組織全体のアプリ 1,2画面のアプリ 複雑な仕様のアプリ 期間限定のアプリ 長期間使われるアプリ
Power Platform と一般的なアプリ開発の違い Power Apps もアプリケーション ローコードですが、 Power Apps もアプリです 理想 現実 自分用のアプリ 組織全体のアプリ 度重なる仕様変更 1,2画面のアプリ 複雑な仕様のアプリ 様々な不具合 期間限定のアプリ 長期間使われるアプリ 作成期間の長期化 アプリそのものの品質を向上させる必要がある Power Apps でもテストは大事 結果
Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
Test Engine Power Apps Test Engine とは NEW Introducing Test Engine: An open platform for automated testing of canvas apps | Microsoft Power Apps Introducing Test Studio to build endto-end tests and maintain your app quality | Microsoft Power Apps Test Studio が登場 Test Engine が登場 10月 1月 2019 2021 2020 Power Automate 名称変更 Power Virtual Agents 登場 2022 Power Fx の発表 Power Apps Test Studio Feedback discussion thread - Power Platform Community (microsoft.com)
Test Engine Power Apps Test Engine とは 2022年10月に登場した Power Apps のテストツールでGitHub のオープンソースプロジェクトです。 現時点(2022/11時点)ではプレビュー中のツールで仕組みには Playwright が使われています。 Test Engineの目標は、あらゆるタイプのPower Appsに対して堅 牢なテストプラットフォームを顧客に提供し、自動テストをアプリケー ション開発プロセスに非常に簡単に統合できるようにすることです。 現時点ではキャンバスアプリでローカル実行のみに対応しているが、 最終的にはすべてのアプリタイプで実行でき、Azure DevOps など にも対応する予定です。 Introducing Test Engine: An open platform for automated testing of canvas apps | Microsoft Power Apps
Test Engine Power Apps Test Engine とは 01 Power Fx 02 コネクタのモック化 アプリと API との接続を 分離してテストすることが できます テストは、使い慣れた Power Fx 言語を使用 して、 YAML ファイルで定 義されます Future 05 Test Studio Test Studio で行ったテ ストを再利用することがで きます Test Engine 03 スクリーンショット Screenshot() 関数を使う ことで、実際のアプリの画 面のテスト状況をスクリーン ショットとして保存することが できます 04 動作ビデオ テスト全体の実行の録画を することができます。テスト実 行中の内容を正確に観察で き、失敗したテストの調査な どに役立ちます
Test Engine Power Apps Test Engine とは 01 Power Fx テストは、使い慣れた Power Fx 言語を使用して、 YAML ファイルで定義されます testPlan.fx.yaml テストを定義するために C#、JavaScript といった言語でコードを書く必要はありません。 使い慣れたPower Fxを使用して、YAMLファイルで定義されます。 Select (選択)、Assert (結果)、SetProperty (値の設定) など、Test Engineでは Power Fx関数を使用してテストを定義できます。 Test Engine
Test Engine Power Apps Test Engine とは 02 コネクタのモック化 アプリと API との接続を分離してテストすることができます コネクタのモックを定義できます。この手法により、Power Appsのテストを継続しながら、 アプリが接続するリモートAPIから Power Apps を分離できます。 これは、Power Apps アプリの動作のみを確認したり、他の API に影響を与えたり、影 響を受けずにテストを行うことができます。 Test Engine
Test Engine Power Apps Test Engine とは 03 スクリーンショット Screenshot() 関数を使うことで、実際のアプリの画面のテスト状況を スクリーンショットとして保存することができます 新しいPower Fx関数として Screenshot()が利用できます。 この関数を使用すると、テスト実行中の任意の時点でアプリケーションの状態のスク リーンショットを撮影できます。たとえば、テストの最初と最後にスクリーンショットを撮影 して、エンド・ユーザーが表示する内容を把握できます。 Test Engine
Test Engine Power Apps Test Engine とは 04 動作ビデオ テスト全体の実行の録画をすることができます。テスト実行中の内容を正確に観察 でき、失敗したテストの調査などに役立ちます recordVideoの設定をtrueに設定するだけでテスト実行全体のビデオを自動的に記録 することもできます。 記録されたビデオを使用して、エンド・ユーザーがテスト実行中に何を表示しているかを正 確に把握できます。これは、失敗したテストを診断や調査する場合に非常に便利です。 Test Engine
Test Engine Power Apps Test Engine とは 05 Test Studio Test Studio で行ったテストを再利用することができます Test Studioのユーザーで、そのツールを使用してすでに記録されたテストを Test Engine で再利用することが可能になります。これによりユーザーはテストの内容 を GUI で記録することもでき、より簡単にテストを行うことができるようになります。 2022/10 から利用できますが、うまく動作しませんでした。。。。 Test Engine
Test Engine Power Apps Test Engine とは 01 Power Fx 02 コネクタのモック化 アプリと API との接続を 分離してテストすることが できます テストは、使い慣れた Power Fx 言語を使用 して、 YAML ファイルで定 義されます Future 05 Test Studio Test Studio で行ったテ ストを再利用することがで きます Test Engine 03 スクリーンショット Screenshot() 関数を使う ことで、実際のアプリの画 面のテスト状況をスクリーン ショットとして保存することが できます 04 動作ビデオ テスト全体の実行の録画を することができます。テスト実 行中の内容を正確に観察で き、失敗したテストの調査な どに役立ちます
Test Engine Power Apps Test Engine の準備 必要なもの 01 02 03 .NET 6.0.x SDKが利用可能 https://dotnet.microsoft.com/en-us/download/dotnet/6.0 PowerShell が利用可能 https://docs.microsoft.com/enus/powershell/scripting/install/installingpowershell?view=powershell-7.2 Test Engine の clone or Download https://github.com/microsoft/PowerApps-TestEngine
Test Engine Power Apps Test Engine を試す Samples フォルダーの任意のソリューションを環境に追加 PowerApps-TestEngine-main/samples/任意のフォルダ/任意のフォルダ.zip をインポート sampleフォルダーの構成 ○○.zip サンプルソリューション testPlan.fx.yaml Test Engine のテストファイル testPlanForRegionUsePeriod AsDecimalSeparator.fx.yaml ピリオドを小数点として使用 する言語と地域用のファイル
Test Engine Power Apps Test Engine を試す samples には以下の 9 個のテストサンプルが含まれています
Test Engine Power Apps Test Engine を試す samples には以下の 9 個のテストサンプルが含まれています
Test Engine Power Apps Test Engine のテストプラン testPlan.fx.yaml で利用可能なキーと値 プロパティの種類 testSuiteName 必須 testSuiteDescription テストスイートの名前 テストスイートの説明 persona 必須 テストを実行する際にログインするユーザーのキーや値 appLogicalName 必須 アプリの論理名 appId アプリのID 論理名の指定がない場合に利用される networkRequestMocks コネクタのモックの定義 testCases 必須 テストケースの PowerFx onTestCaseStart テストケースを実行する前に実行する必要がある処理 onTestCaseComplete テストケースが完了した際に実行する必要がある処理 onTestSuiteComplete テストスイートが完了した際に実行する処理 PowerApps-TestEngine/test.md at main · microsoft/PowerApps-TestEngine · GitHub
Test Engine Power Apps Test Engine を試す Samples フォルダーの任意のソリューションを環境に追加 PowerApps-TestEngine-main/samples/任意のフォルダ/任意のフォルダ.zip をインポート
Test Engine Power Apps Test Engine を試す 共通の設定情報ファイルを自分のテスト環境に合わせて編集する PowerApps-TestEngine-main/src /PowerAppsTestEngine/にconfig.dev.jsonを追加 設定値は config.json からも読み込まれますが、config.dev.json がある場合は config.dev.json が優先して読み込まれます 開発環境/本番環境などによって使い分けたりする際に利用します
Test Engine Power Apps Test Engine を試す 共通の設定情報ファイルを自分のテスト環境に合わせて編集する config.dev.json を自身の環境に合わせて編集 プロパティの種類 設定 → セッション詳細から取得可能 environmentId テストするアプリがある環境のID tenantId テストするアプリがあるテナントのID testPlanFile テストプランのファイルパス outputDirectory テストの結果を格納するフォルダのパス logLebel 出力するログレベル 既定:情報以上 domain queryParams アプリが使用するドメイン 既定値:apps.powerapps.com アプリを起動するときのクエリパラメータ
Test Engine Power Apps Test Engine を試す ユーザーIDとパスワードを環境変数に設定する PowerShell を利用してキーと値を登録 コマンド $env:user1Email = "[email protected]" $env:user1Password = "password" キーや値は各テストプランで指定します Get-ChildItem env: で登録されているかを確認が可能です
Test Engine Power Apps Test Engine を試す テストを実行する config.dev.jsonで設定したテストを実行 PowerApps-TestEngine-main¥src¥PowerAppsTestEngine コマンド dotnet run
Test Engine Power Apps Test Engine を試す テスト結果の確認 outputDirectory に指定したフォルダで結果を確認 実行した結果は 失敗/成功にかかわらず、ファイル が作られます。 スクショ、実行の動画、ログなどが確認できます
Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
Test Engine Power Apps Test Engine を試す DEMO
Test Engine Power Apps Test Engine でコネクタのモックを試す samples/connector のファイルをテストする dotnet run 該当のソリューションをインポート後、一度アプリを起動し、 MSN天気の接続を作成してください
Test Engine Power Apps Test Engine でコネクタのモックの仕組み テストファイルとレスポンスファイルを定義する 現時点で利用するにはある程度 API に対する知識が必要 testPlan.fx.yaml response.json テストプランファイルには networkRequestMocks を記載し、API の結果は response.json ファイルを作成する
Test Engine Power Apps Test Engine を試す DEMO
Power Platform と一般的なアプリ開発の違い テストの目的と種類 Test Engine Test Engine の デモ まとめ
Test Engine Power Apps Test Engine の現時点での制限 調査できた範囲での現時点(2022/11/23)での私の環境で確認できた制限事項 1. 以下のコントロールのテストはサポートされていません 1. グラフ 2. タイマー 3. メディア 4. MR 2. 多要素認証はサポートされていません 3. Trace関数などのいくつかの関数はサポートされていません
Test Engine Power Apps Test Engine の実行時のコツ 1. タイムアウトエラーはもう一度実行すればOK 1. テストによってはタイムアウトになることがあります。大抵の場合はもう一度実行すれば問題ありません。 2. 何度実行してタイムアウトになる場合は、一度アプリを立ち上げてみましょう。アプリ起動時に接続などを求め られると TestEngine は先に進むことができません。 3. テストプランでタイムアウトの設定をすることもできます。 2. エラーが起きたらとりあえず動画を確認 1. 録画される動画が非常に優秀です。失敗しても動画を確認し、どこで止まっているのかを確認できます。私は これに非常に助けられました。 3. まずはサンプルから試してみる 1. 最初はサンプルのテストを試してみましょう。テストプランの書き方の参考になります。
Test Engine まとめ 1. Power Apps の新しいテストツールです 2. 現時点ではキャンバスアプリのテストのみ対応しています 3. Test Engine 内でだけ利用できる便利な関数があります 4. コネクタのモック化ができます 5. 実行時の動画の録画ができます 6. Test Studio とのコラボができます 7. 現時点ではローカル実行のみできます 8. いくつか非対応のコントロールがあります 9. いくつか非対応の関数があります 10.アプリが巨大になってきたらテストは避けられません。自動テストをうまく組み込んでテストにかかる時間を減らし、アプリの 品質を向上させていきましょう
Test Engine 参考 • テストする理由 - Training | Microsoft Learn • Power Apps vs 従来のアプリ開発のアプローチ - Power Apps | Microsoft Learn • Introducing Test Studio to build end-to-end tests and maintain your app quality | Microsoft Power Apps • https://github.com/microsoft/PowerApps-TestEngine • Introducing Test Engine: An open platform for automated testing of canvas apps | Microsoft Power Apps • 【#PowerApps】キャンバスアプリもアプリなんだから自動テストを導入しよう - Qiita
終わり