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の導入方法とサンプルについては別エントリでまとめています
- EasyMockをAndroidテストプロジェクトで使用する #android_tec - やらなイカ?
- MockitoをAndroidテストプロジェクトで使用する #android_tec - やらなイカ?
そして(オチにも使いましたが)Mockitoについてはこの書籍に約12ページにわたって書いてありますので、より詳しくはぜひこちらをお読みください。
- 作者: 生路茂太,井芹洋輝,神原健一,長谷川孝二,松木晋祐,宮田友美,吉澤毅
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02
- メディア: 単行本
- この商品を含むブログ (6件) を見る
他の方のLTについてのメモ
@psideさん「テスト配信プラットフォームを使おう」
UATやベータテストに利用できる配信サービスの話。TestFlight、DeployGateのほか、A/Bテストに特化しているというVesselの紹介。
こうして並べてみると、クローズドなUATと、広く多数ユーザで行なうベータテストで向き不向きがありそうです。私は(iOSの流れで)TestFlightを使っているのですが、Vesselは一度試してみたいです。
@dageziさん「テストフレームワークを色々触ってみた」
エンド・ツー・エンドの(UIの操作を伴なう)テストフレームワークの紹介。Robotium推しなのは元をたどればQues#3での質疑応答&懇親会で私がおすすめしたというブーメラン案件でした。
Hiroyuki Itoさん『「最強」のチームを「造る」技術基盤 ディレクターズ・カット』
楽天さんでの自動テスト導入事例。興味深かったのは、
- まず(自分のPCで)CI環境を構築してビルドと配信を自動化、デイリーにデモできるようにしてからテストの自動化も進めていった
- ユニットテストはRobolectricとMockitoで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と、専用のIME(uiautomator-unicode-input-helper)を作ったよ、というお話。
"Select All"のローカライズの部分については、uiautomatorは
【12/14追記】@sumio_tymさんからコメントいただきました。description
属性指定で動作できるはずなので、Android側のEditText
側にdescription
属性を入れてもらう方向が健全なのかなと思いましたがどうなんでしょう。@sumio_tymさんとその辺お話すればよかった。description
属性もローカライズ対象ということなので、簡単には行かなそうですね。
@ngsw_taroさん「Espressoに関して」
Googleさんの、恐らく次世代のエンド・ツー・エンドテストフレームワークになるであろうEspressoの紹介。まだソースを読めちゃう程度の規模とのことで、スクリーンショット撮影もできないけど今後に期待とのこと。
これが上手く進めば、結合レベルはRobotiumからEspressoに置き換わり、システムテストはuiautomatorみたいになっていくのでしょうか。
感想など
テストを普通に書いている方、これから書きたい方、またエンプラ等では書いてきたけどAndroidで使えるフレームワークの情報が欲しいという方、色々いるようなのでこの手のイベントは継続できたらいいですね。
主催の@hotchemiさん、会場提供してくださったリクルートメディアテクノロジーラボさん、ありがとうございました。