Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AppiumとかのiOSシミュレータのストーリミングの実装の話

660 views

Published on

2019/2/20に行われた Android/iOS Test Night 番外編 ( https://testnight.connpass.com/event/119308/ ) の資料です。

Published in: Technology
  • Be the first to comment

AppiumとかのiOSシミュレータのストーリミングの実装の話

  1. 1. Appiumとかの iOS Simulatorの Streamingの実装の話 株式会社TRIDENT 伊藤 望 (Nozomi Ito)
  2. 2. About Me  伊藤 望 (@ito_nozomi)  株式会社TRIDENT 代表  AI自動テストサービス Magic Pod を運営  Community  日本Seleniumユーザーコミュニティ
  3. 3. SeleniumConf Tokyo 2019
  4. 4. 今日のテーマ  AppiumのiOS Simulatorのストリーミングの実装 の話  Why?  Magic PodのCloud Simulator機能を実装する際に、色々 調べたので
  5. 5. Appiumとは  オープンソースのUI自動テストツール  ブラウザテストツール「Selenium」と同じAPI体系  iOS & Android  Web & ハイブリッド & ネイティブ  Java, Ruby, C#, JavaScript, Python, etc
  6. 6. ストリーミングとは  iOS Simulatorの画面をリアルタイムで別の場所に表 示 転送
  7. 7. Appiumの iOS画面ストリーミング機能  テスト実行中に9100ポートにブラウザでつなぐと、ス トリーミング配信が始まる  mjpegServerPort Capabilityで、ポートは変更可能  Androidでも可能(ポートは違うけど)  実機でも可能  使い所  リモートマシンのテストの状態をリアルタイムで確認
  8. 8. デモ  Appium/WebDriverAgentの#105 Pull Request  mykola作のデモビデオ
  9. 9. 仕組み  AppiumのXCUITestDriverの仕組み WebDriverAgent HTTP Appium XCUITestDriver
  10. 10. ①WebDriverAgent内で 画面の画像を取得  appium/WebDriverAgentのFBMjpegServer.m  XCTest (Xcodeのテストフレームワーク)のPrivateな メソッドを呼び出している模様
  11. 11. ②画像をHTTPで mjpegServerPortに直接送信  appium/WebDriverAgentのFBMjpegServer.m  Headerにmultipart/x-mixed-replaceを指定  1つのHTTPコネクションで画像などを延々送信続 けられる (Motion JPEG over HTTP)
  12. 12. ③ブラウザ側  Chromeだと、multipart/x-mixed-replaceの画像を勝 手にいい感じに表示してくれる。  Desktop Safariは無理でした。。
  13. 13. ④ちなみに: 動画をファイルに保存する場合  appium/appium-xcuitest-driverのrecordscreen.js  ffmpeg(色々な動画処理ができるライブラリ)を使って、 JPEGストーリムを動画ファイル(.mp4ファイル)に変 換
  14. 14. 他の実装方法はないの? – その1  Video要素 + WebRTCで動画として転送するように しては?  エンコーディング処理の負荷が重い/遅いのでは ないか? (試してないけど)
  15. 15. 他の実装方法はないの? – その2  ios-minicap (OpenSTFの画面ストリーミングライブ ラリ)を使ってはどうか?  実機にしか対応していない..
  16. 16. 他の実装方法はないの? – その3  最近のXcodeにある、ビデオストリーミングの機 能を使った方が簡単では?  SimctlのrecordVideoコマンドで、保存先を標準出力 にできる。  --type引数で、h264/mp4/fmp4を指定できる xcrun simctl io booted recordVideo -
  17. 17. 他の実装方法はないの? – その3  --type=mp4 or fmp4の場合  全然リアルタイムに出力されない  --type=h264の場合  たまにリアルタイムに出力されない → 今日手元でもう1回 やったらできるようになっていた!  H264へのエンコーディングとmJPEGへの再変換が負荷と 遅延を発生させる気も
  18. 18. Magic Podクラウドシミュレータの 画像配信はさらに大変  インターネット越しに画像配信をしたい  コネクション繋ぎっぱなしはサーバ負荷が高い  ユーザーの画面操作に反応して画像を変更しない といけない  一方向配信より低遅延を目指す必要がある  Appiumセッションが無い時も動画配信をしたい  Driverのinit前、quit後
  19. 19. Magic Podクラウド端末機能  magic-pod.com  無料で触れるので、遊んでみてください!

×