DroidKaigi 2019で登壇する内容について(軽く)事前にお知らせ
2/7(木) - 8(金)に開催されるDroidKaigi 2019の2日目に「UIテスト(Espresso)の高速化をさらにすすめる」というタイトルで登壇します。
本エントリーでは、DroidKaigiで話す予定の内容について少し事前に書いておこうと思います。
タイトルやProposalを見て来てもらったものの、思ってのと違う!というようなミスマッチが減ったり、事前に興味を持ってもらえればと思う次第です。
DroidKaigi 2018で登壇したときに事前に書いた内容は次のとおりです。
今年のタイトルと昨年のタイトルと非常に似ています。
実は、今年は去年話したときの課題を解決したという話をします。
それがタイトルにある「さらに」の部分です。
2018年の話
「テストの実行時間が増える理由」と「実行時間が増える事により起こる問題」について話をし、テストの実行時間の問題についてどう解決するかについて話をしました。
テストコード側の対応を述べただけなく、並列化についての話をしました。
OpenSTF x Jenkinsという並列環境(3〜5並列)を用意し、テストシャーディング(numShards/shardIndex)を使って、Espressoのテストの実行時間を短縮させました。
その結果として、並列化する前の実行時間の約40%までになりました。
10分であれば、4分になったというわけです。
2019年の話
2018年の話で「実行時間の問題」について、「全て解決!」とはなっていません。
何かしら先に進めば、見えてくる課題というのはたくさんあります。
2018年の登壇時点でも次のような課題をいろいろとあげていました。
- テストの実行時間以外の時間について考慮していない
- テストの実行時間にばらつきがあり、それを考慮して並列化できていない
テストの実行時間以外の時間について考慮していない
2018年時点では、並列化したもののapkファイルに関しては、どのラインでもビルドしていました。
この時間は並列数が増えれば増えるほど無駄な時間ともいえます。
本来は、対象となるアプリのファイルは同一が良いです。そしてテスト用のapkファイルはその都度作る必要は特にありません。
テストの実行時間にばらつきがあり、それを考慮して並列化できていない
2018年時点では、基本的にランダムでテストケースを並列化していました。
そうすると、テストケースの実行時間次第では、良い感じに並列化ができないこともありました。
もう少し実行時間のばらつきをいい感じにする必要があります。
よくある方法としては、今までの実行時間を元にグルーピングする方法です。
また、この課題以外にも課題があります。
それは実行環境を用意するというコストです。
もはや自身でこの手の環境を用意するというのは正直コスト高だと思っています。
実行環境を用意するコスト
並列化のために2018年で利用したようなOpenSTF x Jenkinsという環境を用意するのは人的コストが非常に高いものでした。
OpenSTFのように自前でデバイスファームを運用するというメリットは当然あるのですが、いろいろと厳しい面もあります。
そこで、世にあるデバイスファームを利用することにします。
今回の発表ではFirebase Test Labを使っての話をします。
Firebase Test LabはiOSのサポートもはじまっています。
今回列挙したような課題に対して、どのように対処していくかを説明し、実際にどれぐらいの時間の削減になるのか。
そして、コストはどれぐらいかかるのかも説明をします。
今回人的コストがすごく下がったこともあり、測定を終えるまでにかかった時間は昨年に比べるとすごい下がりました。
なお、今回かかったFirebase Test Labのコストは¥2,119になります。
これらの課題を解決したらすべてが終わるのか?
いいえ、そのようなことはありません。
課題を解決させた先にはどのような課題があるのか?についても話をします。
当日の資料です。
蛇足
Androidテスト全書では実行時間の短縮については軽くふれましたが、詳細まで書くことはできませんでした。
ここらへんの話をいろいろなところでできればと思います。
また、今回はAndroidアプリの話ではありますが、iOSやWebサービスにおいてもテストの実行時間を短縮させるのは重要なことです。
そのプラットフォームにおいての解決方法も、いつかどこかで話さればと思います。
最後にお詫び
本来は、質問がある方がいれば登壇後に話をしたいと思っていましたが、今回はその時間が取れるか分かりません。
そのため、もし何かしら質問があるという方がいればDroidKaigiにいる私をつかまえて質問をしていただくか、後日どこかしらで質問をしていただければと思います。
または私が里帰り出産から戻った際にでもランチに行きましょう。