Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Androidの自動テスト戦略

Sadashi Ota
February 25, 2025

 Androidの自動テスト戦略

Androidのテスト戦略ページの解説です。(個人的見解も含まれています)
https://developer.android.com/training/testing/fundamentals/strategies

Sadashi Ota

February 25, 2025
Tweet

More Decks by Sadashi Ota

Other Decks in Technology

Transcript

  1. 自己紹介 太田 定志(おおた さだし) • 2018年 株式会社カカクコム入社 • 食べログアプリ開発部 基盤チーム

    リーダー • 主にAndroidアプリを担当 • アーキテクチャの見直し、リファクタリング、OS/ライブラリのアップデー ト、リリースフローの最適化、CI/CDの改善、開発環境の整備、採用、チー ムビルディング などなど、、、 • X • sada(@sadashi_ota) • GitHub • @sadashi-ota • Qiita • sadashi 2 The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.
  2. テストコードはなぜ必要か? 11 テスト戦略ページ冒頭の一文 A good testing strategy lets you take

    advantage of automated testing to focus on an important benefit: developer productivity. (優れたテスト戦略では、自動テストを活用して、 重要なメリットである デベロッパーの生産性に集中できます。) *https://developer.android.com/training/testing/fundamentals/strategies より引用
  3. 15 テストサイズでの分類 続いて「テストサイズ」という分類 書籍「Googleのソフトウェアエンジニアリング 持続可能なプログラミングを支える技術、文化、プロセス」 竹辺 靖昭 (監修), Titus Winters

    (編集), Tom Manshreck (編集), Hyrum Wright (編集), 久富木 隆一 (翻訳) 「11章 テスト概観 11.2 テストスイートを設計する」より引用 我々は、あらゆるテストケースについて、 2つの別個の次元があるという結論に達した。 それは、規模(size)と範囲(scope)だ。 規模は、テストケースの実行に必要なリソースを指し、 メモリー、プロセス、時間等だ。 範囲は、検証している特定のコードパスを指す。
  4. 17 テストサイズでの分類 サイズ 説明 Small 単一プロセス内で実行される Medium 単一マシン上で実行される Large 任意の好きな場所で実行される

    (Enormous) (Googleではこの区分も存在するらしい) Small Medium Large ネットワーク NG localhost OK ローカルDB NG OK OK Android OS NG OK OK マルチスレッド NG OK OK 外部システム NG NG OK Androidにおけるテストの例
  5. 18 テストサイズでの分類 サイズ 説明 Small 単一プロセス内で実行される Medium 単一マシン上で実行される Large 任意の好きな場所で実行される

    (Enormous) (Googleではこの区分も存在するらしい) Small Medium Large ネットワーク NG localhost OK ローカルDB NG OK OK Android OS NG OK OK マルチスレッド NG OK OK 外部システム NG NG OK Androidにおけるテストの例
  6. 20 テストサイズでの分類 昔のAndroidのテストドキュメントにあった図がこちら。 分類がUnit Tests / Integration Tests / UI

    Tests という分類でした。 割と普通に感じるこの分類は 人によって解釈が異なるという 問題点があります。
  7. Androidの自動テスト戦略 24 テストピラミッドの何がうれしいのか? Smallなテストほど実行速度が速いため、 早期のフィードバックが可能になります。 そのため、各テストの一番最下層を検討*し、 構築することで、テスト戦略ページの 冒頭に記載の3つが可能になります。 • Catches

    issues as early as possible. • (問題をできるだけ早い段階で検出します。) • Executes quickly. • (迅速に実行されます。) • Provides clear indications when something needs to be fixed. • (修正が必要な場合に明確な指示を表示します。) *具体的なものは「Decide the test category」をご参照ください
  8. 26 まとめ 信頼度の高いテストスイートを作り上げる継続的な努力 と投資は価値がある。 書籍「LeanとDevOpsの科学 テクノロジーの戦略的活用が組織変革を加速する」 Nicole Forsgren Ph.D. (著),

    Jez Humble (著), Gene Kim (著), 武舎広幸 (翻訳), 武舎るみ (翻訳) 第1部 第4章「4.4.2 テスト自動化」より引用 テストを良くしていきましょう!
  9. ご清聴ありがとうございました 29 Android is a trademark of Google LLC. Kotlin

    is a registered trademark of the Kotlin Foundation. IOSは、Cisco の米国およびその他の国における商標または登録商標であり、ライセンスに基づき使用されています。