48.5K Views
October 18, 22
スライド概要
Japan Power Platform Conference 2022にて登壇した際の登壇資料です。
Power AppsのキャンバスアプリでのTest Studioと監視(モニター)機能について纏めています。
https://powerplatformconf.connpass.com/event/245996/
2022
2022 Power Appsで テストしてみる @koruneko32767
@koruneko32767 コルネの進捗や備忘録が記されたなにか Korune Ch. コルネ - YouTube 2022
2022
アプリの重要度やアプリの規模によってはきちんとアプリのテストをして事前にバグを 潰し、またアプリの動作に掛かっている処理時間などを分析してアプリのパフォーマンス向上に努める Test Studio 監視(モニター)機能 この資料ではPower AppsのTest Studioと監視(モニター)機能について 説明しているよ! 【免責事項】 機能の検証は2022年10月上旬時点のバージョンで行っています。 充分に検証を行っていますが、内容に誤りがありましたらご連絡いた だけますと幸いです。 2022
アプリが想定通りに機能することを検証するためのプロセス アプリの品質を確認するために役立 てられています 手動でのテストでは今後のアプリ改修に大きな影響を与えてしまう可能性 重要なアプリやよく使われるアプリなんかは テストするようにしたほうがいいね! 中でも更新がよくあるアプリなんかはテスト を自動化して工数を削減したいね! Test Studio 開発 テスト リリース テストは改修の度に発生 手動でのテストはコストがかかりミスが 発生する恐れあり 2022 開発 テスト リリース テストを自動化することでコスト削減! 人為ミスによるバグを防げる!
アクションのこと アプリ作成時に利用する式の他、テスト用に用意されたPower Fx テストステップと呼ばれる一連のアクションで構成 テストケースを整理、グループ化するために利用 テストの検証結果によって予想される結果を設定 参考: テスト スタジオの用語 2022
設定より数式レベルのエラー管理をオンに設定 2022
キャンバスアプリを作成するときと同じような操作感で 操作が可能だよ。 録音(Record)はPower Automate Desktopで操作を記録し てステップを作成するイメージだね! 2022
録音(Record)機能を用いて実際の操作からス テップを生成 現在公開中のバージョンが表示 2022
左のペインに実施したStepが記録 この画面では記録されたステップの式を確認、編集す ることはできないよ。 もし操作をミスした場合は「キャンセル」を選択して、 最初からやり直そう。 もちろん、後からステップの式を修正することで対応 することも可能だよ。 2022
記録された数式は選択することで編集することも可能 2022
アクションの入力候補はもちろんコントロール の入力候補もキャンバスアプリで関数を入力す るときのように利用できるよ! 2022
再生を行う前にはアプリを公開する必要がある 「再生」に成功すると画面が入力されたね! 2022
テストの検証結果によって予想される結果を設定 Assert関数 Assert関数のようにTest Studioように用意された関数もあるんだね! Assert関数は Assert([ テストを評価する式], [ エラー時のメッセージ(Option)]) のように利用するよ。 2022
Assert(DSmyCartCntLbl.Text = "1", $"DSmyCartCntLbl.Text: {DSmyCartCntLbl.Text}") テストアサーションで失敗した場合は左の画像ようになるよ。 後続のステップは実行されず、エラー時のメッセージに設定した ようなメッセージが表示されていることが確認できるね。 2022
CountIf( LSListItemGallery.AllItems, ID in Search(RecommendedBooks, “Power”, "Title").ID ) = CountIf(RecommendedBooks, “Power” in Title) Test Studio上でも委任に警告が発生する Test Studioからでもデータソースを参照することができるんだね! 2022
Trace関数 Trace関数は Trace([ トレースメッセージ], [ トレースレベル(Option)], [ カスタムデータを含むレコード(Option)]) のように利用するよ。 2022
変数を設定するにはSet関数を利用 Test Studio上ではUpdateContext関数は利用できない Step内のアクションに設定する式はキャンバスアプリ同様、セミコロン(;)で区切ることで複数設定することが可能 Test Studio内でもSet関数を利用すれば変数を 宣言できるんだね! 変数にはもちろん計算結果を設定することも 可能だよ。 2022
OnTestCaseStart テストケース開始時に実行されます。 OnTestCaseComplete テストケース終了時に実行されます。 OnTestSuiteComplete テストスイート終了時に実行されます。 ここの設定を行うことでテストで使う変数の初期化やテスト結果の通知なんかができるようになるね! TeamsやOutlookに通知するときは、コネクタを事前にアプリに追加しておく必要があるよ。 なお、ここの設定はTest Studio内のすべてのスイート/ケースで共通になるのでその点を意識しておく必要があるね。 2022
このテストのプロパティはすべてのテストで共通の設定となるので、 テストデータはリストなどにケースごとで作成して参照するように するといいね! 現時点ではこのような書き方をすると委任に関する警告がでるみた いです。 2022
テスト結果は例えば特定のチャネルに対して、TestCaseResultを JSONに変換したものを渡してあげると、チーム内でテスト結果 の共有ができるようになるね! もちろんカスタマイズしたメッセージを送るのもいいね。 2022
テスト結果は例えば特定のチャネルに対して、TestSuiteResultを JSONに変換したものを渡してあげると、チーム内でテスト結果 の共有ができるようになるね!(先ほどと同じ使い方だね) TestCaseResultとTestSuiteResultとでは取得できる項目が異なり、 OnTestCaseCompleteとOnTestSuiteCompleteとでは実行される タイミングがそれぞれ異なるので、違いを理解してつかいわけ られるようになろう。 2022
Test Studioをわざわざ立ち上げずともブラウザ上でテストを実行可能な リンクを作成することが可能 「再生リンクのコピー」(と「再生」)は選択しているケース、またはスイートに対して実施 テストの実施が完了する前にテストを実行しているタブを閉じるとテストは 中断されます AzureDevOpsの活用までいかずとも再生リンクを控えて開発メンバーで共有しておくこ とで、アプリの全体公開前にアプリを簡単にテストしてデグレのチェックができるよう になるね。 また作成した再生リンクはケース/スイートで固定なのでビルド及びリリースプロセスを 変更することなくテストを更新することができるよ! ※__PATestCaseIdや__PATestSuiteIdという内部IDで管理されているようです。 AzureDevOpsなどの継続的なビルドとリリースのパイプライン(CI/CD)にテストを 統合することができる 2022
テスト スタジオ - ベスト プラクティス すべてのテストを自動化するのは困難であり、テストの自動化に完全に依存することはお勧めしていません。 繰り返し作業 ビジネスに大きな影響 かなりの時間や労力を要する 複数のテストケースに分割することをお勧め テストケース内で設定したテストアサーションのうち1つでも失敗すると、後続のStepが実 施されず他の機能がテストされない 前のテストケースが失敗したかどうかに関係なく他の機能をテ ストできます 2022
各Stepのアクションには複数の式を設定することができますが、1つまで どこで失敗したを特定するのが困難 各テストケースには最低でも1つ、テストアサーションによる予想されるテスト結果を用意 類似するテストケースは同じテス トスイートに纏めてグループ化や分類 後から見返したときにわかりや すいようにきちんと説明を記載 すべてのケースを自動化するのがよいわけではないんだね! 一般的なテストでも、テストを自動化しても手動テストを一切しなくなるわけじゃないんだ。 これら5つの考慮事項を考慮してテストを作成するようと今後のアップデートでの影響も受けに くいアプリ開発のサイクルを作成できるかもしれないね。 2022
私見を交えた 現時点の技術では手動テストが なくなるようなことはありません テストを 自動化したからといって、すべての手動テストがなくなるわけではない テストの自動化は初期コストが手動テストに比べて高くなります テストの自動化はコスト削 減だけではありません 不具合の早期発見が可能 2022 ヒューマンエラーによるミスを防ぐ
テスト観点を洗い出す テストをするための項目を纏める行為 テストタイプ 機能テスト テスト区分 画面表示 カテゴリ レイアウト セキュリティテスト 権限 手動 レイアウト配置 手動 文字 自動 表示/非表示 自動 項目入力 検索結果のフィルタ 自動 画面遷移 手動による画面遷移 自動 自動による画面遷移 自動 閲覧 手動 書き込み 手動 データソース ※1 2022 テスト自動?手動? *1 ヘッダー 画面項目 画面操作 観点
テストスタジオ - 既知の制限 たまに発生したりしなかったり?で再現性が よくわからない(そこまで検証していない)です 2022
監視(モニター)機能 問題を診断およびトラブルシュー ティングする機能 キャンバスアプリ モデル駆動型アプリ アプリを開発しながらイベントのログを表示 実行時に公開されたアプリを監視 アプリの動作を理解して改善す るためのその他主要なアクションを監視 今回はキャンバスアプリでのモニター機能についてお話しするよ。 2022
アプリのデバッグや診断に役立ち、よりアプリの品質を高めることに役立ちます その操作でアプリ上でなにが実行されているかという アプリの詳細を確認 アプリに含まれるイベントや数式がどのように機能し、どの程度の処理時間が発生しているかをよりよく理解 アプリのパフォーマンスを向上 エラーや問題を特定 モニター機能を利用することで、アプリ内でどのようなアクションが実施されているかや、 そのアクションの実行時間や実行結果などを確認することができるようになるんだよ! モニター機能は実行ログを提示してくれるだけなので、アプリのパフォーマンス向上のため にはそこからさらにアプリの改修などのアクションが必要になってくるよ。 2022
2022
2022
公開されたアプリ 2022 開発中のアプリ
列名 内容 ID イベントのシーケンス番号です。 時刻 イベントが発生した時刻。 カテゴリ ネットワーク などのイベントのタイプ。 操作 アプリ内の要求の結果の内部操作名。 例えば、createRow は Patch 関数からの操作名です。 結果 ステータス コードのテキスト説明。 たとえば、429 ステータスは結果列に "エラー" として表示されます。 行の色は、エラーや警 告をすばやく識別するのにも役立ちます。 結果情報 エラー コードと結果の詳細な翻訳。 たとえば、429 ステータス コードはこの列に "要求が多すぎます" と表示されます。 状況 ネットワーク要求の HTTP ステータス コード。 たとえば、2XX コードは成功した要求を表し、4XX コードはエラーを表します。 期間 期間は主にアプリのネットワーク通話のパフォーマンスを理解するために使用できますが、イベントの種類によっても異なります。 たとえば、ネットワーク要求の場合、期間は要求が送信されて応答が受信されるまでにかかる時間です。 データ ソース 発生したイベント操作によってアクセスされるデータ ソースの名前 (たとえば、Microsoft Dataverse テーブル)。 コントロール このイベントに関連付けられているコントロール名です プロパティ 発生したイベントのアクティブなコントロール プロパティ。 応答サイズ ネットワーク要求イベントの場合、送信者からアプリに受信した応答のサイズをバイト単位で表します。 2022
2022
プロパティの表示例 2022
モニター画面を開いた状態でアプリの「アプリのプレビュー(F5)」によりア プリの操作 現在開発中のアプリに対してモニターが実施 操作 開いていたモニター画面にアクションのモニターが表示 モニター画面を開いて「公開したアプリの再生」により自身でアプリの 「ユーザー接続」により、指定したユーザーによりアプリの操作 公開されたアプリに対してのモニターが実施 開いていたモニター画面にアクションのモニターが表示 モニター機能は開発中のアプリに対して実施する場合と、公開されたアプリに対して 実施する場合とで利用できる機能が異なるのでその点を意識するようにしよう。 公開されたアプリに対してのモニター機能にある「ユーザー接続」によるモニターの 実施は、アプリ利用者から何かしらの問い合わせがあった際に、都度詳細な実行方法 をヒアリングするのではなく、実際に操作してもらうことでモニターが実施できるの で、便利な機能だね! 2022
公開されたアプリでも「公開されたアプリのデバッグ」をオンにすることで、特定のアクションの式を確認することができるよ! ただしこの機能を有効にしてしまうと、アプリを利用しているすべてのユーザーに対して悪影響を及ぼしてしまいます。 悪影響を最小限に抑えるためには、公開されたアプリでのアクション式を確認する必要がなくなったらこの機能をオフにします。 2022
検証不足な点が多々見られます 複数個開いた場合、すべてのセッションでモニターが取得 アプリのチェックのランタイムエラーからも確認できる OnSelectに設定してあるアクションが実行されない場合があります もう一度対象のコントロールを選択 私のやり方が悪いのか。。。 問題の特定や再現がうまくできませんでした。 2022
非公式 実業務で利用する場合は自己責任 Test Studioの再生リンク https://apps.powerapps.com/play/[App ID]?tenantId=[Tenant ID]&[__PATestSuiteId or __PATestCaseId]=[Suite ID or Case ID]&source=testStudioLink モニターの再生リンク https://apps.powerapps.com/play/e/[Enviroment ID]/a/[App ID]?tenantId=[Tenant ID]&source=portal&screenColor=[Screen Color]&mep=https%3A%2F%2[不明].gateway.prod.island.powerapps.com%2F[Live Versiom]&mjt=[不明]&mts=play https://apps.powerapps.com/play/e/[Enviroment ID]/a/[App ID]?tenantId=[Tenant ID] &[__PATestSuiteId or __PATestCaseId]=[Suite ID or Case ID]&source=portal&screenColor=[Screen Color]&mep=https%3A%2F%2[不明].gateway.prod.island.powerapps.com%2F[Live Versiom]&mjt=[不明]&mts=play 2022
Test Studio の概要 Test Studio の操作 モニターの概要 モニターでキャンバス アプリをデバッグする 高度なモニタリングの概要 モニターを使用した共同トラブルシューティング 2022