4.5K Views
August 21, 24
スライド概要
Power Appsにおいて、生成AIを用いた開発手法の活用例やテストケースの作り方、テスト種類の紹介に加え、Power Appsでの各AIの活用法を解説しています。
Power Apps開発時の生成AI活用方法について説明しながら、それぞれの強みと弱みを明らかにしました。また、Power Appsでの活用例についても、コメントからのコード生成など具体的な例を挙げながら説明しています。
テストケース作成の自動化については、機能要件一覧などからテストケースを網羅的に作成する方法を紹介しています。そして、一般的なテストの種類とPower Appsで実施するテストの種類についても概説しています。
https://ppcastle.connpass.com/event/326166/
Power Appsのテスト自動化 について考えてみた PPログ 2024/8/21
PPログ X(Twitter): https://twitter.com/PowerPlatform4 Blog: https://powerplatformnikki.com/ 2
3
Content • Power Apps×生成AIの活用例紹介 • テストケースの作り方 • Power Appsのテスト自動化について考えてみた • ①テストケース作成の自動化を試す • ②テストコード作成の自動化を試す 4
おことわり ◼ あくまで個人の考えや知見に基づくものです • 生成AIの利用は組織のポリシーに従ってください • テスト方針は組織やPJのものに従ってください ◼ ほぼ開発者向けの内容です • Power Appsで大規模開発している方 • 開発効率を上げたい方 5
Power Apps×生成AIの活用例紹介 6
Power Appsで生成AI活用してますか? 7
各生成AIの強み・弱み 強み 弱み Power Apps Studioから利用できる ので親和性が高い 利用できる機能の幅が小さい 汎用性が高い 最大トークン数が他と比較して少ない ので、複雑な情報整理には不向き 最新情報に強い 文脈を読む力が弱い (出力が英語になる) 情報の可視化がとにかく強く、複雑な タスクもこなせる 課金してもすぐ利用上限に到達する 8
各生成AIのPower Appsでの活用例 活用例 コメントからのコード生成 コードにコメントを付ける 開発手順や方法に関するクイックな質問 局所的なバグの修正方法提案 最新の情報をもとにしたアプリの全体的な改善提案 アプリの設計ドキュメント・図の作成 9
10
マルチモーダルな処理が不要の場合は天秤AIで十分 11
テストケースの作り方 12
機能要件一覧などをベースにテストケースを網羅的に作成し、 テストを実施します 機能要件一覧 テストケース テスト実施 13
一般的なテストの種類とPower Appsで実施するテストの種類 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 14
一般的なテストの種類とPower Appsで実施するテストの種類 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 15
16
ローコードでしょ? やってらんね~
Power Appsのテスト自動化について 考えてみた 18
テスト自動化=①テストケース作成の自動化+ ②テストコード作成の自動化+③テストケース実施の自動化 機能要件一覧 ① テストケース 手動テスト ② ③ 自動テスト (テストスイート) 19
①テストケース作成の自動化: AIでソースコードからテストケースを作成する YAML or JSON 機能要件一覧 テストケース テスト実施 20
AIでソースコードからテストケースを作成する場合は、 網羅性はないと考えた方がいい 要件 実装漏れ 〇 バグ ソースコード ∵要件≠ソースだから 21
①Power Appsで実施するテストのうち、 テストケースを自動で作成できそうなテスト 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 22
①Power Appsで実施するテストのうち、 テストケースを自動で作成できそうなテスト 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 23
テスト自動化=①テストケース作成の自動化+ ②テストコード作成の自動化+③テストケース実施の自動化 機能要件一覧 ① テストケース 手動テスト ② ③ 自動テスト (テストスイート) 24
③テストケース実施の自動化に向いているテストケース、 向いていないテストケース 向いているテストケース • 繰り返し実行するテスト、重要な機能のテスト • 例:リグレッションテスト・パフォーマンステスト 向いていないテストケース • 1度実行すればいいテスト、手順が決まっていないテスト • 例:ユーザビリティ評価テスト・探索的テスト 25
テストケース実施の自動化ROI (作成・管理コスト vs 手動実施に かかるコスト)をもとに、どのケースを自動化するか判断しましょう テストの種類 要員のスキル 機能の重要度 実施回数 26
③Power Appsで実施するテストのうち、 テストケース実施を自動化した方がいいテスト 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 27
③Power Appsで実施するテストのうち、 テストケース実施を自動化した方がいいテスト 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 28
現状はRPAレベルのことしかできないので、今後のCopilotの 機能拡充に期待 目的 観点 単体テスト 最小単位(関数、モジュールなど)の正確な動作を確認 個々の機能の正確性、エッジケース、例外処理 結合テスト 複数のモジュール間の連携を検証 インターフェースの整合性、データの受け渡し、モジュー ル間の相互作用 システムテスト システム全体の要求仕様充足と正常動作を確認 機能要件、非機能要件(性能、信頼性など)、エンドツー エンド動作 受け入れテスト ユーザーの要求充足を最終確認 ビジネス要件、ユーザーシナリオ、運用環境での動作 リグレッションテスト プログラム変更後の既存機能への影響を確認 既存機能の正常動作、新旧機能の整合性、予期せぬ副作用 パフォーマンステスト ソフトウェアの速度、応答性、安定性を検証 負荷耐性、レスポンス時間、リソース使用効率 探索的テスト 予定外の問題や未知の部分を発見 テスターの経験や直感に基づく自由な探索、予期せぬ使用 シナリオ ユーザビリティテスト ユーザーにとっての使いやすさを評価 操作の直感性、学習の容易さ、ユーザー満足度 互換性テスト 異なる環境での動作を確認 異なるOS、ブラウザ、デバイスでの動作、旧バージョン との互換性 セキュリティテスト 外部攻撃や不正アクセスに対する安全性を確認 脆弱性、認証・認可の正確さ、データ保護 アクセシビリティテスト 多様なユーザーによる利用可能性を確認 障害を持つユーザーへの対応、各種支援技術との互換性 (開発中にアラートを出してほしい)数万行をForAllでコレクションに格納して委任回避したりとか、フォームをテキストボックスを並べて再現したりとか… 29
①テストケース作成の自動化を試す 30
31
②テストコード作成の自動化を試す 32
それっぽいコードはできたが、Pack時にエラー 33
テストケースのエクスポート(ダウンロード)はできるが、 インポートはできない? ←テストケース作成・保存後にUnpackすると、 ソースのフォルダに”Tests”フォルダが新たに作成された 34
Copilot in Power Platformの 成長に期待しています 35