Android UI自動化テスト
9999 ワード
原文住所:Automating User Interface Testing on Android
紹介する
AndroidのTesting Support libraryには、主にAndroidアプリケーションのブラックボックス自動化テストに使用されるUI自動化フレームワークが含まれており、API 18では、開発者がアプリケーションUIを構成するコントロール上でユーザーの操作をシミュレートすることができる.
このチュートリアルでは、このテストフレームワークの使用方法と、作成と実行方法を説明します.デフォルトの計算機アプリケーションに対して基本UIテストを行います.
前提条件
使用前に、最新バージョンのAndroid Studio-Android 4.3以降のデバイスまたはシミュレータ-JUnitの基本概念が必要です.
1.依存項目のインストール
あなたのプロジェクトでUIを使用してテストフレームワークを自動化できるようにします.あなたのプロジェクトのappディレクトリの下でbuildを編集します.gradle.次の依存項目を追加します.
「Sync Now」のボタンが画面に表示され、クリックすると次のようなエラーが表示されます.
Install Repository and sync projectリンクをクリックすると、Android Support Repositoryがインストールされます.
appcompat-v 7のライブラリを使用し、バージョンが22.1.1の場合は、アプリケーションとテストしたアプリケーションが同じバージョンの
さらに、Android Studioのバグのため、
あなたのbuild.gradleファイルの下部には、次のセクションが追加されています.
2.テストクラスの作成
新しいテストクラスを作成し、android Testというディレクトリの下にCalculatorTesterを作成します.JAvadeファイル.UI自動化テスト例を作成するには、クラスが
Alt+Insertキーを押し、SetUpメソッドをクリックして
再びAlt+Insertを押してTest Methodをクリックして新しいテスト方法を生成します.名前は
LauncherのUIの表示
Androidデバイスをパソコンにリンクし、デバイスのホームキーをクリックしてデスクトップに戻ります.
コンピュータに戻って、ファイルブラウザまたは端末を使用してAndroid SDKをインストールするパスの下に入り、次はtoolsディレクトリの下に入り、uiautomatorviewerを起動します.UI Automator Viewを起動します.画面は次のように表示されます.
携帯電話のようなボタンをクリックしてAndroidデバイスをスクリーンショットし、さっきのスクリーンショットがインタラクティブであることに注意してください.下部のAppアイコンをクリックすると、右側のNode Detailエリアで、選択エリアの詳細な変数が以下に表示されます.
画面上のアプリケーションとインタラクティブになるためには、UI自動化テストフレームワークには、
ご覧のように、アプリケーションのアイコンには
今、Androidデバイスを手に取って、画面のアプリケーションアイコンをクリックして、デバイスがインストールしているすべてのアプリケーションインタフェースに入ります.UI Automater Viewを使用して別のスクリーンショットを取得します.コンピュータアプリケーションのテストを書くため、コンピュータアイコンをクリックして詳細なインタフェースを表示します.
このとき、
Androidデバイスが異なるlauncherまたは異なるAndroidバージョンを実行している場合、スクリーンショットとnode detailが異なる場合は、オペレーティングシステムに一致するためにコードを変更する必要があります.
4.試験環境の準備
Android Studioに戻って、
コードシミュレーションを作成する前にAndroidデバイスで行った操作:1.ホームキーを押すメイン画面2に戻る.アプリケーションアイコンをクリックしてすべてのアプリケーションに入ります.Calculatorアプリをクリックして起動
あなたのクラスでは、Androidデバイスを表す
次に、アプリケーションのアイコン上でクリックイベントをシミュレートする必要がありますが、すぐにはできません.Androidデバイスはインタフェースをロードするのにしばらくかかります.画面に表示される前にアプリケーションのアイコンをクリックしようとすると、runtimeの異常が投げ出されます.
何かが起こるのを待つためには、
アプリケーションのアイコンを識別するために、
アプリケーションアイコンの参照を取得するには、
前と同じように、しばらく待って、Calculatorのアイコンを画面に表示させます.Calculatorのアイコンが
5.CalculatorのUIの表示
AndroidデバイスでCalculatorアプリケーションを実行し、UI Autoamtor Viewerで確認し、スクリーンショットを取得した後、これらのボタンをクリックして、彼らを唯一認識できるかどうかを確認します.
今回のテスト例では、操作計算機を9+9と計算し、結果が18であるかどうかを確認します.これは、9,+および=をどのように識別するかを知る必要があることを意味します.
私のデバイスでは、次の情報を収集します.-数値キーはtext値に一致します-+と=content-desc値を使用して、plusとequals-戻り値はEditTextコントロールに表示されます.
異なるバージョンのCalculatorアプリケーションを使用すると、これらの値はデバイスに異なる可能性があります.
6.テストケースの作成
前の手順では、
この場合、結果を待つ必要がありますが、ここで
最後に、
あなたのテスト例は完成しても
7試験例の実行
テストを実行するには、Android Studioのツールバードロップダウンボックスで
コンパイルが完了すると、テストが実行され、正常に実行され、テスト例が実行されると、Androidデバイスが自動化されていることがわかります.
結論
今回のチュートリアルでは、UIの自動化テストフレームワークとUI Automator Viewを使用してUIテストを作成する方法を学びました.Android Studioを使用してテストを行うときの簡単さも見ることができます.私たちがテストしたことはかなり簡単なアプリケーションですが、ここで学んだ内容を適用してAndroidアプリケーションの大部分をテストすることができます.
Android Developers websitesでtesting support libraryについてもっと勉強できます
紹介する
AndroidのTesting Support libraryには、主にAndroidアプリケーションのブラックボックス自動化テストに使用されるUI自動化フレームワークが含まれており、API 18では、開発者がアプリケーションUIを構成するコントロール上でユーザーの操作をシミュレートすることができる.
このチュートリアルでは、このテストフレームワークの使用方法と、作成と実行方法を説明します.デフォルトの計算機アプリケーションに対して基本UIテストを行います.
前提条件
使用前に、最新バージョンのAndroid Studio-Android 4.3以降のデバイスまたはシミュレータ-JUnitの基本概念が必要です.
1.依存項目のインストール
あなたのプロジェクトでUIを使用してテストフレームワークを自動化できるようにします.あなたのプロジェクトのappディレクトリの下でbuildを編集します.gradle.次の依存項目を追加します.
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.0'
「Sync Now」のボタンが画面に表示され、クリックすると次のようなエラーが表示されます.
Install Repository and sync projectリンクをクリックすると、Android Support Repositoryがインストールされます.
appcompat-v 7のライブラリを使用し、バージョンが22.1.1の場合は、アプリケーションとテストしたアプリケーションが同じバージョンの
com.android.support:support-annotations
を使用していることを確認するために、依存を追加する必要があります.androidTestCompile 'com.android.support:support-annotations:22.1.1'
さらに、Android Studioのバグのため、
packagingOptions
を使用してLICENSEを実行する必要があります.txtのファイルなので、テストを実行しようとすると、次のような失敗情報が表示されます.Execution failed for task ':app:packageDebugAndroidTest'.
Duplicate files copied in APK LICENSE.txt
File 1: ~/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.1/860340562250678d1a344907ac75754e259cdb14/hamcrest-core-1.1.jar
File 2: ~/.gradle/caches/modules-2/files-2.1/junit/junit-dep/4.10/64417b3bafdecd366afa514bd5beeae6c1f85ece/junit-dep-4.10.jar
あなたのbuild.gradleファイルの下部には、次のセクションが追加されています.
android {
packagingOptions {
exclude 'LICENSE.txt'
}
}
2.テストクラスの作成
新しいテストクラスを作成し、android Testというディレクトリの下にCalculatorTesterを作成します.JAvadeファイル.UI自動化テスト例を作成するには、クラスが
CalculatorTester
を継承する必要があります.Alt+Insertキーを押し、SetUpメソッドをクリックして
InstrumentationTestCase
メソッドを書き換えます.再びAlt+Insertを押してTest Methodをクリックして新しいテスト方法を生成します.名前は
setUp
、testAdd
です.このクラスは次のようになります.public class CalculatorTester extends InstrumentationTestCase{
@Override
public void setUp() throws Exception {
}
public void testAdd() throws Exception {
}
}
LauncherのUIの表示
Androidデバイスをパソコンにリンクし、デバイスのホームキーをクリックしてデスクトップに戻ります.
コンピュータに戻って、ファイルブラウザまたは端末を使用してAndroid SDKをインストールするパスの下に入り、次はtoolsディレクトリの下に入り、uiautomatorviewerを起動します.UI Automator Viewを起動します.画面は次のように表示されます.
携帯電話のようなボタンをクリックしてAndroidデバイスをスクリーンショットし、さっきのスクリーンショットがインタラクティブであることに注意してください.下部のAppアイコンをクリックすると、右側のNode Detailエリアで、選択エリアの詳細な変数が以下に表示されます.
画面上のアプリケーションとインタラクティブになるためには、UI自動化テストフレームワークには、
CalculatorTester
またはtext
を使用して一意に識別する唯一の識別子が必要です.ご覧のように、アプリケーションのアイコンには
content-desc
はありませんが、class
があります.この値を記録します.次のステップで使用するからです.今、Androidデバイスを手に取って、画面のアプリケーションアイコンをクリックして、デバイスがインストールしているすべてのアプリケーションインタフェースに入ります.UI Automater Viewを使用して別のスクリーンショットを取得します.コンピュータアプリケーションのテストを書くため、コンピュータアイコンをクリックして詳細なインタフェースを表示します.
このとき、
text
の内容は空ですが、content-desc
の内容はCalculatorです.同じようにこれも記録します.Androidデバイスが異なるlauncherまたは異なるAndroidバージョンを実行している場合、スクリーンショットとnode detailが異なる場合は、オペレーティングシステムに一致するためにコードを変更する必要があります.
4.試験環境の準備
Android Studioに戻って、
content-desc
メソッドにコードを追加します.名前のヒントのように、text
メソッドはあなたのテスト環境を準備するために使用されます.言い換えれば、本当にテストを行う前に特に完了する必要がある内容を実行します.コードシミュレーションを作成する前にAndroidデバイスで行った操作:1.ホームキーを押すメイン画面2に戻る.アプリケーションアイコンをクリックしてすべてのアプリケーションに入ります.Calculatorアプリをクリックして起動
あなたのクラスでは、Androidデバイスを表す
setUp
というsetUp
タイプのメンバー変数を宣言し、UI操作をシミュレートします.private UiDevice device;
device
メソッドでは、UiDevice
メソッドを呼び出すことによってdeviceを初期化し、setUp
のインスタンスパラメータを以下のように渡すdevice = UiDevice.getInstance(getInstrumentation());
UiDevice.getinstance
メソッドを呼び出してデバイスを押すホームキーをシミュレートするdevice.pressHome()
次に、アプリケーションのアイコン上でクリックイベントをシミュレートする必要がありますが、すぐにはできません.Androidデバイスはインタフェースをロードするのにしばらくかかります.画面に表示される前にアプリケーションのアイコンをクリックしようとすると、runtimeの異常が投げ出されます.
何かが起こるのを待つためには、
Instrumentation
インスタンスオブジェクトのpressHome
メソッドを呼び出し、UiDevice
メソッドを使用してアプリケーションを待つアイコンを画面に表示する必要があります.アプリケーションのアイコンを識別するために、
wait
メソッドを使用し、パラメータとしてAppsを渡す.待ち時間の最大ミリ秒数を説明する必要があります.ここでは3000に設定します.結果は次のコードのようです.// Wait for the Apps icon to show up on the screen
device.wait(Until.hasObject(By.desc("Apps")), 3000);
アプリケーションアイコンの参照を取得するには、
Until.hasObject
メソッドを使用します.アプリケーションアイコンに来るアプリケーションを取得すると、By.des
メソッドを呼び出してクリックをシミュレートします.UiObject2 appsButton = device.findObject(By.desc("Apps"));
appsButton.click();
前と同じように、しばらく待って、Calculatorのアイコンを画面に表示させます.Calculatorのアイコンが
findObject
変数で一意に認識されるのを見ることができます.click
メソッドを呼び出し、text
パラメータを渡してアイコンを見つけることができます.// Wait for the Calculator icon to show up on the screen
device.wait(Until.hasObject(By.text("Calculator")), 3000);
By.text
とCalculator
の方法でCalculatorアイコンの参照を取得し、クリックをシミュレートします.UiObject2 calculatorApp = device.findObject(By.text("Calculator"));
calculatorApp.click();
5.CalculatorのUIの表示
AndroidデバイスでCalculatorアプリケーションを実行し、UI Autoamtor Viewerで確認し、スクリーンショットを取得した後、これらのボタンをクリックして、彼らを唯一認識できるかどうかを確認します.
今回のテスト例では、操作計算機を9+9と計算し、結果が18であるかどうかを確認します.これは、9,+および=をどのように識別するかを知る必要があることを意味します.
私のデバイスでは、次の情報を収集します.-数値キーはtext値に一致します-+と=content-desc値を使用して、plusとequals-戻り値はEditTextコントロールに表示されます.
異なるバージョンのCalculatorアプリケーションを使用すると、これらの値はデバイスに異なる可能性があります.
6.テストケースの作成
前の手順では、
findObject
を使用してclick
またはfindObject
を同時に使用して画面上の任意のオブジェクト参照を取得することを学びました.By.text
の方法でクリックオブジェクトをシミュレートし、By.desc
の方法に次のコードを追加して、9+9=の操作を行うことも知っています.// Wait till the Calculator's buttons are on the screen
device.wait(Until.hasObject(By.text("9")), 3000);
// Select the button for 9
UiObject2 buttonNine = device.findObject(By.text("9"));
buttonNine.click();
// Select the button for +
UiObject2 buttonPlus = device.findObject(By.desc("plus"));
buttonPlus.click();
// Press 9 again as we are calculating 9+9
buttonNine.click();
// Select the button for =
UiObject2 buttonEquals = device.findObject(By.desc("equals"));
buttonEquals.click();
この場合、結果を待つ必要がありますが、ここで
click
を使用することはできません.画面にはCalculatorTester
が結果を含んでいるため、逆にtestAdd
の方法で決済が完了するのを待ってから、最大の待ち時間として3000 msを設定する必要があります.device.waitForIdle(3000);
Until.hasObject
およびEditText
メソッドを使用して、waitForIdle
オブジェクトの参照を取得し、その参照を取得すると、findObject
メソッドを呼び出して計算結果を取得できます.UiObject2 resultText = device.findObject(By.clazz("android.widget.EditText"));
String result = resultText.getText();
最後に、
By.clazz
を使用して結果が18であるかどうかを検証します.assertTrue(result.equals("18"));
あなたのテスト例は完成しても
7試験例の実行
テストを実行するには、Android Studioのツールバードロップダウンボックスで
EditText
を選択し、右側で再生ボタンをクリックする必要があります.コンパイルが完了すると、テストが実行され、正常に実行され、テスト例が実行されると、Androidデバイスが自動化されていることがわかります.
結論
今回のチュートリアルでは、UIの自動化テストフレームワークとUI Automator Viewを使用してUIテストを作成する方法を学びました.Android Studioを使用してテストを行うときの簡単さも見ることができます.私たちがテストしたことはかなり簡単なアプリケーションですが、ここで学んだ内容を適用してAndroidアプリケーションの大部分をテストすることができます.
Android Developers websitesでtesting support libraryについてもっと勉強できます