知識マップ: 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)を構成した対話型デスクトップセッションを持つセルフホストランナーが必須になる。
flowchart LR
accTitle: WindowsデスクトップUI自動テストの知識マップ
accDescr: Windows UI AutomationのツリーとコントロールパターンをFlaUIが薄くラップしていること、AutomationIdを検索キーの本命にし条件待機とPage Objectで壊れにくくすること、WinAppDriverが実質停止していて新規採用に向かないこと、CI無人実行には対話型セッションとautologonが必須であることの関係を示す図
ui_automation["Windows UI Automation(UIA)"]
flaui["FlaUI"]
automationid["AutomationId"]
automation_tree["オートメーションツリー"]
control_pattern["コントロールパターン"]
flaky_ui_test["壊れやすいUIテスト(flaky test)"]
retry_condition_wait["条件待機(Retry)"]
thread_sleep_antipattern["Thread.Sleepによる固定待機"]
page_object_pattern["Page Objectパターン"]
winappdriver["WinAppDriver"]
new_project_adoption["新規プロジェクトでの新規採用"]
appium_windows_driver["Appium Windows Driver"]
coded_ui_test["Coded UIテスト"]
inspect_exe["inspect.exe"]
accessibility_insights["Accessibility Insights for Windows"]
smoke_test["UIスモークテスト"]
test_pyramid["テストピラミッド"]
interactive_desktop_session["対話型デスクトップセッション"]
autologon["autologon(自動サインイン)"]
self_hosted_runner["セルフホストランナー"]
windows_forms["Windows Forms"]
wpf["WPF"]
flaui -->|"利用する"| ui_automation
ui_automation -->|"利用する"| automation_tree
ui_automation -->|"利用する"| control_pattern
flaui -->|"利用する"| control_pattern
ui_automation -->|"利用する"| automationid
automationid -->|"軽減する"| flaky_ui_test
retry_condition_wait -->|"軽減する"| flaky_ui_test
thread_sleep_antipattern -.->|"原因になり得る"| flaky_ui_test
page_object_pattern -->|"軽減する"| flaky_ui_test
winappdriver -->|"用いるのは非推奨"| new_project_adoption
flaui -->|"推奨される対応"| new_project_adoption
appium_windows_driver -->|"前提とする"| winappdriver
winappdriver -->|"の後継"| coded_ui_test
automationid -->|"で確認できる"| inspect_exe
accessibility_insights -->|"の後継"| inspect_exe
flaui -->|"自動化する"| smoke_test
smoke_test -->|"推奨される対応"| test_pyramid
ui_automation -->|"前提とする"| interactive_desktop_session
interactive_desktop_session -->|"で構成できる"| autologon
self_hosted_runner -.->|"前提とする"| interactive_desktop_session
windows_forms -->|"利用する"| automationid
wpf -->|"利用する"| automationid
flaui -.->|"利用する"| wpf
flaui -.->|"利用する"| windows_forms
概念間の関係(全24件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- FlaUIはWindows UI Automation(UIA)を利用します。
- Windows UI Automation(UIA)はオートメーションツリーを利用します。
- Windows UI Automation(UIA)はコントロールパターンを利用します。
- FlaUIはコントロールパターンを利用します。
- Windows UI Automation(UIA)はAutomationIdを利用します。
- AutomationIdは壊れやすいUIテスト(flaky test)を軽減します。
- 条件待機(Retry)は壊れやすいUIテスト(flaky test)を軽減します。
- Thread.Sleepによる固定待機は壊れやすいUIテスト(flaky test)の原因になることがあります。
- Page Objectパターンは壊れやすいUIテスト(flaky test)を軽減します。
- WinAppDriverを新規プロジェクトでの新規採用に用いることは推奨されません。
- FlaUIは新規プロジェクトでの新規採用に対する本記事の推奨です。
- Appium Windows DriverはWinAppDriverを前提とします。
- WinAppDriverはCoded UIテストの後継に当たります。
- AutomationIdはinspect.exeで確認できます。
- Accessibility Insights for Windowsはinspect.exeの後継に当たります。
- FlaUIはUIスモークテストを自動化します。
- UIスモークテストはテストピラミッドに対する本記事の推奨です。
- Windows UI Automation(UIA)は対話型デスクトップセッションを前提とします。
- 対話型デスクトップセッションはautologon(自動サインイン)で構成できます。
- セルフホストランナーは対話型デスクトップセッションを前提とします。
- Windows FormsはAutomationIdを利用します。
- WPFはAutomationIdを利用します。
- FlaUIはWPFを利用します。
- FlaUIはWindows Formsを利用します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。