iOSアプリ 
UIテスト自動化入門 
~AppiumによるE2Eテスト~
agenda 
• 前提知識 
• OS標準のUIテストツール 
• Appiumとは 
• 今後の展開
前提知識 
Ruby 
Bundler 
Gem 
RSpec 
Cucumber 
Turnip 
Gherkin 
BDD 
UIAutomation 
Tuneup.js 
uiautomator 
Javascript 
Node.js...
UIテストどうしてます?
目視
スクリーンショット 
(手動)をExcelに
ある人は言いました
これはもう人類のやる作業 
じゃないよね
自動化しましょう
UIAutomation 
iOSアプリ開発の標準ツールInstrumentsのテンプ 
レートの一つ、UIの操作をjavascriptでレコード 
し、iPhoneSimulator及びiPhone実機で操作を追 
実行出来る。スクリーンショ...
使い勝手を良くする為の 
フレームワークもあります。
Turneup JS
Turneup JS 
UIAutomationのコードを素のまま書くと 
ちょっと冗長になので、その点を補完されて 
いる。jsライブラリ 
http://www.tuneupjs.org
iOSだけ?
UIテスト自動化ツールは 
Android標準もあります。
uiautomator
また新しいツール使い方覚え 
なきゃいけないの?
ある程度は仕方ない
既存のテスティングフレーム 
ワークを使えないの?
既存のテスティングフレーム 
ワークって?
xUnit系(JUnit、OCUnit、NUnit)、 
BDD系(RSpec,Cucumebr)
慣れたツール・言語でやれる 
に越したことはないよね?
こっから今日の本題
Appium
Appium 
iOS/AndroidのUIテスト自動化ツール、 
Selenium WebDriverを使用している為、 
Web系の開発でSeleniumを使ってた人は 
比較的導入が楽。
Appiumの構成
Appiumのイイトコ 
・リリースビルドのバイナリを使える。 
アプリにSDKの埋め込みをする必要がありません。 
・言語・テスティングフレームワークが自由
Appiumのビミョーなトコ 
・ちょっと遅い 
・Selenium WebDriverの知識必須
Turnip 
Turnip は、受け入れテストのフレームワークである Cucumber によって整備 
されてきた feature ファイルと step_definitions ファイルの構成 (Gherkin 書 
式) を RSpec 内...
http://www.slideshare.net/KazuMatsu/20141018-selenium-appiumcookpad
Scenario 
機能: UI操作テスト 
Appiumの操作を理解する為にアプリでよくある操作を行ってみます。 
シナリオ: スイッチを操作する 
* "Switches" をタップ 
* 1 番目のスイッチをON 
* 2 番目のスイッチ...
Step 
#タップ 
step ":name をタップ" do |name| 
find(name).click 
end 
#スイッチ 
step ":index 番目のスイッチをON" do |index| 
sleep 0.5 
ele...
demo
学習コスト
Stepの作成する場合は結構手間
Scenarioが書ければいい
今後の予定 
・ImageMagickでスクリーンショットの差分画像作 
成の自動化 
・Jenkins、Grunt、gulpと組み合わせる 
・hubot等のChatOpsからの実行 
・Androidで同じシナリオを実行する
以上 
ご静聴ありがとうございました。
iOSアプリ UIテスト自動化入門
Upcoming SlideShare
Loading in...5
×

iOSアプリ UIテスト自動化入門

780

Published on

社内LT会で作ったAppiumの簡単な説明資料

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
780
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "iOSアプリ UIテスト自動化入門"

  1. 1. iOSアプリ UIテスト自動化入門 ~AppiumによるE2Eテスト~
  2. 2. agenda • 前提知識 • OS標準のUIテストツール • Appiumとは • 今後の展開
  3. 3. 前提知識 Ruby Bundler Gem RSpec Cucumber Turnip Gherkin BDD UIAutomation Tuneup.js uiautomator Javascript Node.js npm Selenium
  4. 4. UIテストどうしてます?
  5. 5. 目視
  6. 6. スクリーンショット (手動)をExcelに
  7. 7. ある人は言いました
  8. 8. これはもう人類のやる作業 じゃないよね
  9. 9. 自動化しましょう
  10. 10. UIAutomation iOSアプリ開発の標準ツールInstrumentsのテンプ レートの一つ、UIの操作をjavascriptでレコード し、iPhoneSimulator及びiPhone実機で操作を追 実行出来る。スクリーンショットなども取れる。 https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/ UsingtheAutomationInstrument/UsingtheAutomationInstrument.html#//apple_ref/doc/uid/TP40004652-CH20 https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/ _index.html#//apple_ref/doc/uid/TP40009771
  11. 11. 使い勝手を良くする為の フレームワークもあります。
  12. 12. Turneup JS
  13. 13. Turneup JS UIAutomationのコードを素のまま書くと ちょっと冗長になので、その点を補完されて いる。jsライブラリ http://www.tuneupjs.org
  14. 14. iOSだけ?
  15. 15. UIテスト自動化ツールは Android標準もあります。
  16. 16. uiautomator
  17. 17. また新しいツール使い方覚え なきゃいけないの?
  18. 18. ある程度は仕方ない
  19. 19. 既存のテスティングフレーム ワークを使えないの?
  20. 20. 既存のテスティングフレーム ワークって?
  21. 21. xUnit系(JUnit、OCUnit、NUnit)、 BDD系(RSpec,Cucumebr)
  22. 22. 慣れたツール・言語でやれる に越したことはないよね?
  23. 23. こっから今日の本題
  24. 24. Appium
  25. 25. Appium iOS/AndroidのUIテスト自動化ツール、 Selenium WebDriverを使用している為、 Web系の開発でSeleniumを使ってた人は 比較的導入が楽。
  26. 26. Appiumの構成
  27. 27. Appiumのイイトコ ・リリースビルドのバイナリを使える。 アプリにSDKの埋め込みをする必要がありません。 ・言語・テスティングフレームワークが自由
  28. 28. Appiumのビミョーなトコ ・ちょっと遅い ・Selenium WebDriverの知識必須
  29. 29. Turnip Turnip は、受け入れテストのフレームワークである Cucumber によって整備 されてきた feature ファイルと step_definitions ファイルの構成 (Gherkin 書 式) を RSpec 内でテスト実行することができる新鋭のライブラリで、 Cucumber の改善案として提案されました。Cucumberの後継としてWeb シ ステムでのエンドツーエンドのテストを自動化する際に利用できます。 Cucumber の問題点を改善して実装されている筋の良さで、今後の普及が期 待されています。(下記リンクから抜粋) http://magazine.rubyist.net/?0042-FromCucumberToTurnip
  30. 30. http://www.slideshare.net/KazuMatsu/20141018-selenium-appiumcookpad
  31. 31. Scenario 機能: UI操作テスト Appiumの操作を理解する為にアプリでよくある操作を行ってみます。 シナリオ: スイッチを操作する * "Switches" をタップ * 1 番目のスイッチをON * 2 番目のスイッチをOFF * 戻る シナリオ: スライダーを操作する * "Sliders" をタップ * 1 番目のスライダーに 80 %を指定 * 戻る シナリオ: 日付ピッカーを操作する * "Date Picker" をタップ * 日付ピッカーに "2014/11/25 12:23:55" を指定 * 戻る
  32. 32. Step #タップ step ":name をタップ" do |name| find(name).click end #スイッチ step ":index 番目のスイッチをON" do |index| sleep 0.5 ele_index('UIASwitch',index.to_i).send_keys("1") end #DatePicker操作 step "日付ピッカーに :dateTime を指定" do |dateTime| sleep 0.5 pickerDate = tags("UIAPickerWheel")[0] pickerHour = tags("UIAPickerWheel")[1] pickerMinute = tags("UIAPickerWheel")[2] pickerAmPm = tags("UIAPickerWheel")[3] date = DateTime.strptime(dateTime,"%Y/%m/%d %H:%M:%S") pickerDate.send_keys(date.strftime("%Y/%m/%d %H:%M:%S")) pickerHour.send_keys(date.hour.to_s) pickerMinute.send_keys(date.minute.to_s) pickerAmPm.send_keys(date.strftime("%p")) end
  33. 33. demo
  34. 34. 学習コスト
  35. 35. Stepの作成する場合は結構手間
  36. 36. Scenarioが書ければいい
  37. 37. 今後の予定 ・ImageMagickでスクリーンショットの差分画像作 成の自動化 ・Jenkins、Grunt、gulpと組み合わせる ・hubot等のChatOpsからの実行 ・Androidで同じシナリオを実行する
  38. 38. 以上 ご静聴ありがとうございました。
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×