フレームワーク比較 · 2026

Appium vs Espresso

AppiumとEspressoは、Android UIテストを自動化する主要な2つの方法です。Appiumは、W3C WebDriverプロトコル上のクロスプラットフォームのブラックボックスフレームワークであり、EspressoはGoogleが開発した、Android専用の高速なホワイトボックスフレームワークです。このガイドでは、コードサンプルと5分で実践できる結論を交えながら、両者を徹底的に比較します。

ブラウザとデバイス
6100+
クラウド並列処理
100×
稼働時間SLA
99.99%

世界で最も革新的な企業のいくつかから信頼されています

30秒で答える

どちらを選ぶべきでしょうか?

Appium Appiumを選ぶべき理由は…

AndroidとiOSの両方で実行できる1つのテストスイートを求めている場合、チームがJava、Python、JavaScript、Ruby、またはC#で開発を行っている場合、あるいは計装を加えて再ビルドできないアプリをテストする場合。

Espresso Espressoを選ぶべき理由は…

Androidのみをテストし、アプリのソースを所有しており、アプリと並んでKotlinまたはJavaで記述する、自動同期を備えた最速かつ最も不安定さの少ないUIテストを求めている場合。

両方選ぶべき場合…

高速なAndroid専用のコンポーネントテストやUIテストにはEspressoを、クロスプラットフォームのエンドツーエンドカバレッジにはAppiumを使いたい場合。TestingBotは両方を同じ実機グリッド上で、並列に実行します。

背景

AppiumとEspressoとは何ですか?

2つのモバイルUI自動化フレームワーク、それぞれ正反対の設計。一方はクロスプラットフォームのブラックボックスであり、もう一方はAndroidネイティブのホワイトボックスです。

Appium

Appium

リリース日:2012年 · OpenJS Foundation · Apache 2.0

Appiumは、ネイティブ、ハイブリッド、モバイルWebアプリ向けのオープンソースのクロスプラットフォームテストフレームワークです。W3C WebDriverプロトコルを実装しているため、同じクライアントライブラリがJava、Python、Node.js、Ruby、C#などからiOSとAndroidの両方を操作します。

Appiumは、アプリを外部からブラックボックスとして操作するため、アプリのソースコードを必要としません。Androidでは内部でUiAutomator2またはEspressoドライバを使用し、iOSではXCUITestを使用します。その層こそが、1つのテストをプラットフォーム間で再利用可能にするものです。

  • Java / Python / Node.js / Ruby / C# / PHP
  • クロスプラットフォーム、ネイティブ、ハイブリッド、モバイルWeb
  • ブラックボックス、アプリのソース不要
Espresso

Espresso

リリース日:2013年 · Google · Apache 2.0

Espressoは、GoogleのAndroid向けUIテストフレームワークであり、Android Jetpackのテストライブラリの一部です。テストはデバイス上で、テスト対象のアプリと同じプロセス内でインプロセス実行され、アプリへの直接アクセスとUIスレッドとの自動同期が可能になります。

Espressoはアプリのプロセス内で実行されるため、高速かつ信頼性が高く、不安定さがほとんどありません。トレードオフは、Android専用であること、KotlinまたはJavaで記述すること、そしてアプリの計装ビルドを必要とすることです。

  • KotlinとJava
  • インプロセス、自動UI同期
  • Android専用 · 計装ビルドが必要
直接対決

Appium vs Espresso:並べて比較

Android UIテストとクロスプラットフォームカバレッジにおいて重要なあらゆる側面において。

Appium versus Espresso feature comparison
項目 Appium Espresso
First release 2012 2013
Maintained by Open source (OpenJS Foundation) Google
Platforms iOS + Android Android only
Languages Java, Python, JS, Ruby, C#, PHP Java, Kotlin
Protocol W3C WebDriver Android instrumentation
Test execution Out-of-process (black-box) In-process (white-box)
Speed Slower (WebDriver round-trips) Very fast (in-process)
App source needed No (black-box) Yes (instrumented build)
UI synchronization Manual waits Automatic, built in
Cross-platform reuse Same test on iOS + Android Android only
Web / hybrid apps Yes Limited
Flakiness Good Excellent (tight coupling)
On TestingBot Upload app, WebDriver hub Upload app + test, CLI
Free for open source on TestingBot

両方ともTestingBotの実際のAndroidデバイスとエミュレータ上で動作します。Appiumはアップロードされたアプリを使ってWebDriverハブに接続し、EspressoはTestingBot CLI経由で実行されます。

同じログインテスト

Androidでのログイン

Appiumによってブラックボックスで、Espressoによってホワイトボックスで操作されるログインフロー。どちらもTestingBot上の同じ実際のAndroidデバイスで実行されます。

Appium + Python test_login.py
# real Android device on TestingBot
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy

opts = UiAutomator2Options().load_capabilities({
    'platformName': 'Android',
    'appium:app': 'tb://APP_ID',
    'tb:options': { 'realDevice': True },
})
d = webdriver.Remote('https://hub.testingbot.com/wd/hub', options=opts)
d.find_element(AppiumBy.ACCESSIBILITY_ID, 'username').send_keys('jane')
d.find_element(AppiumBy.ACCESSIBILITY_ID, 'sign_in').click()
assert d.find_element(AppiumBy.ID, 'welcome').is_displayed()
Espresso + Kotlin LoginTest.kt
// runs via the TestingBot CLI
@Test
fun loginRedirectsToDashboard() {
    onView(withId(R.id.username))
        .perform(typeText("jane@example.com"))
    onView(withId(R.id.password))
        .perform(typeText("secret"))
    onView(withId(R.id.sign_in))
        .perform(click())

    onView(withId(R.id.welcome))
        .check(matches(isDisplayed()))
}

Appiumのテストはアップロードされたアプリを使ってWebDriverハブに接続し、EspressoのスイートはTestingBot CLI経由で実行されます。どちらも実際のAndroidデバイスで実行されます。

意思決定マトリックス

どちらを選ぶかは

Appiumを選ぶとき

  • 書き直しなしでAndroidとiOSの両方で実行できる1つのテストスイートが必要な場合。
  • チームがKotlinではなくJava、Python、JavaScript、Ruby、またはC#で開発を行っている場合。
  • 計装を加えて再ビルドできないアプリ、またはサードパーティやハイブリッドのアプリをテストする場合。
  • 既にSeleniumまたはWebDriverを使用しており、モバイルでも同じプロトコルを使いたい場合。
  • ネイティブ、ハイブリッド、モバイルWebのフローを1つのツールでテストする場合。
TestingBotでAppiumを実行する

Espressoを選ぶとき

  • Androidのみをテストし、アプリのソースを所有しているため、計装ビルドで問題ない場合。
  • 自動同期を備えた最速かつ最も不安定さの少ないUIテストを求めている場合。
  • チームがKotlinまたはJavaで開発を行っており、アプリのコードの隣にテストを置きたい場合。
  • 公開UIだけでなく、アプリの内部状態、カスタムビュー、またはコンポーネントをテストする場合。
  • 最初の日からAndroidのビルドとCIの一部としてUIテストを実行する場合。
TestingBotでEspressoを実行する
TestingBotは両方をサポートしています

どちらかを選ぶのはやめて、両方を同じグリッドで実行しよう

アプリをアップロードし、WebDriverハブ経由でAppiumを使ってブラックボックスで操作するか、TestingBot CLI経由でEspressoスイートを実行します。どちらも同じ実際のAndroidデバイス上で、同じダッシュボード、並列スロット、ビデオ録画、EUデータ所在地とともに実行されます。

  • 実際のAndroidデバイスとエミュレータ
  • 両フレームワークのテスト履歴を並べて表示
  • オープンソースであれば無料、両方のフレームワーク
testingbot.com / run both
# Appium
appium:app = 'tb://APP_ID'
hub: https://hub.testingbot.com/wd/hub
# Espresso (@testingbot/cli)
$ testingbot espresso app.apk app-test.apk
--device "Galaxy S24" --real-device
よくある質問

よくある質問

チームがこれらのフレームワークを選択する前、あるいは組み合わせる前に自問する質問。

EspressoはAppiumより速いですか?

はい、Androidでは。Espressoはインプロセスで、アプリと同じプロセス内で実行されるため、AppiumのWebDriverプロトコルのネットワークラウンドトリップを回避し、UIスレッドと自動的に同期します。これにより、Espressoはより高速で、不安定さが少なくなります。トレードオフは、EspressoがAndroid専用で計装ビルドを必要とする一方、Appiumは同じテストをAndroidとiOSにわたってブラックボックスとして実行することです。

AndroidにはAppiumとEspressoのどちらを使うべきですか?

目標によります。ソースを所有しているAndroid専用のUIテストでは、Espressoが最速かつ最も信頼性の高い実行を提供します。クロスプラットフォームカバレッジ、Kotlin以外の言語でのテスト、または計装できないアプリには、Appiumの方が適しています。多くのAndroidチームは、コンポーネントテストやUIテストにはEspressoを、クロスプラットフォームのエンドツーエンドフローにはAppiumを実行します。

EspressoはiOSアプリのテストを行うことができますか?

いいえ。Espressoは、Google製のAndroid専用フレームワークです。iOSをテストするには、XCUITest(Appleのネイティブフレームワーク)、または内部でXCUITestを介してiOSを操作するAppiumが必要です。これらのうち、両方のプラットフォームで同じテストを実行できるのはAppiumだけです。TestingBotは、それらすべてを実際のデバイスで実行します。

AndroidとiOSで同じテストを再利用できますか?

Appiumなら、はい。AppiumはW3C WebDriverプロトコルを実装し、ネイティブドライバ(AndroidではUiAutomator2またはEspresso、iOSではXCUITest)を抽象化するため、1つのテストでわずかなケイパビリティの変更だけで両方のプラットフォームを対象にできます。Espressoはこれができません。Android専用です。クロスプラットフォームの再利用が重要なら、Appiumが選ぶべきフレームワークです。

Espressoはアプリのソースコードを必要としますか?

はい。Espressoはアプリと並んで実行される計装テストAPKにコンパイルされるため、アプリのソース、または少なくともデバッグ可能で計装されたビルドが必要です。Appiumはインストール済みのアプリをブラックボックスとして操作し、ソースを必要としません。だからこそ、Espressoでは扱えないサードパーティや既に公開済みのアプリをテストできるのです。

クラウド上の実際のデバイスでAppiumとEspressoを実行できますか?

はい。TestingBotは、EUデータセンターに実際のAndroidスマートフォンやタブレット、さらにエミュレータを提供しています。Appiumのテストは、.apkをTestingBot Storageにアップロードし、realDeviceを設定してハブに対して実行します。Espressoのテストは、アプリとテストのAPKをTestingBot CLI経由でアップロードします。どちらもダッシュボードで確認できるビデオとログを記録します。

TestingBot上でAppiumとEspressoを実行できますか?

はい、どちらも同じTestingBotグリッド上で動作します。AppiumはアプリをTestingBot Storageにアップロードし、tb://APP_IDappium:appケイパビリティとともにhttps://hub.testingbot.com/wd/hubに接続します。EspressoはTestingBot CLI経由で実行されます:testingbot espresso app.apk app-test.apk --device "Galaxy S24" --real-device。どちらも同じダッシュボード、並列スロット、EUデータ所在地を共有し、オープンソースであれば無料です。

さらに詳しく知りたい方は、専用のAppiumページとEspressoページをご覧ください。

無料トライアルにサインアップ

TestingBotのクラウド上の実際のAndroidデバイスで、AppiumとEspressoを実行できます。

無料トライアルを開始する