iOS関連の勉強会に行ってきた
iOS開発1ヶ月ぐらいやったらいろいろと、疑問に思ったことがあったりしたので社外のエンジニアからいろいろ話し聞いてみたいと思い、定時後にふらっと行ってみた。
http://eventdots.jp/event/47442
会そのものは、うちではこんな環境でアプリ作ってますよ〜とかテストis便利とかグロースハックとかそんなことを発表されていた。印象としては思ってたよりもみんな人手によるテストを重視していて、今日の発表で自動テストの話をしてたのは id:cockscomb だけだった気がする。
アプリ開発のテストが個人的にもすごい関心事となっている。RubyやPerlに慣れたサーバーサイドのエンジニア的にはテスト書きながらコード書くのが当たり前になっていて、Objective-Cでいくら静的片付けっぽい型宣言をしているからと言っても、四六時中シミュレーター立ち上げてはブレークポイント打ってデバッグして動くようにしていくみたいな世界観ばかりでは、何となく心もとなさがある。
懇親会でさらに、何人かにテストどうしているか聞いたりしてみたら、やはり人手に頼ってる部分が多いとか、うちでは一切テスト書いてないみたいな話が結構あった。
人間にテストやって貰う場合は、単に身の回りの人というだけでなく、アプリがターゲットとしている層の人達に実際に使ってもらうのが良くて、特に10〜20代女性などをターゲットとしている場合、社内のアルバイトの子達に実際に使ってもらうことで、開発者たちでは思いつかないような使われ方をしてバグとかフィードバックがもらえるとか。
人手でテストする際に、他にもアプリ申請をするためのいろいろ細かいテクニックがあって、開発が完了したらテストをする前に投機的に申請をして、審査中に人間がテストする。テストを効率化するために、APIのエラーなどをUIAlertで表示したりエラーログをクリップボードにコピーして社内チャットなどに共有できるようにしたり、デバッグ用の設定画面から接続先のサーバやチュートリアルの無限実行などができるようになるとか、そういう最適化をしているところもあるらしかった。
自分がここしばらく考えてた非同期API自体テストが難しいとか、ALAssetLibraryがとにかく使いづらいしテスト書きづらいとかそんな話を周りにしてみたけど、みんな万能に解決できる手段は持っておらず、結局結論は出なかった。
以下、今日知って使ってみようと思ったもの。
- 人気Cocoapods検索サイト(Wantedly製) http://cocoapods.wantedly.com/
- 非同期処理のテスト用ヘルパーでTRVSMonitorよりも便利そう https://github.com/tokorom/TKRGuard
- KiwiじゃなくBDD的な記述が出来るかつ非同期APIにも対応したテストフレームワーク https://github.com/specta/specta
- OHHttpstubsとは別アプローチのHTTP通信をmock化するためのライブラリ https://github.com/yaakaito/NLTHTTPStubServer
あと、OHHttpstubsは元々使ってたけど、名前の通り完全にstub用途にしか使ってなくて、OHHttpstubsで受け取ったRequestオブジェクトの中をassertするという発想がなかったので id:cockscomb 氏の話を聞いて目から鱗が落ちた。
追記: 弊社のDeployGateからiOS版SDKがついにリリースされて、ユーザテストする場合には便利になったようです(ステマ)