Upgrade to Pro — share decks privately, control downloads, hide ads and more …

画像認識とヒエラルキーベースを併用した自動テスト改善のアプローチ

 画像認識とヒエラルキーベースを併用した自動テスト改善のアプローチ

GREE Tech Conference 2025で発表された資料です。
https://techcon.gree.jp/2025/session/TrackC-5

Avatar for gree_tech

gree_tech PRO

October 17, 2025
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 画像認識ベースのテストにおける課題 
 • 信頼性
 ◦ UIの色味やレイアウト変更により画像認識の精度が低下
 ◦ 意図しない画像を正解と誤認識するケース
 • 効率性


    ◦ 画像認識に時間がかかり、テスト実行の効率が低下
 • 堅牢性
 ◦ 画像認識に失敗すると、後続のテストシナリオが実行不可
 ◦ 画像変更に対する耐性が低く、保守性にも影響 6 背景と課題
  2. 導入の背景と目的 
 • 画像認識ベースのテストにおける課題への対応 
 ◦ 誤認識(信頼性)
 ◦ 処理時間(効率性)
 ◦

    変更による失敗(堅牢性) 10 ヒエラルキーベースのテスト導入 UI構造の情報を利用するヒエラルキーベースのテストを導入 

  3. 画像認識とヒエラルキーベースの比較 
  特徴 12 ヒエラルキーベースのテスト導入 観点 画像認識 ヒエラルキーベース 操作対象の特定 画面上の画像

    UI要素の構造 UI変更への耐性 低い(変化、差し替え) 高い(構造の変更は少ない) 実行速度 比較的遅い 速い 実装の直感性 高い(見た目) やや低い(構造の理解が必要) 誤認識のリスク 高い(類似画像) やや低い(論理的な識別) ※どちらが優れているかではなく、得意な領域が異なる 

  4. 13 ヒエラルキーベースのテスト導入 画像認識とヒエラルキーベースの併用の意義 
 • シーンに応じた最適な選択が可能 
 ◦ 画像認識が有効なケース 


    ▪ 見た目の確認が重要なUI
 ▪ UI構造が取得できない環境
 ◦ ヒエラルキーベースが有効なケース 
 ▪ 見た目の確認が必要ないUI
 ▪ ボタンやテキストなど、構造が安定しているUI
  5. 14 ヒエラルキーベースのテスト導入 画像認識との比較と併用の意義 
 • 併用の意義 
 ◦ テストの柔軟性が向上し、失敗率の低減・保守性の向上
 ◦

    実行時間の短縮と安定したテスト結果の取得が可能
 ◦ 画像認識の直感性とヒエラルキーの堅牢性を両立
  6. 15 使用したツール:Airtest & Poco Airtest 
 • 概要
 ◦ NetEaseが開発したUI自動テストフレームワーク。画像認識をベースにしてお

    り、クロスプラットフォーム(Android/iOS/Windows)対応。
 
 • 特徴
 ◦ スクリーンショットで操作対象を認識
 ◦ Pythonでスクリプトの記述が可能
 ◦ ゲームUIなど、視覚的要素が強いアプリに適している
  7. 16 使用したツール:Airtest & Poco Poco
 • 概要
 ◦ Airtestと連携して動作するUI要素取得ライブラリ。アプリのUIツリー構造を取 得し、ヒエラルキー情報に基づいて要素を操作


    
 • 特徴
 ◦ UI要素の名前、クラス、親子関係などを取得可能
 ◦ 見た目に依存せず、論理的に要素を特定
 ◦ Android/iOS/Unityなど複数のプラットフォームに対応
  8. 17 使用したツール:Airtest & Poco 選定した理由 
 • 既存の画像認識ベースのテストを活かしつつ、ヒエラルキー情報を扱えるPocoを 追加することで、段階的な移行と併用が可能
 •

    AirtestのライブラリであるためPythonベースで統一されており、追加で学習するコ ストが低く、スクリプトの再利用性が高い
  9. 18 実装例(画像認識のみ / 併用) 誤認識の比較( 画像認識のみ )
 • テスト内容は「1-2」を選択する操作 •

    キャプチャ元画像「1-2」をゲーム 画面で検索 • 時間経過で色調が変化するようなイ メージの場合に別のオブジェクトと類 似度が近くなり誤認識 • リトライやしきい値の調整が必要 ◦ 実装コストも増加 キャプチャ元画像 時間の経過により色調が変化するUIで誤認識 キャプチャ元画像の「1-2」を検索
  10. 19 実装例(画像認識のみ / 併用) 誤認識の比較( 併用)
 • 対象のソフトウェアにSDKを組み込み APIを通じて階層構造情報を取得 •

    名前や識別子を指定することで要素を 操作可能 • 見た目の変化に影響されないテスト 識別子をコードで指定 poco = UnityPoco() poco(“Stage1_2”).tap() 階層構造情報から「1-2」を検索 色調の変化するUIでも問題なく操作可能
  11. 20 実装例(画像認識のみ / 併用) 処理時間の比較( 画像認識のみ )
 • 画像認識を行う際、複数のアルゴリズムを組み合わせて使用 ◦

    マルチスケールテンプレートマッチング、SHIFT、BRISKなど • iOSやAndroidのキャプチャから静的に用意したUIパーツを検索するのに3 秒程度 • 使用するアルゴリズムの種類を減らせば速度は上がる ◦ シーンによりチューニングが必要 ▪ 実装コストの増加
  12. 22 実装例(画像認識のみ / 併用) 画像変更による影響( 画像認識のみ )
 • 要素の識別に画像を使用 ◦

    画像変更で対象の識別が不能に • 画像のタップでシーンが遷移する場 合、遷移ができずテストが継続できな いため失敗 キャプチャ元画像 形状の変化により対象を識別不能 キャプチャ元画像の「1-2」を検索
  13. 23 実装例(画像認識のみ / 併用) 画像変更による影響(併用) 
 • 画像認識で要素の取得を試す • 存在する場合にはタップ

    • 存在しない場合にはスクリーン ショットで画像を見つけられな かったエビデンスを残し、ログも 出力する • 遷移は階層構造の情報を使用して 行う 画像がみつからない場合はスクショして継続 target_image = find(Template(“Stage1_2.png”)) if target_image != None:  target_image.tap() else:  snapshot() #スクショ    Logger.log(“Stage1_2.pngが見つからない”)  poco = UnityPoco()  poco(“Stage1_2”).tap()
  14. 25 導入の効果 併用による効果 
 • 誤認識の抑制(信頼性の向上) 
 ◦ Before
 ▪

    レイアウトや色味の違いで識別不可
 ◦ After
 ▪ 階層構造の情報からUI要素の位置を取得可能
 ▪ レイアウトや色味の違いに左右されないテスト
  15. 26 導入の効果 併用による効果 
 • テスト実行時間の削減(効率性の向上) 
 ◦ Before
 ▪

    全てのテストが画像認識のためテスト実行に時間がかかる
 ◦ After
 ▪ テストの内容により使い分けることが可能なため
 全体的なテスト速度が向上
 ▪ 代替可能なテストケースの場合、処理の効率が約30倍向上

  16. 27 導入の効果 併用による効果 
 • 画像変更による影響 
 ◦ Before
 ▪

    画像認識の失敗やテスト対象の画像が表示されていない場合、
 後続のテストシナリオの実行が不可能
 ◦ After
 ▪ 代替のテストを行うことでUI要素を特定し、
 テストシナリオの実行が可能
  17. 28 今後の展望 • ローカルAI × 自然言語によるテスト自動化 
 • ファインチューニングによる精度向上
 •

    非エンジニアでも自然言語でテスト記述が可能に
 • テストケースの網羅性向上と、保守性の高いテスト基盤の構築
 • 将来的には、AIによるテストシナリオの自動提案・最適化