Google+モバイルアプリ開発チームのテスト戦略

How the Google+ Team Tests Mobile Apps*1 を3行でまとめるブログ。

ユニットテスト

次のSDKからSenTestingKitは外れるらしいんだけど代替のアップル製のテストフレームワークはSenTestingKitのAPIと互換性がある代替APIがあるというので使い方の意識する必要はなさそう。OCUnitはもともと個人開発者が公開してた昔からある秘伝のソースだからたぶん中身をモダーンに書き直したんじゃないかなーと勝手に予想してる。

GTMは正直iOS開発じゃもうそんなに使わんだろと言っていたけど結構メンテされてるし今度見てみます。

https://code.google.com/p/google-toolbox-for-mac/source/list

UIテスト

  • KIF 使ってる
  • アプリと同じObjective-Cで書ける
  • テスト時にだけ通信先をモックサーバーにしてテスト用のレスポンスを返したり

自由なソフトウェアの中ではKIFがよいよね。近々2系になるらしい

次世代のKIF(2.0.0)が良さそう

テストコードからプロダクトコードのクラス呼び出したりテスト用のバックドア仕込みたい場合なんかはAPPバンドルの外からしかテスト実行できない他のツールはツラいと思う。

モンキーテスト

  • 独自フレームワーク作ってる
  • 最新版アプリに16種類のクラッシュパターン見つけた

どういうツールなのか気になる。

サードパーティツールとしてはUI Automationを使ったUI AutoMonkeyなどがある。

バックエンドテスト

  • クライアントとバックエンドサーバーの統合の為のテスト
  • アプリから発行されるリクエストを再現しバックエンドサーバーが適切なレスポンスを返すかを検証する
  • Google+ のバックエンドはGuiceを使ってテストをやりやすくしてる

以下バックエンドテストについてリプレイテストの概要をあらした図の引用。ゴールデンリクエストみたいな用語はニュアンスはわかるがことばの意味は知らない。


まとめ

  • ユニットテストが最優先。はやい、うまい、やすい
  • UIテストはコストが高いけど有益
  • モンキーテストはテスト自働化戦略の最終段階でよい

Androidアプリテスト技法 や 入門Androidアプリケーションテスト をチラっと読んだけどAndroid開発環境のがアクセスできる範囲が広いのか、Javaコミュニティのテスト文化からなのかテスト環境が充実している。

Androidアプリテスト技法

Androidアプリテスト技法

入門 Androidアプリケーションテスト

入門 Androidアプリケーションテスト

が、iOSアプリ開発もだんだん人口が増えてきてテスト環境整備されてきたのでよかった(日記)。

iOSアプリテストについての書籍は洋書なんだけど"Test-Driven iOS Development" と "Test iOS Apps With Ui Automation"が内容充実してて買って損はなかった。翻訳されて広まって欲しい。

Test-Driven iOS Development (Developer's Library)

Test-Driven iOS Development (Developer's Library)

Test iOS Apps with UI Automation: Bug Hunting Made Easy

Test iOS Apps with UI Automation: Bug Hunting Made Easy

*1:Android版も含む