- Page d'accueil
- /
- Appium vs XCUITest
Appium vs XCUITest
Appium et XCUITest sont les deux principales façons d'automatiser les tests d'interface iOS. Appium est un framework multi-plateforme en boîte noire basé sur le protocole W3C WebDriver ; XCUITest est le framework natif rapide d'Apple, pour iOS 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 iOS et Android, votre équipe travaille en Java, Python, JavaScript, Ruby ou C#, ou vous testez des applications que vous ne pouvez pas reconstruire avec une cible de test.
Vous testez iOS uniquement, vous possédez l'application dans Xcode, et vous souhaitez les tests d'interface natifs les plus rapides et les plus fiables écrits en Swift ou Objective-C aux côtés de votre application.
Vous utilisez XCUITest pour des tests natifs rapides sur iOS 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 XCUITest ?
Deux frameworks d'automatisation d'interface iOS aux conceptions opposées. L'un est multi-plateforme et en boîte noire, l'autre est natif Apple et étroitement couplé à Xcode.
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 iOS, il utilise en interne le XCUITest d'Apple (via WebDriverAgent) ; sur Android, il utilise UiAutomator2. 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
XCUITest
Sorti en 2015 · Apple · intégré à Xcode
XCUITest est le framework de test d'interface d'Apple, qui fait partie du framework XCTest plus large livré avec Xcode. Les tests s'écrivent en Swift ou Objective-C et s'exécutent sur l'appareil via XCTest, avec un accès de premier ordre à l'arbre d'accessibilité iOS.
Comme XCUITest est natif et maintenu par Apple, il est rapide, fiable et toujours à jour avec la dernière version d'iOS. Les compromis : il est limité à iOS, il s'écrit en Swift ou Objective-C, et il nécessite une cible de test Xcode.
- Swift et Objective-C
- XCTest natif, accès à l'arbre d'accessibilité
- iOS uniquement · nécessite une cible de test Xcode
Appium vs XCUITest : comparaison côte à côte
À travers les dimensions qui comptent pour les tests d'interface iOS et la couverture multi-plateforme.
| Dimension |
|
|
|---|---|---|
| First release | 2012 | 2015 |
| Maintained by | Open source (OpenJS Foundation) | Apple |
| Platforms | iOS + Android | iOS only |
| Languages | Java, Python, JS, Ruby, C#, PHP | Swift, Objective-C |
| Protocol | W3C WebDriver | XCTest / XCUITest (native) |
| iOS engine | XCUITest via WebDriverAgent | XCUITest (direct) |
| Speed | Slower (extra layers) | Faster (native) |
| App source needed | No (black-box) | Yes (Xcode test target) |
| Tooling | Any IDE / CI | Xcode |
| Cross-platform reuse | Same test on iOS + Android | iOS only |
| Web / hybrid apps | Yes | Limited |
| Flakiness | Good | Excellent (native sync) |
| On TestingBot | Upload app, WebDriver hub | Upload app + test zip, CLI |
| Free for open source on TestingBot | ✓ | ✓ |
Les deux s'exécutent sur les véritables iPhone et iPad de TestingBot. Appium se connecte au hub WebDriver avec une application téléversée ; XCUITest s'exécute via la CLI TestingBot.
Se connecter sur iOS
Un flux de connexion piloté en boîte noire par Appium et nativement par XCUITest. Les deux s'exécutent sur les mêmes véritables iPhone sur TestingBot.
# real iPhone on TestingBot from appium import webdriver from appium.options.ios import XCUITestOptions from appium.webdriver.common.appiumby import AppiumBy opts = XCUITestOptions().load_capabilities({ 'platformName': 'iOS', '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.ACCESSIBILITY_ID, 'welcome').is_displayed()
// runs via the TestingBot CLI func testLoginRedirectsToDashboard() { let app = XCUIApplication() app.launch() app.textFields["username"].typeText("jane@example.com") app.secureTextFields["password"].typeText("secret") app.buttons["sign_in"].tap() XCTAssertTrue(app.staticTexts["welcome"].exists) }
Le test Appium se connecte au hub WebDriver avec une application téléversée ; la suite XCUITest s'exécute via la CLI TestingBot. Les deux s'exécutent sur de véritables iPhone et iPad.
Quand choisir lequel
Choisissez Appium lorsque
- Vous avez besoin d'une seule suite de tests qui s'exécute à la fois sur iOS et Android sans réécriture.
- Votre équipe écrit en Java, Python, JavaScript, Ruby ou C# plutôt qu'en Swift.
- Vous testez une application que vous ne pouvez pas reconstruire avec une cible de test, 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 XCUITest lorsque
- Vous testez iOS uniquement et possédez l'application dans Xcode, donc une cible de test convient.
- Vous souhaitez les tests iOS natifs les plus rapides et les plus fiables qui suivent la dernière version d'iOS.
- Votre équipe écrit en Swift ou Objective-C et souhaite des tests à côté du code de l'application.
- Vous avez besoin d'un accès approfondi à l'arbre d'accessibilité iOS et aux composants natifs.
- Vous exécutez les tests d'interface dans le cadre de la build Xcode 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 XCUITest via la CLI TestingBot. Les deux s'exécutent sur les mêmes véritables iPhone et iPad, 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 iPhone et iPad
- Historique des tests côte à côte pour les deux frameworks
- Gratuit pour les logiciels libres, pour les deux frameworks
--device "iPhone 16" --real-device
Foire aux questions
Les questions que se posent les équipes avant de choisir, ou de combiner, ces frameworks.
XCUITest est-il plus rapide qu'Appium ?
Oui, sur iOS. XCUITest est le framework natif d'Apple et s'exécute sur l'appareil via XCTest, ce qui lui évite les couches supplémentaires WebDriver et WebDriverAgent qu'Appium ajoute. Cela rend XCUITest plus rapide et très fiable. Le compromis est que XCUITest est limité à iOS et s'écrit en Swift ou Objective-C, tandis qu'Appium exécute le même test sur iOS et Android dans le langage de votre choix.
Devrais-je utiliser Appium ou XCUITest pour iOS ?
Cela dépend de vos objectifs. Pour des tests sur iOS uniquement où vous possédez le projet Xcode, XCUITest offre les exécutions natives les plus rapides et les plus fiables. Pour une couverture multi-plateforme, des tests dans un langage autre que Swift, ou des applications que vous ne pouvez pas reconstruire, Appium est le meilleur choix. Notez qu'Appium pilote iOS via XCUITest en interne, vous choisissez donc le niveau d'abstraction, et non un moteur différent.
Appium utilise-t-il XCUITest en interne ?
Oui. Sur iOS, Appium pilote l'application via le framework XCUITest d'Apple à l'aide d'un composant appelé WebDriverAgent. Ainsi, un test iOS Appium s'exécute en fin de compte par-dessus XCUITest, Appium ajoutant l'API WebDriver multi-plateforme au-dessus. C'est pourquoi Appium peut offrir la même interface de test pour iOS et Android tout en utilisant l'automatisation native de chaque plateforme en dessous.
XCUITest peut-il tester des applications Android ?
Non. XCUITest est un framework limité à iOS, développé par Apple. Pour tester Android, vous avez besoin d'Espresso (le framework natif de Google) ou d'Appium, qui pilote Android via UiAutomator2. 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 iOS et Android ?
Avec Appium, oui. Comme Appium implémente le protocole W3C WebDriver et abstrait les pilotes natifs (XCUITest sur iOS, UiAutomator2 sur Android), un seul test peut cibler les deux plateformes avec des modifications mineures des capacités. XCUITest ne peut pas le faire ; il est limité à iOS. Si la réutilisation multi-plateforme compte, Appium est le framework à choisir.
Ai-je besoin d'un Mac et de Xcode pour XCUITest ?
Vous avez besoin d'un Mac avec Xcode pour écrire et compiler les tests XCUITest en local. Pour les exécuter à grande échelle, vous n'avez pas besoin de votre propre parc de Mac : compilez une fois le .ipa de l'application et le .zip XCUITest, puis téléversez les deux vers TestingBot et exécutez sur de véritables iPhone et iPad dans le cloud. Les tests Appium ne nécessitent pas du tout Xcode de votre côté.
Puis-je exécuter Appium et XCUITest 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. XCUITest s'exécute via la CLI TestingBot : testingbot xcuitest app.ipa app-test.zip --device "iPhone 16" --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 XCUITest.
Related comparisons
Inscrivez-vous pour un essai gratuit
Exécutez Appium et XCUITest sur de véritables iPhone et iPad dans le cloud de TestingBot.
Essai gratuit