[iOSDC Japan 2019 リポート]「実機の管理とおさらば!AWS Device FarmでiOSのテストをしよう!」を聞いてきた

こんにちは。きんくまです。iOSDC Japan 2019に参加しています。

セッション「実機の管理とおさらば!AWS Device FarmでiOSのテストをしよう!」を聞いてきました。

発表:アマゾン ウェブ サービス ジャパン株式会社 白山 文彦さん(@fushiroyama

AWS Device Farmを使うと、自分たちが持っていないバージョンのiOSデバイスでバグが報告された場合もリモートアクセス機能を使ってすぐに動作確認をすることができます。また、CI/CDパイプラインに組み込んで自動テストを実行することも簡単に行なえます。

このセッションではまずDevice Farmを利用するためのステップをひとつずつ分かりやすく紹介します。そして次に、iOSにおける自動テストやUIテストについて説明し、XCTestやXCUITestを実際に実行してテストのイテレーションを回す実例を解説します。

スライド

iOSの自動テストを速習する

テストの基礎

テストの種類

  • Unit Test
  • Integration Teest
  • UI Test

XCTestでのコードやXcodeでのテストの実行方法について

サンプルアプリでは、テストコードが書きにくいため、DIを使って決まった手を出すモックを使う方法を紹介

UIテストについて

AWS Device Farmで自動テスト実行とリモートアクセス

バグの報告があったが、端末が古いため手元にない!
-> AWS Device Farm

  • 自動テスト
    自動テストを好きな時に好きな数だけクラウド上にで並列実行

  • リモートアクセス
    クラウド上の好きな端末の任意のバージョンですぐにリモートで動作確認

  • リモートデバッグ
    クラウド上のiOS端末やAndroid端末をローカルのIDEから接続してデバッグ

様々なテストパターンに対応

デバイスタイプ

  • パブリックデバイス
    • 端末はテスト毎にデータ消去して再起動)
  • プライベートデバイス
    • 専有デバイス
    • デバイスは専有で決して他者と共有されず、契約終了後に破棄
    • リモートデバッグ機能が利用可能

早速使ってみよう

  1. ipaをビルド
  2. AWSコンソールからipaのアップロード
  3. Automated Tests
  4. テスト結果
  • テスト時の動画
  • Screenshots
  • Log

を後から確認することができる

AWS Device FarmとCI/CDツールとの統合

CI/CDツールと連携することで日々のテストを自動化できる

  • CircleCIの設定
  • AWS Device Farmと連携するfastlaneプラグインが提供されている
  • Circle CIに組み込んでAWS Device Farmと連携することができる
  • Circle CIコンソール / AWS Device Farmコンソールでテスト結果を確認

感想

前半はテストについてのおさらいだったのですが、大変わかりやすかったです!

後半はAWS上でデバイステストができるAWS Device Farmの紹介でした。

運用・保守をしているときに、古い端末での不具合報告が来ることはあります。そのときに、クラウド上でテストができるのは非常に便利だと思いました。

また、プライベートデバイスではクラウド上の端末に対してリモートデバッグを実行できるというのは驚きました。すごいですね。