コンテンツへスキップ

Vagrant環境下におけるブラウザテストについて(Androidエミュレータ編)

by : 2014/12/05

最初にご紹介したGoogle Chrome編、前回のiOSシミュレータ編に続き、今回はAndroidでのテスト方法を紹介します。Androidの場合エミュレータ上でテストするので、ネットワーク周りも含めて母艦とは別なものとして考えることができます。

Androidの場合、エミュレータの速度が最大の問題になります。そこでIntel HAXM(Intel® Hardware Accelerated Execution Manager)をインストールしてエミュレータを高速化するところからはじめます。

HAXMをインストール

まず最初にEclipseのAndroid SDK Managerを起動します。今回の手順はMac OSXで行っていますが、Windowsでもほぼ同じ方法になります。Extras以下にある Intel x86 Emulator Accelerator (HAXM) をインストールします。


この段階ではインストーラーのダウンロードまでになります。インストーラーは Intel x86 Emulator Accelerator (HAXM) をマウスオーバーするとパスが表示されます。


今回の場合は ~/android-sdks/extras/intel/Hardware_Accelerated_Execution_Manager/ になります。開くとDMGファイルがありますので(Windowsの場合は実行ファイル)開きます。


イメージファイルの中にインストールファイルがありますので起動します。


インストーラーはウィザード方式になっていますので順番に手順を進めて完了してください。


これでインストールは完了です。

イメージファイルをインストール

ADVの作成に際して専用のイメージファイルが必要になります。Android SDK Managerを起動して、必要なAndroid APIバージョンの Intel x86 Atom System Imageをインストールしてください。


AVDの作成

イメージファイルをインストールしたら、Android Virtual Deviceを起動します。


そしてCPI/ABIの選択においてIntel Atom (x86)を選択してください。


後は Emulator OptionsでUse Host GPUをチェックします。


これで準備は完了です。

selendroidを起動する

Androidのテストには selendroid を使います。執筆時の最新バージョンは 0.12.0 で、こちらのリンクでダウンロードできます。

テストを実行する

selendroidは最初にエミュレータに接続するようなので、エミュレータはあらかじめ起動しておいてください。HAXMを使っていれば、10秒くらいで起動するはずです。


次のコマンドでselendroidを起動します。

$ java -jar selendroid-standalone-0.12.0-with-dependencies.jar 

なおANDROID_HOMEが設定されていないとエラーになりますので必要があれば下記コマンドで設定してください。Windowsの場合はシステムのプロパティで設定してください。

export ANDROID_HOME=~/android-sdks/

デフォルトで 4444番ポートで待機状態になります。

Selenium Serverへの設定

後はSelenium Serverの設定になります。Rubyの場合、次のような設定になります。

Capybara.register_driver :android do |app|
  Capybara.app_host = "http://192.168.100.100:3000"
  Capybara::Selenium::Driver.new app,
    browser: :remote,
    url: "http://192.168.100.100:4444/wd/hub",
    desired_capabilities: {
      browserName: 'android',
      emulator: true,
      platformVersion: '19',
      platform: 'Mac',
      version: '2.3',
      deviceOrientation: 'landscape'
    }
end

シミュレータの場合、app_hostはlocalhostになりますが、エミュレータの場合はネットワークが別ですのでIPアドレスで指定する必要があります。ただしこの設定がうまくいっていればPC内部以外、ステージング環境などもURLを変えるだけでテストできるようになります。

テストを実行すると、まず専用のWebブラウザアプリがインストールされます。


そしてテストはそのブラウザを使って行われます。


$ DRIVER=android ruby -S rspec spec/features/hello_spec.rb .

Finished in 18.07 seconds
1 example, 0 failures

Randomized with seed 32027

設定を多少変更すれば実機テストも行えるはずです。


Androidを使ったテストではエミュレータであるという点が異なります。そのためSeleniumへ別なPCからアクセスできるようにしたり、localhost以外のIPアドレスを指定してWebアプリケーションのテストが行えるようにしなければなりません。テスト環境がAndroidか否かを判別して設定を変更するといった手法が必要です。

HTML5企業Webシステムのための開発プラットフォーム
hifive – HTML5企業Webシステムのための開発プラットフォーム – hifive

From → HTML5

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。