SlideShare ist ein Scribd-Unternehmen logo
1 von 94
UIテストの自動化
  UIAutomationを使って
      2012.3.24

     Cocoa勉強会
   大森智史(@oogon)
あんた、誰?
と、いうことで...
ごあいさつ
ごあいさつ


• 大森智史(おおもり さとし)です。
ごあいさつ


• 大森智史(おおもり さとし)です。
• Objective-C書いて遊んでます。
• というとこで、ICカードとか売ってま
 す。(システムまるごと)
• というとこで、ICカードとか売ってま
 す。(システムまるごと)

• iPhoneもそろそろNFCとか来そうだし
• というとこで、ICカードとか売ってま
 す。(システムまるごと)

• iPhoneもそろそろNFCとか来そうだし
• 何か案件があれば、どうぞ!
挨拶終わり
では、本題。
本日の内容
本日の内容

• iOSのUIテストの自動化の説明します。
本日の内容

• iOSのUIテストの自動化の説明します。
• どのようにするかの方法を説明します。
本日の内容

• iOSのUIテストの自動化の説明します。
• どのようにするかの方法を説明します。
 スライド、サンプルは後ほどSlidShareとGithubに置きます。
テストしましょう!
インターフェースの

• どうやってますか?
• 自分でボタン押して...スライドして...ボ
 タン押して...
面倒ですね
面倒な作業は
 Macに
そこで
どうするの?
コードを書きます
どんな?
JavaScript!
こんな感じ!
どこに?
Instrument!

• iOS 5からはコマンドラインからも使える
 らしい。
作り方
• XcodeからProfile実行
• Automationモジュールを選択
• Script > Add
• Create
• Scriptエディタ
 に書いていき
 ます
• 自動記録もできます。
仮の名前になるので、後で修正するべし。
どんなことが
1.ボタン押したり
タッチ、スライド、
  ピンチ
   など
2.オブジェクトが
何個あるかの検証
3.テストが成功した
か失敗したかの記録
4.GPSなどの現在地
    が
 変更できます。
もう、京阪デバッグ
   とは
 おさらばだ!
5.指定サイズのスク
リーンショット。
6.音量調節。
どんなふうに
 書くの?
まず最初
//変数targetにデバッグターゲットをセット

var target =
UIATarget.localTarget();

//ログ記録開始
UIALogger.logStart("テストスタート
Starting Test:"+ target.model());
オブジェクトを
変数にいれとく
//変数viewに現在のメインウインドウを

セット

var view =
UIATarget.localTarget().frontMost
App().mainWindow();
位置の
セット
//現在の位置をセット

target.setLocationWithOptions(
{latitude: 35.029500,longitude:
135.772700},
{horizontalAccuracy:10.0,
altitude:20.0});
画面撮影
//画面を撮影

target.captureScreenWithName("loc
ation3");
音量下げる
//音量下げる

target.clickVolumeDown();
ドラッグ
//指定位置でドラッグ

target.dragFromToForDuration({x:
15, y:114}, {x:150, y:114}, 5);
デバイスの向き変更
//デバイスの向きを変える

target.setDeviceOrientation(UIA_D
EVICE_ORIENTATION_LANDSCAPERIGHT)
;
判定
//判定

if (textfields.length != 0)
{    UIALogger.logFail("ERROR");
} else {
    UIALogger.logPass("OK");
}
UIAutomationのリ
ファレンスをみれば
もっといろいろあり
    ます。
ターゲット
iPhoneシミュレータ
iPadシミュレータ
    実機
テストを
実行するには?
Recordで実行します
1つ注意点!
コードを修正して
普通にビルドしても
古いアプリケーション
プロジェクトの修正
  をしたら...
Build for Profiling!

これで実行される
アプリケーションが
Build for Profiling!

これで実行される
アプリケーションが
大事なので
もう一度
Build for Profiling!
Build for Profiling!
それではDEMO
DEMO
まとめ1
まとめ1

• XcodeでProfileを実行。Automationモジュール。
まとめ1

• XcodeでProfileを実行。Automationモジュール。
• JavaScriptを書きます。UIAutomation参照。
まとめ1

• XcodeでProfileを実行。Automationモジュール。
• JavaScriptを書きます。UIAutomation参照。
• ターゲット別にテスト可能。
まとめ2
まとめ2

• UIパーツがどういう状態かを知ることができる
まとめ2

• UIパーツがどういう状態かを知ることができる
• 位置情報、向きなどデバイスの状態を変更できる
まとめ2

• UIパーツがどういう状態かを知ることができる
• 位置情報、向きなどデバイスの状態を変更できる
• 忘れないで! Build for Profiling
ありがとう
何か質問など?
ありがとう

Weitere ähnliche Inhalte

Mehr von Satoshi Oomori (8)

Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコード
 
Cocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみるCocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみる
 
Word net cocoa勉強会201306
Word net cocoa勉強会201306Word net cocoa勉強会201306
Word net cocoa勉強会201306
 
Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306
 
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイルCocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイル
 
Cocoa勉強会201302
Cocoa勉強会201302Cocoa勉強会201302
Cocoa勉強会201302
 
Cocoa勉強会201208
Cocoa勉強会201208Cocoa勉強会201208
Cocoa勉強会201208
 
Cocoa勉強会2011年11月
Cocoa勉強会2011年11月Cocoa勉強会2011年11月
Cocoa勉強会2011年11月
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

Cocoa勉強会201203公開

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n