こんにちは。ヒューマンクレスト山口です。
Androidの実機で自動テストを行う時、どのような環境でテストしていますか?
今回はAWSが提供するDevice Farmを使用した方法について紹介します。
①環境
- 実行環境:AWS Device Farm
- ソースコード:Java + JUnit + Maven
②実行手順
■プロジェクトの作成
Javaのプロジェクトを作成します。
この時に、Mavenが使用できる形で作成して下さい。
■pom.xml、zip.xmlを設定する
AWS Device Farmの特徴的な設定については、こちらに従います。
Working with Appium Java JUnit for Android and AWS Device Farm
これらの設定に加えて、今回はJUnitとAppiumを使用するので、必要なライブラリを記入します。
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>4.1.2</version> <scope>test</scope> </dependency> </dependencies>
■テストを書く
今回は、単純に以下のような操作を書きました。(ここの書き方は通常のテストと同じです)
URLを開く⇛「AWS DeviceFarm」を入力する⇛検索するボタンをクリック⇛ブラウザを閉じる
import io.appium.java_client.AppiumDriver; import io.appium.java_client.android.AndroidDriver; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.URL; import static org.junit.Assert.assertEquals; /** * Created by mao on 2017/06/15. */ public class Sample1 { private static AppiumDriver driver; @BeforeClass public static void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setBrowserName("chrome"); driver = new AndroidDriver<>(new URL("https://127.0.0.1:4723/wd/hub"), capabilities); } @AfterClass public static void tearDown() { driver.quit(); } @Test public void AndroidChromeTest() { driver.get("https://www.google.co.jp/"); driver.findElement(By.id("lst-ib")).sendKeys("AWS DeviceFarm"); driver.findElement(By.id("tsbb")).click(); assertEquals("AWS DeviceFarm",driver.findElement(By.id("lst-ib")).getAttribute("value")); } }
■zipを作成する
pom.xmlと同じディレクトリに移動し、以下のコマンドを実行します。
mvn clean package -DskipTests=true
このコマンドを実行すると「target/zip-with-dependencies.zip」が作成されます。
このzipファイルをAWS DeviceFarmの設定で使います。
■AWS DeviceFarm上で設定を行う
具体的な方法についてはこちらに載っています。
Getting Started with AWS Device Farm
基本的には流れに沿って設定するだけです。
途中zipファイルをアップロードする所があるので、そこで先程作成した「zip-with-dependencies.zip」をアップロードします。
また、テストを実行したい端末を選びます。(同時に何台もの端末を選ぶことも可能です)
今回の簡単なテストでは、実行してから終了するまで5分程度でした。
ブラウザを起動するまでに時間がかかっていそうです。
③AWS Device Farm の特徴
AWS Device Farmを活用することの利点はAWS上にある端末が使えることと、結果表示だと思います。
以下のような結果を特別な設定をせずに見ることが可能です。
・実行動画の撮影(ダウンロードも可能です)
実行終了後に作成されます。どのように実行されたか見ることが可能です。
・スイート毎の結果表示
・実行ログの表示(ダウンロードも可能です)
・CPU/Memory/Threadsの推移
・スクリーンショット(ソースの中で書いておくと表示されます)
④感想
pom.xmlで特定の指定方法がありますが、他の所についてはAppiumとJUitで書く書き方と変わらなさそうです。
「手元に端末がない!」「端末の監視をしているのが大変!」などあれば、AWS DeviceFarmを活用してみてはいかがでしょうか。
