悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

【iOS/Android】最新事例から学ぶ!モバイル向けテスト手法勉強会に行ってきた

【iOS/Android】最新事例から学ぶ!モバイル向けテスト手法勉強会 - connpass

会場は名刺共有サービスで有名なSansan株式会社さんでした。 とってもおされ。

f:id:y_koh:20150301015652p:plain

いつもは資料のまとめとか他力本願なのですが、自分でもひと通り観直したかったのでまとめてみました。

今回の勉強会はiOSAndroidの両方を対象としたモバイル向けの内容となっています。ただ、僕はAndroidには明るくないのでコメントはiOS寄りになります。

資料がないものは公開され次第追加します。

「テストの種類とBDD」『iOSアプリ テスト自動化入門』著者 長谷川氏

iOS自動化入門の著者さんです。僕も買いました。

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

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

細かい部分よりもテストの目的とは?自動化に向くテストとは?など、テストに対する姿勢について語られてた印象です。 UIテストでスクリーンショットを撮ることがあると思いますが、アニメGIFにするとわかりやすいんじゃないか?というアイディアは面白かったです。

「CircleCIを利用したAndroidアプリ開発の効率化」株式会社VASILY 堀江氏

VASILYさんもオフィスがおされ(スライド2ページ目です) ブランチへのプルリクをフックしてDeployGateと検証端末にAPK更新を通知するというものでした。 要するに開発が完了したらそれがマージされたアプリが確認すべきメンバーの手元に届くということですね。

CircleCIを採用したのは既にサーバ側で使用していたからとのことです。

弊社トレタでも同様の仕組みを構築しています。この仕組は自社サービスの様な息の長いアプリ開発では必須だと思います。もちろん、そうでなくても用意したほうが良いです。実際にこの後色んな会社さんから同様の仕組みを構築した話がたくさんでてきました。

みなさんそれぞれ悩んで同じ様な仕組を構築しているみたいです。それらを共有できただけでも今回の勉強会はとても意義あるものだったと思います。

「テストからβ配信までの自動化」株式会社VASILY 荒井氏

荒井さん 次もVASILYさんですが、こちらはiOSの方です。iOSは下記構成とのことです。 github + Travis CI + beta

betaというのを初めて聞いたのですが、Fabricが提供するテストアプリ配布サービスのようです。FabricはTwitterが提供するフレームワークでクラッシュレポート収集サービスのCrashlyticsも含んでいます。

Fabric - Twitter's Mobile Development Platform

ちなみにVASILYさんでは既にCircle CI使ってるはずなのにTravis CIなんだろう?と思ったのですが、Circle CIではiOSはまだベータバージョンなので避けたとのことでした。

ちなみにトレタで使ってるHockeyAppはスライドにも出てこなかったのですが(涙)、もちろん検討していたそうです。HockeyAppはMicrosoftに買収されたのですが、Microsoftが自分たちのフレームワークに組み込んでいくよ、という声明があったので様子見のため避けたとのことです。

「効率的に品質をあげるための開発フロー」株式会社Fablic 坂田氏

Travis CIはテストに時間がかかるのでCircleCIに乗り換えたそうです。

あと、最後に大事なことを言ってました。

実際はFablic社内でもtypoしてたりするらしいですw

株式会社ユビレジ 岸川氏

今はユビレジにいるのですが、なんとモバイルDBのRealmにジョインするそうです。

ビルドと配布を自動化するに至ったの話。 1人のときは手作業でしていたけれど、3人に増えた時に配布作業をどうしようという話になった。特定の人に依存するのは良くないので最初持ち回りでやろうという話があったそうですが、あまりにもナンセンスなので自動化を考えたと。

こちらのブログが有名ですよね。

Travis CIでiOSアプリのリリース作業を自動化する - 24/7 twenty-four seven

最初はRakeファイルで管理していたけれど、巨大になってきたのでgemを作ったそうです。

その他便利ツールなどの紹介

「テストがあればなんとかなる〜効率化までの道程〜」株式会社Wantedly 住友氏

参画時、あるのはコードのみ、テストコードは存在せず、というあるあるな状態。何が正しいのかもわからなかったので、ひたすらテストを書いたという話です。

「Robotium を使った UI テストとレイアウト確認の効率化」Sansan株式会社 辰濱氏

Sansanの徳島サテライトからの発表でした。 Sansanさんでは、徳島の神山というところにサテライトオフィスがあるそうです。知らなかった。 神山からこんにちは | Sansan株式会社

UIテストの自動化の話です。スクリーンショット収集は自動化テスト入門として最適のようです。27ページにある、スクリーンショット一覧のhtmlを生成するのがとても便利そうでした。複数の端末で取得したスクリーンショットとデザイン指示書を横並びで比較できるのはいいですね。

SwiftでHTTP通信のスタブ化」しまじろう

SwiftではMoyaというライブラリがあるそうです。

「Slackで社内テスト効率化」こにふぁーさん

テストコード書いて自動テストもいいけど、手で確認した方が早いこともあるよね。そのための社内テストを効率化する話。

dsgarageさん

Unityでのテストの話でした。

「ユーザーフローに特化したUIテスト」kitasukeさん

KIFを使ってUIテストをしている話でした。KIFを使うにはAccessibilityLevelというものを設定する必要があるのですが、基本的にコードでは書かず、Storyboard上で指定しているとのことでした。

AccessibilityLevelはアプリロジックには関わらない部分なので、Storyboardに寄せるのは正しいと思います。もちろん、Storyboardベースで作られていることが前提ですが、、

「Robolectricのハマリポイント」hosokawaさん

Robolectricのハマりポイント

RobolectricというAndroidテストツールの話でした。

Xcode Coverage」kaneshinさん

XcodeCoverageの紹介です。 僕はまだカバレッジ算出したこと無いです。。

ユーザビリティテストとしての動画の活用」jollyjoesterさん

Reproという、ユーザーの操作を後から動画で見れるサービスの紹介でした。

一度試してみたことあるのですが、ユーザー操作を動画で見れるのはかなり強力です。betaは無料で試せるそうですのでまだの方は是非試してみると良いと思います。

「Fastlane, Continuous Deployment to iOS」susieyyさん

Fastlaneというアプリのビルド、配布するためのライブラリを使ってみた話。Fastlaneは岸川さんのxcjobs的なものです。

有名どころでNOMADのMatttが作ってるshenzhenがあるのですが、Fastlineのコードを見ると、内部でshenzhen使ってるところがありました。 Fastlineの方が全部入りなイメージです。

まとめ

みなさん、本当に色々と工夫されていてとても勉強になりました。トレタではロジックは基本的にサーバ側にあり、UI重視というところで、自動テストはあまりできていません。その分社内テストを厚くして品質を担保しています。

配布の仕組みはあるのですが、最後のリリース時のところが自動化しきれていないところがあるのでそこを綺麗にしたいなと思っているところです。ツールとしては岸川さんのRakefileを参考にさせてもらっていたのですが、最近xcjobsというgemを知ったのでそちらに移行しようとしています。

今回の勉強会は4時間超えという長丁場で、発表の数がかなり多かったのでちょっと混乱しています。もし間違ってるところなどあったら指摘して頂けると幸いです。

反省点として、この勉強会に参加するって話を弊社CTOに話した時にじゃあLTで!と言われたのですが、基本的に自動テストの話だけだと思ってたので今話せること無いなぁと思ってました。

ただ自動テストにかぎらずアプリの品質担保や、社内テスト、配布の方法であれば話せることはあったなと。次がんばります。