Skip to main content
QUICK REVIEW

[論文レビュー] Automation of Android Applications Testing Using Machine Learning Activities Classification

Ariel Rosenfeld, Odaya Kardashov|arXiv (Cornell University)|Sep 4, 2017
Software Testing and Debugging Techniques参考文献 14被引用数 10
ひとこと要約

本論文では、Androidアプリのアクティビティを事前に定義されたタイプに分類することで、自動的かつ標的化されたUIテストを可能にする機械学習ベースのフレームワークACATを提案する。アクティビティの構造的類似性を活用し、タイプに応じた特別なテストを適用することで、論理バグの検出においてAndroid Monkeyを上回り、植え付けたバグをすべて発見し、1つの既存の論理的欠陥も特定した。一方、Android Monkeyはいずれのバグも検出できなかった。

ABSTRACT

Mobile applications are being used every day by more than half of the world's population to perform a great variety of tasks. With the increasingly widespread usage of these applications, the need arises for efficient techniques to test them. Many frameworks allow automating the process of application testing, however existing frameworks mainly rely on the application developer for providing testing scripts for each developed application, thus preventing reuse of these tests for similar applications. In this paper, we present a novel approach for the automation of testing Android applications by leveraging machine learning techniques and reusing popular test scenarios. We discuss and demonstrate the potential benefits of our approach in an empirical study where we show that our developed testing tool, based on the proposed approach, outperforms standard methods in realistic settings.

研究の動機と目的

  • Androidアプリのテストにおける手作業によるテストスクリプトの非効率性と高い保守コストを解消すること。
  • 開発者提供のテストスクリプトに依存しないようにし、アプリ構造に基づく自動テスト生成を可能にすること。
  • アクティビティ固有のテストを用いることで、Androidアプリケーションにおける機能的および論理的バグの検出を向上させること。
  • 機械学習を用いてアプリのアクティビティを分類し、自動テストを誘導する手法の実現可能性を示すこと。
  • 類似したアプリケーション間でテストシナリオを再利用可能にするために、共通のアクティビティパターンを特定すること。

提案手法

  • UI構造と動作に基づき、Androidアプリのアクティビティを7つの事前に定義されたタイプのいずれかに分類する機械学習モデルを学習する。
  • UI操作のためのテストツールとAndroidデバイスの間のブリッジとしてAppiumフレームワークを用いる。
  • TestProject自動化プラットフォーム用の拡張機能(ACAT)を開発し、分類とテストパイプラインを統合する。
  • 分類された各アクティビティに対して、事前に定義されたアクティビティタイプ固有のテストケースを適用し、期待される動作を検証する。
  • 現実的なテスト条件を模倣するため、時間制限(2分間)またはイベント制限(50,000回のUIイベント)を用いたテスト実行を行う。
  • 各アクティビティについて、発見されたクラッシュや論理的バグに関する詳細レポートを生成する。

実験結果

リサーチクエスチョン

  • RQ1機械学習技術を用いて、再利用可能な機能的タイプに分類可能なAndroidアプリのアクティビティを効果的に分類できるか?
  • RQ2アクティビティ分類により、一般的なイベントベースのテストと比較して、より効果的かつ標的化された自動テストが可能になるか?
  • RQ3MLドリブンのアプローチは、Android Monkeyのような従来のランダムイベントツールが見逃す論理的バグをどの程度検出できるか?
  • RQ4MLベースのテストアプローチは、標準ツールと比較して、クラッシュおよび論理的欠陥の両方を特定する性能で優れているか?
  • RQ5このフレームワークは、より多くのアクティビティタイプをサポートし、ハードコードされたテストケースへの依存を減らすように拡張可能か?

主な発見

  • ACATは実験で未確認の3つのアクティビティを100%の正確性で分類に成功した。
  • ACATはテストアプリケーションに植え付けた10個の論理的バグをすべて発見したが、Android Monkeyはいずれのバグも検出できなかった。
  • ACATは元のアプリケーションバージョンに存在する既存の論理的バグ(無効な受信者でメールを送信する)を特定した。
  • Android MonkeyはACATが見逃した1件のリアルタイムクラッシュを検出しており、クラッシュ検出と論理的バグ検出の間にはトレードオフがあることが示された。
  • ACATは発見されたバグの詳細なレポートを生成し、機能的欠陥検出における実用性を示した。
  • 結果は、各アクティビティを期待動作を有する自己完結型のエンティティとして扱うことで、テストの正確性が向上することを検証した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。