- Page d'accueil
- /
- Appium vs Espresso
Appium vs Espresso
Appium et Espresso sont les deux principales façons d'automatiser les tests d'interface Android. Appium est un framework multi-plateforme en boîte noire basé sur le protocole W3C WebDriver ; Espresso est le framework rapide en boîte blanche de Google, pour Android uniquement. Ce guide les compare directement, avec des exemples de code et une conclusion exploitable en cinq minutes.
- Navigateurs et appareils
- 6100+
- Parallélisme du cloud
- 100×
- SLA de disponibilité
- 99.99%
Aimé par ces entreprises
Lequel choisir ?
Vous souhaitez une seule suite de tests qui s'exécute à la fois sur Android et iOS, votre équipe travaille en Java, Python, JavaScript, Ruby ou C#, ou vous testez des applications que vous ne pouvez pas reconstruire avec de l'instrumentation.
Vous testez Android uniquement, vous possédez le code source de l'application, et vous souhaitez les tests d'interface les plus rapides et les moins instables avec une synchronisation automatique, écrits en Kotlin ou Java aux côtés de votre application.
Vous utilisez Espresso pour des tests rapides de composants et d'interface sur Android uniquement et Appium pour une couverture de bout en bout multi-plateforme. TestingBot exécute les deux sur la même grille d'appareils réels, en parallèle.
Que sont Appium et Espresso ?
Deux frameworks d'automatisation d'interface mobile aux conceptions opposées. L'un est multi-plateforme et en boîte noire, l'autre est natif Android et en boîte blanche.
Appium
Sorti en 2012 · OpenJS Foundation · Apache 2.0
Appium est un framework de test open source et multi-plateforme pour les applications natives, hybrides et web mobiles. Il implémente le protocole W3C WebDriver, de sorte que la même bibliothèque cliente pilote à la fois iOS et Android depuis Java, Python, Node.js, Ruby, C# et plus encore.
Appium pilote l'application depuis l'extérieur comme une boîte noire, il n'a donc besoin d'aucun code source de l'application. Sur Android, il utilise en interne le pilote UiAutomator2 ou Espresso ; sur iOS, il utilise XCUITest. C'est cette couche qui rend un test réutilisable sur plusieurs plateformes.
- Java / Python / Node.js / Ruby / C# / PHP
- Multi-plateforme, natif, hybride et web mobile
- Boîte noire, aucun code source requis
Espresso
Sorti en 2013 · Google · Apache 2.0
Espresso est le framework de test d'interface de Google pour Android, qui fait partie des bibliothèques de test Android Jetpack. Les tests s'exécutent dans le processus, sur l'appareil, dans le même processus que l'application testée, ce qui leur donne un accès direct à l'application et une synchronisation automatique avec le thread d'interface.
Comme Espresso s'exécute dans le processus de l'application, il est rapide et fiable, avec très peu d'instabilité. Les compromis : il est limité à Android, il s'écrit en Kotlin ou Java, et il nécessite une version instrumentée de l'application.
- Kotlin et Java
- Dans le processus, synchronisation automatique de l'interface
- Android uniquement · nécessite une version instrumentée
Appium vs Espresso : comparaison côte à côte
À travers les dimensions qui comptent pour les tests d'interface Android et la couverture multi-plateforme.
| Dimension |
|
|
|---|---|---|
| First release | 2012 | 2013 |
| Maintained by | Open source (OpenJS Foundation) | |
| 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 | ✓ | ✓ |
Les deux s'exécutent sur les véritables appareils Android et émulateurs de TestingBot. Appium se connecte au hub WebDriver avec une application téléversée ; Espresso s'exécute via la CLI TestingBot.
Se connecter sur Android
Un flux de connexion piloté en boîte noire par Appium et en boîte blanche par Espresso. Les deux s'exécutent sur les mêmes véritables appareils Android sur TestingBot.
# 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()
// 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())) }
Le test Appium se connecte au hub WebDriver avec une application téléversée ; la suite Espresso s'exécute via la CLI TestingBot. Les deux s'exécutent sur de véritables appareils Android.
Quand choisir lequel
Choisissez Appium lorsque
- Vous avez besoin d'une seule suite de tests qui s'exécute à la fois sur Android et iOS sans réécriture.
- Votre équipe écrit en Java, Python, JavaScript, Ruby ou C# plutôt qu'en Kotlin.
- Vous testez une application que vous ne pouvez pas reconstruire avec de l'instrumentation, ou une application tierce ou hybride.
- Vous utilisez déjà Selenium ou WebDriver et souhaitez le même protocole pour le mobile.
- Vous testez des flux natifs, hybrides et web mobiles avec un seul outil.
Choisissez Espresso lorsque
- Vous testez Android uniquement et possédez le code source de l'application, donc une version instrumentée convient.
- Vous souhaitez les tests d'interface les plus rapides et les moins instables avec une synchronisation automatique.
- Votre équipe écrit en Kotlin ou Java et souhaite des tests à côté du code de l'application.
- Vous testez l'état interne de l'application, des vues ou composants personnalisés, et pas seulement l'interface publique.
- Vous exécutez les tests d'interface dans le cadre de la build Android et de la CI dès le premier jour.
Arrêtez de choisir, exécutez les deux sur la même grille
Téléversez votre application et pilotez-la en boîte noire avec Appium via le hub WebDriver, ou exécutez votre suite Espresso via la CLI TestingBot. Les deux s'exécutent sur les mêmes véritables appareils Android, avec le même tableau de bord, les mêmes emplacements parallèles, l'enregistrement vidéo et la résidence des données dans l'UE.
- De véritables appareils Android et émulateurs
- Historique des tests côte à côte pour les deux frameworks
- Gratuit pour les logiciels libres, pour les deux frameworks
--device "Galaxy S24" --real-device
Foire aux questions
Les questions que se posent les équipes avant de choisir, ou de combiner, ces frameworks.
Espresso est-il plus rapide qu'Appium ?
Oui, sur Android. Espresso s'exécute dans le processus, dans le même processus que l'application, ce qui lui évite les allers-retours réseau du protocole WebDriver d'Appium et le synchronise automatiquement avec le thread d'interface. Cela rend Espresso plus rapide et moins instable. Le compromis est qu'Espresso est limité à Android et nécessite une version instrumentée, tandis qu'Appium exécute le même test sur Android et iOS comme une boîte noire.
Devrais-je utiliser Appium ou Espresso pour Android ?
Cela dépend de vos objectifs. Pour des tests d'interface sur Android uniquement où vous possédez le code source, Espresso offre les exécutions les plus rapides et les plus fiables. Pour une couverture multi-plateforme, des tests dans un langage autre que Kotlin, ou des applications que vous ne pouvez pas instrumenter, Appium est le meilleur choix. De nombreuses équipes Android exécutent Espresso pour les tests de composants et d'interface et Appium pour les flux de bout en bout multi-plateformes.
Espresso peut-il tester des applications iOS ?
Non. Espresso est un framework limité à Android, développé par Google. Pour tester iOS, vous avez besoin de XCUITest (le framework natif d'Apple) ou d'Appium, qui pilote iOS via XCUITest en interne. Appium est le seul de ces outils à exécuter le même test sur les deux plateformes. TestingBot les exécute tous sur de véritables appareils.
Puis-je réutiliser les mêmes tests sur Android et iOS ?
Avec Appium, oui. Comme Appium implémente le protocole W3C WebDriver et abstrait les pilotes natifs (UiAutomator2 ou Espresso sur Android, XCUITest sur iOS), un seul test peut cibler les deux plateformes avec des modifications mineures des capacités. Espresso ne peut pas le faire ; il est limité à Android. Si la réutilisation multi-plateforme compte, Appium est le framework à choisir.
Espresso a-t-il besoin du code source de l'application ?
Oui. Espresso se compile en un APK de test instrumenté qui s'exécute aux côtés de votre application, vous avez donc besoin du code source de l'application ou au moins d'une version débogable et instrumentée. Appium pilote l'application installée comme une boîte noire et n'a besoin d'aucun code source, c'est pourquoi il peut tester des applications tierces ou déjà publiées qu'Espresso ne peut pas tester.
Puis-je exécuter Appium et Espresso sur de véritables appareils dans le cloud ?
Oui. TestingBot fournit de véritables téléphones et tablettes Android, ainsi que des émulateurs, dans un centre de données de l'UE. Les tests Appium téléversent votre .apk vers TestingBot Storage et s'exécutent sur le hub avec realDevice activé ; les tests Espresso téléversent l'application et les APK de test via la CLI TestingBot. Les deux enregistrent la vidéo et les journaux que vous pouvez consulter dans le tableau de bord.
Puis-je exécuter Appium et Espresso sur TestingBot ?
Oui, les deux s'exécutent sur la même grille TestingBot. Appium téléverse votre application vers TestingBot Storage, puis se connecte à https://hub.testingbot.com/wd/hub avec une capacité appium:app de tb://APP_ID. Espresso s'exécute via la CLI TestingBot : testingbot espresso app.apk app-test.apk --device "Galaxy S24" --real-device. Les deux partagent le même tableau de bord, les mêmes emplacements parallèles et la même résidence des données dans l'UE, et sont gratuits pour les logiciels libres.
Vous souhaitez aller plus loin ? Consultez les pages dédiées à Appium et Espresso.
Related comparisons
Inscrivez-vous pour un essai gratuit
Exécutez Appium et Espresso sur de véritables appareils Android dans le cloud de TestingBot.
Essai gratuit