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

Compose UIテストを使った統合テスト

hiro
December 13, 2024

Compose UIテストを使った統合テスト

DeNAさん主催の「Android Test Night #10」で発表したセッションスライドです。

hiro

December 13, 2024
Tweet

More Decks by hiro

Other Decks in Programming

Transcript

  1. MA ZDA MO TO R CO RPORA TI ON Confident

    ial 納庄 宏明 マツダ株式会社 Compose UIテストを使った統合テスト Data LayerからUIまで繋げてテストする 2024/12/12
  2. 忠実度の高いテスト テスト境界は モックなどの テストダブル テスト システムの 入出力を テスト UI ViewModel

    UseCase/Data Database Androidアプリ 自社API、外部サービス テスト テスト テスト 忠実度の高いテスト 忠実度の低いテスト UI ViewModel UseCase/Data Database テストダブルは 最小限 リファクタリングしやすくなり、バグ発生を未然に防げる 自社API、外部サービス 有利(内部実装に結びつかない) リファクタリングへの耐性 退行に対する保護 有利(通るコードが多い) 忠実度の高いテスト は
  3. 統合テストの手段の一例 1. Compose UI Test 2. Hilt 3. テストダブル 4.

    Robolectric/Roborazzi •サンプル・検証コード:https://github.com/hiroaki404/ComposeUITestSample •参考になるリポジトリ:https://github.com/DroidKaigi/conference-app-2024 https://github.com/android/nowinandroid
  4. Robolectric/Roborazzi •Roblectric •シミュレータ不要でJVM上でUIテストが実施 でき、Instrumented Testに比べて速い •忠実度は下がる •Roborazzi •UIテストの任意のタイミングで captureRoboImage() でスクリーンショット

    •Robolectricで動作 •CIのGithub Actionsに統合し、差分を検出し、 手軽にUIの退行を検知できる • UIテストを定義しなくても簡易に退行検知がで きるのは強み
  5. まとめ •忠実度の高いテストによってリファクタリングへの耐性と退行 に対する保護が備わる •統合テストをするにはそれなりに設定や習熟が必要だがメリッ トは大きい •部分的に取り入れながら徐々に広げていくと良い • 参考文献 • 『単体テストの考え方/使い方』

    Vladimir Khorikov著 マイナビ • Testing strategies https://developer.android.com/training/testing/fundamentals/strategies • Test your Compose layout https://developer.android.com/develop/ui/compose/testing • Robolectricの限界を理解してUIテストを高速に実行しよう https://www.youtube.com/watch?v=sd8QWgSGxMc&ab_channel=DroidKaigi • How to Test Your Compose UI https://speakerdeck.com/stewemetal/how-to-test-your-compose-ui-droidkaigi-2022-tokyo