icst2015 gui testingの紹介 #sigstj
TRANSCRIPT
ICST 2015 GUI Testing の紹介@kyon_mm 2015/07/04 #sigstj
Papers
• Classifying and Qualifying GUI Defects
• Conceptualization and Evaluation of Component-based Testing Unified with Visual GUI Testing: an Empirical Study
• Detection and Localization of HTML Presentation Failures Using Computer Vision-Based Techniques
Classifying and Qualifying GUI Defects の紹介
概要
• GUIのバグを分類して識別するためのGUIフォールトモデル作成
• 実際のバグとGUIフォールトモデルの差分を分析
• 2つのGUIテスティングツールである GUITAR, Jubulaを使ってテスト実行する
• ミューテーションテストをして、GUIフォールトモデルにあるものを見つけられるかどうか
2つのGUIフォールトモデル
• User Interface
• 静的なもの
• User Interaction
• 動的なもの
GUIフォールトモデル(Interface)
カテゴリ フォールト
GUI Structure and
Aesthetics
レイアウトが不正
状態が不正
表示が不正
Data Presentation
レンダリングが不正
データのプロパティが不正
データの型やフォーマットが不正
GUIフォールトモデル(Interaction)カテゴリ フォールト
Interaction Behavior 振る舞いが不正
Action
動作の結果が不正
動作しない
異なる動作になる
Reversibility
Undo/Redoが不正
強制的な中断が不正
中断が不正
Feedback実態と異なる進捗を表現している
いくつかの振る舞いの途中のフィードバックが不正
対象にしたソフトウェア
• Sweet Home3D
• File-roller
• JabRef
• Inkscape
• Firefox Android
ミューテーションのツール
• WIMP
• post-WIMP
• ※豆知識WIMP = Windows, Icons, Menus, Pointerの略
テスト
• ソフトウェアへのバグレポートを見て、フォールトモデルと対応付ける
• その上で、フォールトモデルに対応するようなミューテーションする
• テストを実行して見つけられるか確認する
ミューテーションテスト結果
• 見つかったり、見つからないものもあったり(つまりまちまちだった)
• 原因
• GUIの画面描画 検査したいものを画面から取得できない
• トレンドの変化 標準コンポーネントはあまり使わない
発表者kyon_mmの所感
• 分類自体はいいと思った。見積もりとかライブラリの選定に使いやすい分類だと思う。
• バグレポートを手で頑張って分類しないといけないようになっている方が問題かと思った。なぜ世のバグレポートにタグ付けがないのかとか。
Conceptualization and Evaluation of Component-based Testing Unified with Visual GUI Testing: an Empirical Study の紹介
概要
• ヴィジュアルベースのGUIテストツールを開発して、コンポーネントベースのGUIテストツールと比較した
• ベースにしたのはGUITAR
• コンポーネントベースは堅牢で高速、ヴィジュアルベースは柔軟
2つの試み
• GUIアプリケーションに対してミューテーションテストして比較
• 3つのJava OSSに対して実験して比較
ツールの開発
• GUIテスティングフレームワークであるGUITARをベースにVGT GUITARを開発
Conceptualization and Evaluation of Component-based Testing Unified with Visual GUI Testing: an Empirical Study Fig. 1: Visualization of VGT GUITAR’s architecture. Squares show code components of the tool and rounded squares show artifacts generated by said components.
GUIアプリケーションに対してミューテーションテスト• 18種類のミューテーション
• システムテストと受け入れテストにわけて実行
3つのJava OSSに対して実験
• JEdit
• Buddi
• Rachota
テスト結果
• コンポーネントベースは、システムテストに向いている
• ヴィジュアルベースは受け入れテストに向いている
• VGT
発表者kyon_mmの所感
• 当たり前すぎてつまらなかった
• GUIテストツールを作るときには参考になる可能性が微レ存
Detection and Localization of HTML Presentation Failures Using Computer Vision-Based Techniques の紹介
概要
• Web GUIのテストは大変ですね
• バグの原因になっているHTML要素を特定するようなアプローチ
• 画像解析技術を利用する
3つのINPUTによって判定する
• 対象のWebページ(URL, HTML, CSS, JS, etc)
• 対象のWebページの正しい表示(前バージョン、モックなどのスクリーンショット)
• 動的に変化する部分(テキスト、広告)
ツールのフェーズ
• 対象のWebページにおける差分を検査する
• 差分とHTML要素をひもづける
• 対象でバグっぽいものを開発者に教える
使っているツール
• WebSee
• pdiff
• Apache Commons Math3
• Original Java Library(R-Tree)
• Open CV
テスト
• HTML,CSS,JSなどをダウンロードしてローカルで動作できるようにする
• ある法則に従ってランダムに要素のプロパティを変えるなどしてミューテーションテストする
• ツールと学生で比較してみる
テスト対象• OPAL
• Crawller
• Inno crawll
• Gmail
• USC CS Research
• Craigslist
• Virgin America
• Java Tutorial
テスト結果• 障害発見率100%
• 学生は73%
• 見つけた障害のうち、HTML要素を特定できたのは、93%以上
• 学生は36%
• 実行時間はどれも数分以内
発表者kyon_mmの所感• Chromeの開発者ツールを便利にした感じ
• Web フロントエンドの開発効率があがりそう
• でも、実際に困るのはJSデバッガじゃないかなぁとか。
• リグレッションテストとしてはいいのかも
• Chromeの開発者ツールをforkしたほうが早かったのではー
全体の所感
• GUITAR好きな研究者多いのは、クラシカルなツールだから改造しやすいのかな。
• GUIに関してはスポンサーの期待をマネジメントしにくいので、どんどんツールができればいいと思う。
• Web系のは見ればみるほど、W3Cがんばれよって感じ。
ご清聴ありがとうございました