Android Test Night #1 に参加してきました

こんにちは。9/21にDeNAさんで開催されたAndroid Test Nightに参加してきました。普段はiOSエンジニアですが、iOS Test Nightにここのところ毎回参加していて、Androidのテストの話も聞いてみたくなったのです。あわよくばiOSに何か持って帰りたい…!

…が、遅刻してしまい、最初の平田さんの発表を聞きそびれてしまったので、平田さんの発表はSWETの公式ブログ待ちとなります。

「コードレビューをより良くする Danger x Android」/ とし

ブログ待ってます

「Androidのテストを効率的にするために考えたこと」 / OsakaAtaru

自社のプロジェクトのテストの効率化を測るために、既存のテストコードをすべて削除し、自動テストと人力のテストを併用したというお話です。

すべてを自動化することはできないので、修正が発生しずらい箇所や人力のテストで毎回確認している箇所に絞って自動テストをしましょうというお話でした。

Twitter上では、Robolectricを使ったらいいじゃんという声が上がっていて、みなさんテストには関心が高いのだなぁと思いました。

「Android E2E Testing at Mercari」 / vishaljayn

MercariのSETでは、どんなE2Eテストをやっているかというお話です。

テストスクリプトにはRuby / RSpec、自動化ツールとしては Appium
を使っていました。

トークでは、AppiumのベースとなっているSeleniumから、どのような仕組みになっているかをご説明いただきました。

また、Dockerで実行することによって、デバイスで並列にテストすることが可能で、あるデバイスでテストが失敗しても、他のデバイスで引き続きテストを継続することが可能で、アプリ用と、UITestのためのDocker Image用のCIパイプラインが分けており、いつでもUI Testを実行できる環境を整えているようです。テストでは全部ビデオを撮っていて、失敗したときにすぐに確認することができるようにしており、ぬかりはない、という印象でした。

「AndroidSDK with Docker」 / theoden9014

Android SDKをDockerでビルドしたというお話です。

Android SDKの再配布は禁止なので、パブリックにアップロードはしないほうが良いとのことです。
単体ではMacで動かすよりもDockerで動かすと時間がかかってしまいますが、Device Farmを使うことで並列にテストが実行できます。

「JUnit5とAndroidのテスト」 / kikuchy

JUnit5をなるべくAndroidがらみのテストで使おうという話です。

JUnit5では、パラメタライズドテストをアノテーションをつけるだけで簡単にかけるようになりましたが、まだAndroidのテストで使うことはできません。

Androidのテストで使えるようになった暁にはぜひ導入したいですね!

「Kotlinで書かれたAndroidアプリをBazelでビルドする」 / horie1024

ビールが好きなhorie1024さんの発表です。

BazelはGoogle製のビルドツール

「Android CIをBitriseに移行して開発者・QAが幸せになったこと」 / nemoto_tadashi

mercariのJP版のCI環境をBitriseに移行したというお話です。

手作業によるエンジニアコストやミスを防ぐことを目的に、リリース版のビルド&Play Storeのアップロードを自動化するところから始めてみたようです。

tagをつけたり、Slackでコマンドを叩くだけで、Google Playまでのデプロイまで簡単に行うことができるようになり、ビルドしたときにQAもリリース版をチェックをしやすくなったとのことです。

「Clean Architecture & TDD」 / Fumihiko Shiroyama

Clean Architectureによってテストをしやすくし、TDDを実践しているというお話です。

iOSでもClean Architectureで開発しているので、ユニットテストしやすいのは納得だし、細かなイテレーションでコードの品質を担保できるTDDを実践されているのもすばらしいと思いました。

懇親会

iOS Test Night と同様に、カツサンドとお寿司がでました。

まとめ

AndroidのテストはiOSと比べて整ってて良いですね。