読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWS Device Farmでモバイルアプリのテスト

 すいません。すっかり遅くなりましたが、iOS Second Stage Advent Calendar 2015です。アプリ開発でやっぱり重要なのが、テストです。モバイルアプリの場合は、実機での確認も必要で機種も多いので特に大変です。そういった所で最近注目を集めているのが、インターネット経由で実機を操作するクラウドサービスです。

モバイルアプリ検証のクラウド型プラットフォーム



 スマホアプリのテスト・プラットフォームの話をすると、シミュレータの話と思う人が結構います。シミュレータは、画面サイズのみ再現するのみで内部の動作のテストは出来ません。クラウド型のテスト・プラットフォームは、インターネットの先に実機がつながっているのがポイントです。AWSもAWS Device Farmという同様のサービスを出しています。イメージ的には、下記のような図です。※あくまで想像図です。

f:id:dkfj:20151222115016p:plain

 たぶん物理筐体から、何十、何百というデバイスをニョキニョキと繋いでいるのだと思います。そのケーブルはiPhoneであるならば、きっとAmazonベーシック ハイクオリティーライトニングUSB充電ケーブルでしょう。ちなみにクラウドサービスで、物理筐体&デバイスが出てきて違和感あるかもしれません。クラウド事業者にとって、クラウドは仮想化の話ではなく、物理の問題なんです。きっと

AWS Device Farmの凄いところ



 AWS Device FarmはAndroidを中心に100以上の端末・OSの組み合わせを揃えています。モバイルアプリを運用する所で難しい点は、特定の端末・OSのみ発生するケースがどうしても出る点です。主要な機種は揃えるものの、複数のOSを揃えるのは現実問題厳しいです。そういった時に、スマホのテスト専門会社に依頼するというのも1つの手段ですが、コスト的に難しい場合も多々あります。そういった時に、AWS Device Farmを始めとするクラウド型のテストプラットフォームの活用を検討してみましょう。
 またAWS Device Farmの凄い所としては、iOSのテストが出来るところです。この手のサービスの性格上、実機を直接操作する必要があります。Androidはそういった仕組みが整っているのですが、iOSについてはデバイスをリモートで操作する仕組みは余りありません。無理やり実現しようとすると、JailBreakの必要性もあるかもしれません。それにも関わらずAWSは実現しています。Appleと交渉したのか、その他の方法で実現したのか解りませんが、とにかく正式なサービスとして提供できてるAmazonは凄いです。

AWS Device Farmを試してみる



 AWS Device Farmは製品版となるipaをアップロードしてテストします。ということで手軽に試すには、iTunesストアから落としたアプリをアップロードしてテストしてみましょう。Macだとホーム->ミュージック->iTunes->iTunes Media->Mobile Applicationsにあります。

プロジェクトの作成

 Device Farmは現在、米国西部Oregonリージョンのみ利用できます。ハッキリ言って場所は全然関係ないので、気にせず使いましょう。サービスを選んだらプロジェクトを作成します。
f:id:dkfj:20151222120556p:plain

アプリケーションのアップロード

 次にアプリケーションをアップロードします。iOSの場合はipaで、Androidの場合はapkです。拡張子から勝手に判断してくれるので、特に気にする必要はありません。
f:id:dkfj:20151222120806p:plain 

テストの種類の選択

 次にテストの種類を選択します。AppiumによるJUnit/TestNGのテストやCalabash,UI Automation,XCTestなど自作のテストコードをアップロードするものと、Fuzzテストという起動・実行のテストがあります。ここでは、Fuzzテストを選びます。
f:id:dkfj:20151222121415p:plain

テスト対象のデバイスの選択

 テスト対象のデバイス・OSの組み合わせを選択します。iOSの場合は端末バリエーションというより、OSのバリエーションという側面が強いでしょうね。デフォルトのままでも問題ないと思います。
f:id:dkfj:20151222120932p:plain

デバイス設定

 デバイスを選んだら、次は設定(Config)を行います。ここで他のアプリをアップロードすることにより連係のテストも出来る(はず)です。また、位置情報や言語設定もできます。
f:id:dkfj:20151222121103p:plain
f:id:dkfj:20151222121235p:plain

実行&レポート

 設定終わって実行すると、バックエンドで自動的にテストが始まります。その後に、レポートも自動生成されます。下記の例だと、エラーが発生しています。クリックしていくと、どこでエラーが出たのかも表示されます。
f:id:dkfj:20151222122312p:plain

感想



 まだ動かしてみたというレベルですが、可能性を感じます。Androidに較べてiOSはまだまだこれからという部分もあると思いますが、今後はCI等と組み合わせてテストの自動化につなげていきたいと思います。特にSwift化で、クラウド上のサーバサイドのビルドも容易になるはずなので、来年辺りノウハウが一気に広がるかもしれませんね。

プログラマになりたい Advent Calendar 2015 - Qiita
プログラマになりたい Advent Calendar 2015 - Adventar
http://qiita.com/advent-calendar/2015/ios-2