DeNA Testing Blog

Make Testing Fun, Smart, and Delighting End-Users

DroidKaigi 2019にSWETから3名が登壇してきました

こんにちは。SWETチームです。
2/7(木)、2/8(金)に開催されたDroidKaigi 2019にSWETからは3名が登壇しました。
昨年よりもさらに盛り上がりを見せていて、どのセッションもどのブース展示も非常に有意義で面白かったですよね!

今回は、

  • 登壇者より自身のセッションについて一言
  • 参加メンバーが特に印象に残ったセッション

をご紹介していきたいと思います!

f:id:swet-blog:20190215164001j:plain

登壇者より自身のセッションについて一言

マルチモジュールなプロジェクトでテストはどう変わる?

登壇者の田熊(@fgfgtkm)です。

このセッションでは私がマルチモジュールなプロジェクトでのテストを考えたときに、変えていく必要があると思った3点を紹介させていただきました。

  • DI
  • テスト方針
  • メトリクスの収集

DIのセクションでは、循環参照の問題や依存解決の定義をモジュール内に閉じ込めるため、これまでのやり方を変更しなければいけない可能性があることを話しました。 話しきれなかった部分についての詳細は『マルチモジュールプロジェクトでのDagger2を用いたDependency Injection』のセッションを紹介させていただきました。私も拝見させていただき、とてもわかりやすく勉強になりました。

テスト方針のセクションでは、モジュール単位で動作確認ができるようにテスト方針を考える、という話をしました。 ここではProject Nitrogenについて触れ、自動テストでカバーする領域を増やしていける環境が整いつつあることもご紹介させていただきました。

最後にメトリクス収集について、複数のモジュールのレポートをまとめて見たい場合マージが必要になることと、PITというツールを例にどのようにレポートをマージするかについて話しました。

想定していたよりも大きな部屋で多くの開発者に話をさせていただけることになったので、マルチモジュールというトレンドを取り入れつつも、これからテストにもっと力を入れていきたいと思っている方に下記のことを伝えられたらいいなと思いながら構成を考えました。

  • 自分のプロジェクトにどんなテストが必要かを考える
  • テストの環境や技術は日々進化している

テストに対する考えや知識をアップデートするきっかけになればとても幸いです。

EspressoのテストをAndroidの最新トレンドに対応させよう

登壇者の外山(@sumio_tym)です。

※動画はこちら

AndroidのUIテストツールEspressoで書かれたテストコードを「最新トレンドに対応させる」と銘打って、 次のようなトピックを解説しました。

もちろん、テストコードのメンテナンス性を維持できるように、Page Objectsデザインパターンを適用する前提で解説しています。 特に、Espresso Test Recorderで生成したKotlinのコードをPage Objectsに書き換える様子をライブコーディングしている点が見どころです。 気になる方は是非動画もチェックしてみてください。

UIテスト(Espresso)の高速化をさらにすすめる

登壇者の平田(@tarappo)です。

DroidKaigi 2018の続編という形で「UIテストの高速化をさらにすすめる」というタイトルで登壇しました。

UIテストの課題になりやすいものの1つに実行時間の増加があります。 このUIテストの実行時間をどのように短くするかという話をしました。

前回話した内容は実際に試してみるのがやや大変だったかと思いますが、今年の登壇内容は誰もがすぐに試せるようになっています。 この登壇資料や動画を見て、実際にFirebase Test LabやFlankを試してみてもらえるとうれしいです。

※動画はこちら

登壇の際に、その先にある課題として自動テストがあることにより得られるred/green以外の情報などについても話しました。 その課題については、どこかの機会で話せると嬉しいなと思っています。

参加メンバーが特に印象に残ったセッション

Spek2+MockK+JaCoCoでイケてるUnit Test環境を手に入れろ!

改めまして田熊(@fgfgtkm)です。

今回はSpek関連のセッションが2つありましたので、それぞれご紹介させていただきます。

1つめは、Subroh Nishikoriさんのセッションです。

こちらのセッションでは、SpekだけでなくKotlin製モックライブラリのMockKやコードカバレッジライブラリのJacocoなどトータルのユニットテスト環境について紹介されていました。

※動画はこちら

Spek2とMockKはどちらもKotlinフレンドリーな記述が可能で、Kotlinに慣れ親しんだ開発者がユニットテストを書き始めるときにとても導入しやすいと思っています。

また、私のセッションでマルチモジュールなプロジェクトの場合レポートのマージが必要なことに触れましたが、こちらのセッションではJacocoでの具体的なマージ方法を紹介していました。

それぞれの導入手順や使い方について丁寧に説明しているため、これからテスト環境を構築していく際の参考にすると良いと思いました。

SpekでUnitTestを書こう

2つめはAyako Morimotoさんのセッションです。

こちらのセッションではSpekの紹介と、Spekで書くのが難しいAndroid Architecture Componentsを使用したクラスのテストをどのようにSpekで書くかを紹介していました。

※動画はこちら

Spekはテストコードの読みやすさから人気が高まっていると感じていますが、Androidが絡むとJUnitに比べて書き方のナレッジやサンプルが少ない印象です。

セッションの中ではAndroid開発の中で採用されることが多いLiveDataとRoomのテストをSpekで書くための工夫が紹介されており、Spekで書けるテストの範囲を増やしていく際に役立つ知見の詰まったセッションだと思いました。

build.gradle.ktsに移行しよう

改めまして外山(@sumio_tym)です。

こちらはtnjさんによる発表です。

※動画はこちら

GradleのビルドスクリプトをKotlin DSLへ移行する方法についての発表でした。 静的型付き言語であるKotlin DSLへ移行することで、IDEによるコード補完が効きやすくなるというメリットがあります。

Gradleのビルドスクリプトでは、GroovyとKotlinを共存させることができます。 その特徴を最大限利用して、徐々にGroovyからKotlinへ置き換えていくテクニックを分かりやすく解説していました。

実は、外山自身も以前にKotlin DSL化しようとして挫折した苦い経験があります。 その当時を思い返してみると、着手する場所が悪かったがために、芋蔓式に全部Kotlin化せざるを得なくなったのが敗因でした。

この発表で解説されている順番にしたがえば徐々に書き換えられるので、挫折せずにKotlin化を完遂できそうです。 Kotlin DSLへの移行を検討されている方は、是非参考にしてみてください。

Google Play Consoleのリリーストラックを有効活用してリリースフローの最適化を行った話

SWET CI/CDチームの加瀬(@Kesin11)です。

こちらのlitmonさんのセッションは、CIサービスやデプロイの自動化などに興味があるCI/CDチームとして、参加前から注目していました。

※動画はこちら

発表内容のメインは、それなりの人数で開発されているであろうアプリのリリース作業について人間が調整するのにコストが高くなりすぎたので、自動的に毎週リリースされるフローを構築したというものでした。
その中でも個人的に最も興味を持ったのはGoogle Play Consoleのリリース前レポートでした。

発表では、このリリース前レポートを単純なクラッシュ検知として使うことは残念ながら諦めたという話でしたが、発表後に直接お話を伺ったところFirebase Test LabのRoboテストを直接利用することで同等のクラッシュ検知と通知は実現しているとのことでした。ドキュメントによるとPlay Consoleで使用されているのはこのRoboテストのようです。

個人的な感想ですが、リリース作業を自動化するというフローはそもそもプロダクト全体の品質がかなり高い状態でないと、逆に検証不足でバグが頻出してしまうことも起こり得るのではないかなと思います。
クックパッドでは以前から大規模にUIテストを含めた自動テストが行われているということをブログなどで拝見していたので、そのような積み重ねがあってこそ達成できるリリースフローなのかもしれません。この発表ではテストについての話はありませんでしたが、テストの必要性をより意識した発表でした。

ああ、素晴らしきTDD ~ アプリとエンジニアの心に安寧を ~

SWET AutomationTestチームの鈴木です。
私の方からは、Saiki Iijimaさんの発表をご紹介いたします。

※動画はこちら

本セッションでは、登壇者自身の実際の開発経験を踏まえながら、TDDによって得られるメリットについて解説されていました。
ライブコーディングでTDDを実演しながら説明されていたので、初心者の方でも大きな抵抗なく読み進めることができると思います。
内容はもちろん、説明の仕方もわかりやすく大変参考になりました。

おわりに

DroidKaigi 2019のセッションのうち、登壇者のセッションと各メンバーがそれぞれ印象に残ったセッションをご紹介しました。

SWETグループでは、DroidKaigiでの登壇に限らず、積極的に対外的なアウトプットを行っています。
加えて、SWETグループ主催の勉強会である、Test Night(テストについて語り合う勉強会)も定期的に開催しております。
直近では、CI/CD Test NightAndroid Test NightやiOS Test Night(4月開催予定)の開催を予定しております。
ご興味のある方は是非ご参加ください。

また、SWETグループではAndroidに限らずテストの自動化やCI/CDに興味があり、私達と一緒に働いてくれる仲間を募集しています。

ご応募お待ちしています!