Appium を使ったテスト環境　その１ (Windows+Ruby+Android)

# Appium + Windows + Ruby 　で　Android

ハードウェアのフラグメント問題は今に始まった問題ではありませんが、人力でカバーできる範囲には限界があります。自動化できるところは任せて、人力でなければできないところにパワーをまわしたいものです。
その日に備えて、環境構築をしておきたいと思います。
なお今回はアプリがエミュレータ上で起動するまでをゴールとします。


## なぜ？

検索するとヒットする記事があるのですが自分の環境とフィットする記事はなかなか見つからなかったりします。

- OSX環境の人が多い（IOSもターゲットにすると当然です）
- Javaを使っている　(開発に近い人がたくさん書いていると思われ）
- 少し古いバージョンで書かれている（というよりバージョンアップが頻繁に行われるからかも）
- Appiumのカバー範囲が広い

最後の点について列挙してみました

| 要素 | 因子１ | 因子２ | 因子３ |
|:-----------|------------:|:------------:|:------------:|
| appium稼働OS | window | OSX | Linux |
| テスト対象 | ネイティブアプリ | ブラウザ | ハイブリッド |
| ブラウザ |　(標準）ブラウザ |　chrome |  |
| テスト動作OS | Android | IOS | | | 
| android OS | 2.x | 3.x | 4.x | 
|テスト動作環境| 実機 | エミュレータ | | |
|appium動作 | GUI版 | CUI版 |||


この中から自分の構築したいバリエーションを選び出すことになる訳です。

## 構築
今回構築する環境は以下の通り

- windows7 (64bit)
- Ruby Ver 2.0.0
- appium Ver 1.2.4.1

なお、自分はRubyを使ったことがないため、いわゆる　使っている人たちは普通に知っている　ことを知らないで着手しているので　既に知っている方は読み飛ばしてください。

### 大前提
AndroidSDK と　JavaSDK はもちろんインストールしてください！

## Ruby

公式から　http://rubyinstaller.org/downloads/ windowsインストーラー版を使ってインストール
現時点で　最新版は　2.1.3　がありますが　2014.10.08　時点で　2.1以上は後でなきを見るので　2.0.0-p576 を選びましょう

インストーラを使うのですが注意点は　パスに　スペースなどが含まれていると後でなきを見ます　c:¥program file　などはさけましょう

### DEVELOPMENT KIT

ネイティブモジュールをインストール時に必要になります
先ほどのページの下にリンクがあります。32bit か　64bitで選択ですね

DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe　

自己解凍形式なのでディレクトリを作成して　その中で　ダブルクリック
コマンドプロンプト　で　当該ディレクトリに移って下記のコマンドを実行

c:¥ruby dk.rb init

先ほどインストールした　ruby のパスが表示されればOK　ですが　何度もインストールの試行錯誤をしていると　うまく拾ってくれない場合もあります。　
その場合は、同ディレクトリにある config.yml ファイルの　例に習って直接書き込みます
例）
　- c:¥ruby200   

でインストールします
c:¥ruby dk.rb install

### ライブラリのインストール

gemコマンドを使ってインストールします
今回インストールしたバージョンには　gemが組み込まれているのでこれのバージョンアップをします

c:¥gem update --system

### selenium-webdriver

c:¥gem install selenium-webdriver

このインストール時に（ERROR: Failed to build gem native extension.）といった失敗をする場合は以下を疑いましょう

- バージョンがあっていない
- DEVELOPMENT KIT がインストールできていない

### appium_lib

c:¥gem install appium_lib

### rspec

テストフレームワークです　ほかにも選択肢はあります

c:gem install rspec

## appium 


動作環境にnode.jsが必要になります。こいつもなかなか大変なので今回は　GUI版を使います。
CIを考えると　CUI版ですが　まず動かすことを優先しました。

https://bitbucket.org/appium/appium.app/downloads/AppiumForWindows-1.2.4.1.zip

これは解凍して実行するだけです

設定パネルもありますがとりあえずさわらず、右上の　三角ボタンをクリックすれば　appiumサーバが起動します

# エミュレータ起動

通常のエミュレータはあまりに起動に時間がかかることで有名です。
なので　HAXMとIntel x86 Atom System Imageを組み合わせたセットアップをしましょう。

今回の対象とするAndroidOSは　4.4.3 としました。
セットアップが終わったら　起動しておきます

コマンドプロンプトで動作確認をします

c:¥> adb devices
List of devices attached
emulator-5554


# テストスクリプト

rubyで書きます。とりあえず　エミュレータ上で起動させるまで。


```ruby:starup1.rb
require 'selenium-webdriver'
require 'appium_lib'

opts = {caps: {deviceName: 'emulator-5554',
               platformName: :android,
               app: 'C:¥appium¥テスト対象アプリ.apk', 
               appActivity: 'アクティビティー'}}

driver = Appium::Driver.new(opts).start_driver

driver.quit

```

これを実行します

c:¥rspec starup1.rb

うまくいけば　エミュレータ上にテスト対象のアプリがインストール、起動するはずです。

もし　途中　
Error: Could not find zipalign in tools, platform-tools, or supported build-tools under "xxxxxx"; do you have android SDK or build-tools installed into this location?

と表示された場合は　Andorid SDK build-tools　がインストールされていないので　SDK　Managerから　使用する　APILevelにあった　build-toolsをインストールしましょう

うごきましたか？

ここからやっとテストスクリプトに着手できます。
それはまた別記事で。

ではでは