知識マップ: WindowsデスクトップアプリのUI自動テスト ── UI Automationの仕組みとFlaUIで作る壊れにくいテスト

記事「WindowsデスクトップアプリのUI自動テスト ── UI Automationの仕組みとFlaUIで作る壊れにくいテスト」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、WinForms/WPFアプリのUI自動テストを、Windows UI Automation(UIA)というオートメーションツリーとコントロールパターンの仕組みから整理する。FlaUIはUIAを薄くラップした.NETライブラリで、AutomationIdを検索キーの本命にし、Thread.Sleepではなく条件待機(Retry)とPage Objectパターンで壊れにくいテストを書くことが推奨される。Microsoft製のWinAppDriverは最終安定版が2020年から更新されておらず新規採用には向かず、その制約はAppium Windows Driverにも及ぶ。UIテストはテストピラミッドの最上段としてスモークテストに守備範囲を絞るべきで、CIでの無人実行にはサービスではなく自動サインイン(autologon)を構成した対話型デスクトップセッションを持つセルフホストランナーが必須になる。

WindowsデスクトップUI自動テストの知識マップWindows UI AutomationのツリーとコントロールパターンをFlaUIが薄くラップしていること、AutomationIdを検索キーの本命にし条件待機とPage Objectで壊れにくくすること、WinAppDriverが実質停止していて新規採用に向かないこと、CI無人実行には対話型セッションとautologonが必須であることの関係を示す図利用する利用する利用する利用する利用する軽減する軽減する原因になり得る軽減する用いるのは非推奨推奨される対応前提とするの後継で確認できるの後継自動化する推奨される対応前提とするで構成できる前提とする利用する利用する利用する利用するWindows UI Automation(UIA)FlaUIAutomationIdオートメーションツリーコントロールパターン壊れやすいUIテスト(flaky test)条件待機(Retry)Thread.Sleepによる固定待機Page ObjectパターンWinAppDriver新規プロジェクトでの新規採用Appium Windows DriverCoded UIテストinspect.exeAccessibility Insights for WindowsUIスモークテストテストピラミッド対話型デスクトップセッションautologon(自動サインイン)セルフホストランナーWindows FormsWPF

概念間の関係(全24件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Windows UI Automation(UIA)
スクリーンリーダーなどの支援技術やテスト自動化ツールが、アプリのUIをプログラムから読み取り・操作するためのWindowsの公式基盤。
FlaUI
Windows UI Automationを薄くラップしたMITライセンスの.NETライブラリで、UIA2/UIA3の両方に対応するUI自動テスト支援ツール。
AutomationId
ロケールに依存せず兄弟要素内で一意であることが求められる、UI Automationの要素識別用プロパティ。
条件待機(Retry)
固定時間のSleepではなく、条件が満たされるまでポーリングしタイムアウトで打ち切る待機方式。FlaUIはRetry.WhileNull/WhileFalse/WhileTrue/WhileExceptionを提供する。
Thread.Sleepによる固定待機
非同期に変化するUIの表示タイミングを固定時間の待機で決め打ちする実装。速いマシンでは無駄待ちし、遅いマシンではタイムアウト不足で失敗する。
Page Objectパターン
画面(またはダイアログ)1つにつきクラス1つを作り、要素の検索と操作をそのクラスへ閉じ込めるテスト設計パターン。
WinAppDriver
WebDriverプロトコルでWindowsアプリを操作するMicrosoft製のUIテストサーバー。最終安定版v1.2.1が2020年11月で止まっており、サーバー本体のソースコードは非公開。
Appium Windows Driver
AppiumからWindowsアプリを操作するためのドライバーで、内部でMicrosoft製のWinAppDriverを利用するインターフェース。
Accessibility Insights for Windows
要素のUIAプロパティ確認(Live Inspect)やアクセシビリティ自動チェック(FastPass)を備えた、Microsoftの現行推奨インスペクションツール。
UIスモークテスト
起動して主要導線が通ることの確認に絞った、UI自動テストの守備範囲。
対話型デスクトップセッション
ユーザーのデスクトップを持つプロセスとして動作するセッション。デスクトップアプリのUIテストにはこれが必須で、サービスとして常駐するエージェントでは動かない。
セルフホストランナー
共有のホステッドランナーではなく、利用者が用意する物理・仮想マシン上で動くCIランナー。可視UIのテストにはこちらが必須。
Windows Forms
デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。
WPF
XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。