SlideShare a Scribd company logo
Appium+RSpec
Kazuaki MATSUO
目的/目標
● 目的
○ 自プロジェクトのiOS/Androidアプリを実行し、Appiumを
使いテストすることができるようになることで、Appiumに
対するノウハウを蓄積する
■ その他、必要な知識(nvm/npm/rvm)も知る
○ Appiumでできることを知り、何ができそうか見立てをた
てる
● 目標
○ 何らかのシナリオに記述した操作を、アプリ起動後1回
でも行うことができるようにする
○ rvm/nvm/npmの存在を知る
● 言及しないこと
○ 自動化できる箇所/できない箇所/設計などには言及しま
about appium
● WebDriverをもとに、iOS/Android/FireFoxOS向けアプリを
テストできるように開発されているOSS
○ イメージとしては、SeleniumのiOS/Android向け版
○ Sauce Labs が開発の中心
● WebDriverはW3Cとして仕様が固まってきている
○ FireFoxOSはWebDriver APIに対応している
■ https://dvcs.w3.org/hg/webdriver/rawfile/tip/webdriver-spec.html
● AppiumのWebページ
○ http://appium.io
● Github
○ https://github.com/appium/appium
寄り道:類似プロジェクト
ios-driver(http://ios-driver.github.io/ios-driver/)
Selendroid(http://selendroid.io)
Appiumは特定のバージョン以下はAndroidを対象としたものは
Seledroidを使っている。
上記2プロジェクトとAppium、Seleniumは今後互いを意識しな
がら開発を進めようとしているらしく、それらを全体として
Seleniumファミリーとしてとらえて情報を追っていった方が良い
かもしれませんね。
仕組み(ざっくり)

テストシナリオ
described in
Ruby/Python/Java...

Appium向けAPI
Appium server

通信の仕組みは
iOS/Androidに依存

iOS
Android
Positive
SDKを、試験対象に埋め込む必要が無い
=> ユーザに直接届けるリリース物を試験することができる。
JsonWriteProtocolにより記述できるため、Selenium/Appium
とシナリオの共通化も可能
=> WebViewベースのものとかできるかもしれないですね
Negative
日本語の資料が少ない
=> 基本はWebDriverなので、あまり問題は無いかも。
メンテナンス性を考えると、シナリオの記述方法やまとめ方を考
えなければ複雑になるかも。
考えなければいけないこと
どこを自動化するか?
変更の頻度は?
デモ
ここからの流れ
1. nvm/npmを使いAppiumをインストール
2. rvmを使い、シナリオに使うRSpecの実行環境
を整える
3. 試しにappiumを動かしてみる
4. サンプルプロジェクトを動かしてみる
5. デモで動かしたRSpecシナリオを読んで、どうい
う操作ができるのか見てみる
install “nvm” to manage node
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install v0.11.9
※ $ nvm ls-remote にて、現在インストール可能なすべてのリ
ストを取得可能
install “nvm” to manage node
$ nvm alias default v0.11.9
次回以降、ターミナルを開くたびにnvm関連を有効にしたいの
で、bash_profileに以下を入力しておきましょう。
$ vi ~/.bash_profile
> source ~/.nvm/nvm.sh
> npm_dir=${NVM_PATH}_modules
> export NODE_PATH=$npm_dir
install appium
インストール用ライブラリは NODE_PATH に保存
されます。
$ sudo npm install -g appium@0.12.3
※20131227現在、0.13.0がインストールできるの
ですが、動作確認している0.12.3を使います
appiumの実行環境のチェック
0.13.0から、appium-doctorが正常に動作します
$ appium-doctor
出力例(次ページ)
appiumの実行環境のチェック(標準出力)
> Running iOS Checks
> ✔ Xcode is installed at /Applications/Xcode.app/Contents/Developer
> ✔ Xcode Command Line Tools are installed.
> ✔ DevToolsSecurity is enabled.
> ✔ The Authorization DB is set up properly.
> ✔ Node binary found using which command at /Users/username/.nvm/v0.11.9/bin/node
> ✔ iOS Checks were successful.
> Running Android Checks
> ✔ ANDROID_HOME is set to "/Applications/android-sdk-macosx"
> ✔ JAVA_HOME is set to "/System/Library/Frameworks/JavaVM.framework/Home."
> ✔ ADB exists at /Applications/android-sdk-macosx/platform-tools/adb
> ✔ Android exists at /Applications/android-sdk-macosx/tools/android
> ✔ Emulator exists at /Applications/android-sdk-macosx/tools/emulator
> ✔ Android Checks were successful.
> ✔ All Checks were successful
rvmのインストール
rvmによるrubyのインストール
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ rvm install 1.9.3
$ rvm use 1.9.3

$ ruby -v
Appium向けサンプルシナリオの取得
RSpecのサンプルダウンロード
$ git clone https://github.com/KazuCocoa/sampleSenarioForAppium.git
Git clone後、カレントディレクトリを移動
$ cd sampleSenarioForAppium
$ bundle install
Appium向けサンプルシナリオの実行
appiumの起動
$ appium -a localhost
エラー?
※直ぐにわからないエラーの場合、別案でappiumを起動します。
シナリオ実行
bundle installしたディレクトリ配下で・・・
$ rspec sample_ios.rb
エラー?
xcodeのバージョン?
xcodeに所定のシミュレータが入っていない?
※サンプルでは、ios7向けシミュレータがあれば動作はします
サンプルシナリオの中身:Gemfile
● Gemfile
source "https://www.rubygems.org"
gem "rest-client"
gem "rspec"
gem "selenium-webdriver"
gem "cucumber"
gem "rspec-expectations"
サンプルシナリオの中身:
sample-ios.rb - 1
require 'rubygems'
require 'selenium-webdriver'
require 'date'
require 'rspec'
require '../parameters' # obtain each parameters
describe 'sample senario' do
サンプルシナリオの中身:
sample-ios.rb - 2 (RSpecの基本構成)
describe 'sample senario' do
before :all do
end
after :all do
end
before :each do
end
after :each do
end
# sinario
サンプルシナリオの中身:
sample-ios.rb - 3
describe 'sample senario' do
before :all do
@client = Selenium::WebDriver::Remote::Http::Default.new
@client.timeout = 120 # secound
@driver = Selenium::WebDriver.for(:remote,
:http_client => @client,
:desired_capabilities => IOS_CAPABILITIES,
:url => SERVER_RUL)
@driver.manage.timeouts.implicit_wait = 10 # seconds
@driver_wait = Selenium::WebDriver::Wait.new :timeout => 30
end
after :all do
@driver.quit if @driver
end
サンプルシナリオの中身:
sample-ios.rb - 4
before :each do
end
after :each do
end
# sinario
# 初期化
describe '' do
context '' do
it '' do
実際は、ここにシナリオを記述する
end
end
end
end
サンプルシナリオの中身:
../parameters.rb - 1
APP_PATH_IOS = 'https://dl.dropboxusercontent.com/u/1265532/SampleForAppium.app.zip'.freeze
APP_PATH_ANDROID = '/Users/username/Documents/test.apk'.freeze
TARGET_SERVER = 'http://localhost:4723'.freeze
SCREENSHOT_SAVE_PATH = "#{Date::today.to_s}/".freeze
FileUtils.mkdir_p(SCREENSHOT_SAVE_PATH) unless FileTest.exist?
(SCREENSHOT_SAVE_PATH)
# capabilities for Appium
IOS_CAPABILITIES = {
'browserName' => '',
'device' => 'iPhone',
'deviceName' => 'iPhone Retina (4-inch)', #only for ios simulator: 'iPhone Retina (3.5-inch)'
'version' => '7.0',
'app' => APP_PATH_IOS
}.freeze
SERVER_RUL = "#{TARGET_SERVER}/wd/hub".freeze
あとは・・・
基本的な設定でAppiumとシミュレータが動作した
ら、あとはシナリオを順に書いていくだけ!!
20131227_appium+rspec
インスペクタによるアプリの確認
Mac向けアプリのダウンロード
https://github.com/appium/appium/releases/tag/v0.12.3

時間無ければ、ブログを参考にする。
もしくは、その場で画面に表示させながら。
20131227_appium+rspec
Tips
こんなことできる
SDKのようなモジュールを組み込んだ環境ではない
=>
とある、Webページを描画する機能において、特定のボタンを
押下後、”実際に端末側画面の描画が完了した”時点までの経
過時間を計測可能
=>
ユーザ目線での、体感の応答性をはかることが可能
※ネットワークの遅延もふまえた上での実測値であることが大
事

More Related Content

PPTX
Win7 * appium * androidで実機自動テストやってみた。
PDF
Appiumのテスト結果レポートをsahaginで作ってみる
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
PDF
Selenium boot campの紹介
PPTX
Selenium IDE for primer
PDF
スマホアプリ自動テストサービス
PPTX
STFとAppiumをもちいたAndroidアプリの自動テスト
PPTX
Selenium勉強会
Win7 * appium * androidで実機自動テストやってみた。
Appiumのテスト結果レポートをsahaginで作ってみる
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Selenium boot campの紹介
Selenium IDE for primer
スマホアプリ自動テストサービス
STFとAppiumをもちいたAndroidアプリの自動テスト
Selenium勉強会

What's hot (20)

PDF
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
PDF
AppiumのWebViewアプリテストの仕組みとハマりどころ
PDF
エンタープライズ開発でのSelenium活用事例
PDF
iOSアプリ UIテスト自動化入門
PPTX
Selenium2(web driver) ide編
PPTX
Device Farm を使ったスマホアプリの自動テスト
PPTX
Selenium2(web driver)
PPTX
WEB開発動作テストの自動化 を行うSeleniumの紹介
PDF
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
PDF
テスト自動化の様々な道具を使ってみた四方山話
PDF
Travis CIで実現するPHPアプリの自動テスト
PDF
Selenium入門
PPTX
App extensionでテストコードを書く
PDF
JenkinsとSeleniumの活用事例
PDF
Introduction to Visual Studio App Center
PDF
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
PPTX
HTML5 クロスプラットフォームアプリ開発の現実解
PPTX
アプリの不具合を少なくするために
PPTX
Rselenium Dockerとの接続
PPTX
Seleniumまとめ
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
AppiumのWebViewアプリテストの仕組みとハマりどころ
エンタープライズ開発でのSelenium活用事例
iOSアプリ UIテスト自動化入門
Selenium2(web driver) ide編
Device Farm を使ったスマホアプリの自動テスト
Selenium2(web driver)
WEB開発動作テストの自動化 を行うSeleniumの紹介
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
テスト自動化の様々な道具を使ってみた四方山話
Travis CIで実現するPHPアプリの自動テスト
Selenium入門
App extensionでテストコードを書く
JenkinsとSeleniumの活用事例
Introduction to Visual Studio App Center
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
HTML5 クロスプラットフォームアプリ開発の現実解
アプリの不具合を少なくするために
Rselenium Dockerとの接続
Seleniumまとめ
Ad

Similar to 20131227_appium+rspec (20)

PPTX
Appsody でnodejsのアプリを立ち上げよう!
PDF
Nseg20120825
ODP
Nseg20120929
PDF
Cloud Foundryで学ぶ、PaaSのしくみ講座
PDF
VMを改めて学んで見る
PDF
PhoneGap勉強会 - 実践編 -
PDF
Casper js エスキュービズム勉強会0718
PPTX
作られては消えていく泡のように儚いクラスタの運用話
PDF
Capistranoで自動デプロイ
PDF
12 総合演習Word Pressの利用
PPTX
Goss入門
ODP
今流行りのウェブアプリ開発環境Yeoman
PPT
ROMA on JRuby at JRubyKaigi 2010
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
成長を加速する minne の技術基盤戦略
PPTX
Ansible/Vagrantでアドテク環境を最速構築
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PPTX
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
PDF
Ansible ではじめるサーバ作業の自動化
PDF
React Native GUIDE
Appsody でnodejsのアプリを立ち上げよう!
Nseg20120825
Nseg20120929
Cloud Foundryで学ぶ、PaaSのしくみ講座
VMを改めて学んで見る
PhoneGap勉強会 - 実践編 -
Casper js エスキュービズム勉強会0718
作られては消えていく泡のように儚いクラスタの運用話
Capistranoで自動デプロイ
12 総合演習Word Pressの利用
Goss入門
今流行りのウェブアプリ開発環境Yeoman
ROMA on JRuby at JRubyKaigi 2010
はてなにおける継続的デプロイメントの現状と Docker の導入
成長を加速する minne の技術基盤戦略
Ansible/Vagrantでアドテク環境を最速構築
今だからこそ知りたい Docker Compose/Swarm 入門
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
Ansible ではじめるサーバ作業の自動化
React Native GUIDE
Ad

More from Kazuaki Matsuo (20)

PDF
2022-jasst-tohoku.pdf
PDF
Add new commands in appium 2.0
PDF
Manage appium dependencies with -appium-home in appium 2.0
PDF
20210616-career-example-at-icare
PDF
Chrome Devtools Protocol via Selenium/Appium (English)
PDF
Chrome Devtools Protocol via Selenium/Appium (Japanese)
PDF
Xcode 11におけるXCUITestの挙動
PDF
20191130 system-automation-conference
PDF
Uncovering breaking changes behind UI on mobile applications
PDF
Start contributing to OSS projects on your way
PDF
Go ahead outside Japan
PDF
CookpadTechConf2018-(Mobile)TestAutomation
PDF
20171215 andoird-test-night
PDF
20170726 ios test_night_no
PDF
20170701 lets-step-into-the-oss-community
PDF
20170613 tech easy
PDF
20170529 clem kazuaki_matsuo
PDF
20150423 m3
PDF
20170302 tryswift tasting_tests
PDF
20161126 to ruby
2022-jasst-tohoku.pdf
Add new commands in appium 2.0
Manage appium dependencies with -appium-home in appium 2.0
20210616-career-example-at-icare
Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (Japanese)
Xcode 11におけるXCUITestの挙動
20191130 system-automation-conference
Uncovering breaking changes behind UI on mobile applications
Start contributing to OSS projects on your way
Go ahead outside Japan
CookpadTechConf2018-(Mobile)TestAutomation
20171215 andoird-test-night
20170726 ios test_night_no
20170701 lets-step-into-the-oss-community
20170613 tech easy
20170529 clem kazuaki_matsuo
20150423 m3
20170302 tryswift tasting_tests
20161126 to ruby

20131227_appium+rspec