やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Android Test Casual Talks #1で「Androidで使えるモックフレームワーク」をLTしてきました #androidtest

Androidのテスト系イベントAndroid Test Casual Talks #1に行ってきました。 Androidのテスト関係ネタはだいたい出尽くした感を持っていたのですが、Espressoやテストケース自動生成など目新しい話、また楽天さんの導入事例の話など、興味深いお話を聞けました。

また、自分でも下記のLTをしてきました。

Androidで使えるモックフレームワーク

スライドに貼ってあるテストコードはgistに上げてあります*1

https://gist.github.com/nowsprinting/7940486

テスト対象(プロダクトコード)は@ITさんの記事「Android Mockを利用してHTTP通信をテストするには」で書いたものです。下記リポジトリにあります。

https://atec.googlecode.com/svn/atmarkit/usemock/trunk/UseMockExample

EasyMockとMockitoの導入方法とサンプルについては別エントリでまとめています

そして(オチにも使いましたが)Mockitoについてはこの書籍に約12ページにわたって書いてありますので、より詳しくはぜひこちらをお読みください。

Androidアプリテスト技法

Androidアプリテスト技法

他の方のLTについてのメモ

@psideさん「テスト配信プラットフォームを使おう」

UATやベータテストに利用できる配信サービスの話。TestFlightDeployGateのほか、A/Bテストに特化しているというVesselの紹介。

こうして並べてみると、クローズドなUATと、広く多数ユーザで行なうベータテストで向き不向きがありそうです。私は(iOSの流れで)TestFlightを使っているのですが、Vesselは一度試してみたいです。

@dageziさん「テストフレームワークを色々触ってみた」

エンド・ツー・エンドの(UIの操作を伴なう)テストフレームワークの紹介。Robotium推しなのは元をたどればQues#3での質疑応答&懇親会で私がおすすめしたというブーメラン案件でした。

Hiroyuki Itoさん『「最強」のチームを「造る」技術基盤 ディレクターズ・カット』

楽天さんでの自動テスト導入事例。興味深かったのは、

  • まず(自分のPCで)CI環境を構築してビルドと配信を自動化、デイリーにデモできるようにしてからテストの自動化も進めていった
  • ユニットテストRobolectricMockitoでTDDで進めることで開発速度向上
  • エンド・ツー・エンドのテストはCalabash-Androidで、featureを仕様として残す
    • featureファイルは日本語でも書けるけど、楽天さんは公用語が英語なので英語で書いている
    • featureファイルを成果物として残すのは、開発者のモチベーション向上にも寄与する
  • でもExcelのテスト仕様書は必要。Excelしか読んでくれない人もいるため、Excelのテスト仕様書は必要(大事なことなので二回言いました)
  • 自動化は目的ではなく手段。目的は、Be Happy

また途中に出たATDDについては、先日のシステムテスト自動化カンファレンス2013での@ kyon_mmさんのプレゼン資料「ATDD実践入門」に歴史・経緯を含めまとまっているので興味を持たれた方は読むといいと思います。

@geotanaさん「Androidアプリの自動テストケース作成へのチャレンジ」

Android GUITARなど、テストケース自動生成、自動実行についてのお話。紹介されていたのはユニットテストではなく*2、UI操作の範囲で自動生成するというもの。

まだ色々試されている段階ということで、今後が(続報が)楽しみです。また@bols_blueさんも食いついていたので、年が明けたら私も追いかけてみようと思いました。

@sumio_tymさん「uiautomatorを使うときの一工夫」

uiautomatorで日本語入力を伴うテストを行なうためのTipsと、専用のIMEuiautomator-unicode-input-helper)を作ったよ、というお話。

"Select All"のローカライズの部分については、uiautomatorはdescription属性指定で動作できるはずなので、Android側のEditText側にdescription属性を入れてもらう方向が健全なのかなと思いましたがどうなんでしょう。@sumio_tymさんとその辺お話すればよかった。 【12/14追記】@sumio_tymさんからコメントいただきました。description属性もローカライズ対象ということなので、簡単には行かなそうですね。

@ngsw_taroさん「Espressoに関して」

Googleさんの、恐らく次世代のエンド・ツー・エンドテストフレームワークになるであろうEspressoの紹介。まだソースを読めちゃう程度の規模とのことで、スクリーンショット撮影もできないけど今後に期待とのこと。

これが上手く進めば、結合レベルはRobotiumからEspressoに置き換わり、システムテストはuiautomatorみたいになっていくのでしょうか。

感想など

テストを普通に書いている方、これから書きたい方、またエンプラ等では書いてきたけどAndroidで使えるフレームワークの情報が欲しいという方、色々いるようなのでこの手のイベントは継続できたらいいですね。

主催の@hotchemiさん、会場提供してくださったリクルートメディアテクノロジーラボさん、ありがとうございました。

*1:EasyMockの導入方法についてはこのあとエントリ書きます

*2:こちらはAndroid特化のソリューションである必要はないので、無いのでしょう