[論文レビュー] From Manual Android Tests to Automated and Platform Independent Test Scripts
本稿では、Androidアプリのためのプラットフォーム非依存な自動テストスクリプトを、ユーザー操作の記録と直感的なインターフェースを用いた期待結果(オラクル)の視覚的指定によって作成できるツール、BARISTAを提示する。この手法は、アプリを変更せずにAndroidのアクセシビリティフレームワークを活用して操作とオラクルをキャプチャし、Espresso互換のテストスクリプトを生成する。これにより、多様なデバイスやOSバージョンで信頼性高く実行可能となり、既存のツールに比べてポータビリティと耐障害性に優れる。
Because Mobile apps are extremely popular and often mission critical nowadays, companies invest a great deal of resources in testing the apps they provide to their customers. Testing is particularly important for Android apps, which must run on a multitude of devices and operating system versions. Unfortunately, as we confirmed in many interviews with quality assurance professionals, app testing is today a very human intensive, and therefore tedious and error prone, activity. To address this problem, and better support testing of Android apps, we propose a new technique that allows testers to easily create platform independent test scripts for an app and automatically run the generated test scripts on multiple devices and operating system versions. The technique does so without modifying the app under test or the runtime system, by (1) intercepting the interactions of the tester with the app and (2) providing the tester with an intuitive way to specify expected results that it then encode as test oracles. We implemented our technique in a tool named Barista and used the tool to evaluate the practical usefulness and applicability of our approach. Our results show that Barista can faithfully encode user defined test cases as test scripts with built-in oracles, generates test scripts that can run on multiple platforms, and can outperform a state-of-the-art tool with similar functionality. Barista and our experimental infrastructure are publicly available.
研究の動機と目的
- スクリーンの断片化やOSバージョンの多様性に起因する、Androidアプリの手動テストにおける人的リソースの高額化とミスの発生を低減すること。
- 開発者以外のユーザーが操作によってテストスクリプトを作成できるようにすることで、テスト自動化における専門的プログラミングスキルの必要性を低減すること。
- 特定のUIレイアウトやデバイス設定に依存しない、堅牢で再利用可能なテストケースの作成を支援すること。
- 再エンコードを必要とせずに、複数のプラットフォームで生成されたテストスクリプトを自動実行できること。
- Espressoなどの標準フレームワークを用いて、プラットフォームに依存しないテストスクリプトを生成することで、テストのポータビリティと保守性を向上させること。
提案手法
- Androidのアクセシビリティフレームワークを介して、タッチ、入力、ナビゲーションイベントを含むユーザー操作の記録により、アプリとの対話の記録を行う。
- テスト担当者がUI要素を選択し、期待される状態を定義することで、期待結果(オラクル)を視覚的に指定するためのインターフェースを提供する。
- Espressoテストフレームワーク形式を用いて、記録された操作と指定されたオラクルを、プラットフォーム非依存のテストスクリプトにエンコードする。
- 記録された実行トレースを、互換性のあるAndroidバージョンを持つ任意のデバイスやエミュレータで実行可能な構造化されたテストコードに変換する。
- アクセシビリティ識別子とUI階層情報を利用することで、論理構造に影響を与えない範囲でのUIの微小な変更に対しても、テストスクリプトの堅牢性を保証する。
- AndroidアクセシビリティAPIを活用して、アプリやランタイムシステムを変更せずに、対話のインターセプトとログ記録を実現する。
実験結果
リサーチクエスチョン
- RQ1非プログラマーが、インタラクティブな記録と視覚的オラクル指定によって、信頼性がありプラットフォーム非依存のAndroidアプリ用テストスクリプトを生成できるか?
- RQ2BARISTAが生成するテストスクリプトのポータビリティは、異なるデバイスやOSバージョンにおいて、既存の記録/再生ツールと比較してどの程度優れているか?
- RQ3BARISTAは、UIの微小な変更に対しても有効なまま維持される堅牢なオラクルの作成をどの程度サポートできるか?
- RQ4Espresso や UIAutomator といった最先端のツールと比較して、BARISTAのテスト実行およびスクリプト生成のパフォーマンスはどの程度か?
- RQ5BARISTAが生成するテストスクリプトは、アプリのアップデート後もレグレッションテストに効果的に再利用できるか?
主な発見
- BARISTAは、オラクルを含むユーザー定義のテストケースを、実行可能な複数のデバイスおよびAndroid OSバージョンで動作するプラットフォーム非依存のテストスクリプトに正しくエンコードした。
- 生成されたテストスクリプトは、既存の記録/再生ツールよりもポータブルであり、スクリーン座標ではなくセマンティックなUI識別子に依存しているためである。
- BARISTAは、類似機能を持つ最先端のツールと比較して、テストスクリプトの信頼性とクロスプラットフォーム実行の両面で優れている。
- BARISTAは、プログラミングやテストフレームワークの知識がほとんど不要な状態で、テスト担当者が短時間のトレーニングでテストスクリプトを生成できる。
- UI要素の再配置など、UIの微小な変更が加わっても、論理構造とアクセシビリティラベルが変更されていなければ、BARISTAが生成するテストスクリプトは耐障害性を保つ。
- 本手法は「一度記録、どこでも実行」の原則を実現し、レグレッションテストの保守コストを顕著に低減する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。