LoginSignup
8
8

More than 5 years have passed since last update.

Android testing overview

Posted at

Googleが公式に提供しているドキュメントをベースにして、どういうテストがあるのか俯瞰できるようにまとめてみました。
(全て自分で試したわけではありません)

細かい導入方法は各公式ドキュメントで最新情報を確認してください。

対象読者

JUnitやRSpec等の使用経験があり、自動テストの一般的な知識がある方

Androidテストの分類

※ 以下のドキュメントを元に、テストの目的・スコープ別に分類しています。
http://developer.android.com/intl/ja/tools/testing/testing_android.html
※ 実際にはEspressoがInstrumentedなAPIを利用していたりして、それぞれのテストが独立しているわけではないので注意してください。

ユニットテスト

各クラスの単体テスト。Androidフレームワークに依存するクラスかどうかで選択肢が変わる。

ローカルでのユニットテスト

ローカルのJVM上で動かすので高速で実行コスト小。
積極的に書くべきテスト。
一般的なユニットテストなので、アプリをやってこなかった人でもとっつきやすい。

Instrumentedなユニットテスト

※まだ試してません!

エミュレータor実機上で動かす。実行コスト大。
ローカルユニットテストでのモック化が難しい時、面倒な時に使う。

Robolectric

※まだ試してません!

Google公式ではないが、実績多数。開発も活発。
ローカルのJVM上で動かすので高速で実行コスト小。
Mockito等の一般的なモック用ライブラリを使用せずに使える。

  • スコープ
    • Activity等のAndroidフレームワークに依存するクラスの単体テスト
  • 導入方法

結合テスト(機能テスト、UIテスト)

「この画面でこのボタンをタップしたらこうなる」といった、実際のユーザーから見たアプリの機能のテスト。
アプリの最終的な品質を担保するという意味では、ユニットテストより重要。
ただし、ユニットテストと比べて自動化しづらい部分があるので、必要に応じてテスターによるマニュアルのテストも併用する。

Espresso

WebアプリでいうSeleniumのようなUIテストが書ける。

UIAutomator

※まだ試してません!

最後に

Androidのテストいろいろありすぎて何から手を付けて良いのか迷いますね。。
アプリやってこなかった人がとりあえず書いてみるという意味では、ピュアなJavaクラスのローカルで動かすユニットテストから始めるのが良いと思います。
アプリ開発での有効なテストという意味では、Espressoを使用したUIテストで主要機能を担保しておくのがよいかなぁと思いました。導入も楽です。

Androidのテスティングフレームワークは乱立してますが、ドキュメントもそれなりに充実してます。
時間のある人は公式ドキュメントから辿ってみるとよさそうです。

Androidアプリ開発、まだ始めたばかりなので、いろいろ試してまた更新します。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8