What is Appium ?

Appium is an open source, cross-platform mobile app automation testing framework. Appium allows native and hybrid app testing and supports automation test on physical devices as well as emulators or simulators. It supports many code languages such as Python, PHP, Java, JavaScript and more. It’s also very similar to Selenium since based on web driver, which make it a preferred tool for QA engineers. It’s good fit to keep one code base for test automation between an iOS and Android app.

Appium’s Advantages

  • It’s language agnostic
  • Automates various types of mobile apps
  • Testers can use real devices, emulators, and simulators
  • Provides a record and playback tool
  • Benefit from your experiences with Selenium

Appium’s Disadvantages

  • Test runs are rather slow
  • You may run into compatibility issues with XCode
  • Lacks the capability to recognize images
  • Does not support older versions of android

What is Espresso?

Espresso is a tool developed by Google which is used for testing the UI of Android apps. It automatically synchronizes your test actions with the user interface of the mobile app and ensures that the activity is started before the tests run.
Although when you execute an Espresso test you will have shared state in separate tests and some flakiness. For this Google came up with a solution. Android Test Orchestrator is a Gradle test option that helps in testing and increases the reliability of our automated test suites.

If you use Gradle build tools in any version of Android Studio below 3.0 then you also have to update the dependency setup.

Espresso’s  Advantages

  • Frequent updates and provides enhanced support for newer Android versions
  • Integration with Gradle
  • The scalability of the test cycle is high
  • Reliable and fast
  • Provides Automatic Synchronization to make tests more stable

Espresso’s  Disadvantages

  • It requires access to the application source code
  • Knowledge of launching Android app on emulators required
  • Waits for the main UI thread to be idle before test actions are performed
  • Doesn’t support WebView.

What is XCUITest ?

XCUITest is Apple native testing framework. It supports Objective-C as well as Swift, this is the advantage to put iOS developers to start using it. I really like the fact it’s part of your same codebase, app and test sit together. It make it easy to developers to quickly test and see if unit tests and UI tests are still passing. Since XCUITest is based on accessibility ids, it’s easy to implement and maintain on both side of the code.

A good way to avoid flakiness in the code and make the test run faster is to use launch arguments. The best is that, once again, you can include the implementation on both side of your code: creating an enums with all launch arguments in the app, making it also accessible to the tests.

XCUITest’s Advantage

  • It executes iOS tests faster
  • It’s straightforward to set up and maintain
  • Xcode has a very intuitive recorder
  • Very good documentation and tutorials by Apple
  • Convenient if you are familiar with iOS app development

XCUITest’s Disadvantages

  • It’s obviously language-specific
  • You will need to learn the syntax if unfamiliar
  • This framework was built for developers rather than QA engineers
  • Requires application source code/IPA

Based on below table, you can decide which is the best suitable tool for your mobile application. It will give you the clear differentiation between the all above tools based on the unique aspects and characteristics.

Appium vs Espresso vs XCUITest
Appium vs Espresso vs XCUITest


Appium, Espresso and XCUITest all the tools can be used to perform UI testing on mobile app but if you have to choose one of them then you need to decide on the bases of your requirements. What kind of app is it and what kind of testing you want to perform.

Stay Tuned for such more interesting content. ☺

Related Post

Leave a Comment

Recent Posts