Overall Satisfaction with Appium
Creating a reusable and easily maintainable interface automation suite can be challenging. Work with iOS, your first thought is to use Xcode and write a suite alongside your unit and integration tests using Swift, but you don't need to. Utilizing Appium allows you to create a full-featured automation suite with one of many powerful languages other than Swift, yet access the full gamut of commands available XCUITest. Choosing Java, for instance, allows you to create a suite with JUnit and structure the project's execution with all the availability of Java's support libraries.
- Offers an excellent user interface application to assist in designing cases by previewing app screens and retrieving names of the elements you intend on interacting with
- Provides a generally accessible documentation suite on the web, which you will reference quite often
- Handles the connection between Appium's server and Xcode's tools during execution well
- Execution against live iOS devices can be quite slow. This will likely be improved in the near future
- Challenging for a new user to take on without guidance from a veteran
- Upgrading to a new version of Xcode before the tool is updated can render you suite useless, until an update is available
- For cost of ownership, the increase is positive times infinity, as it's free to install and use
- Lead time for suite development can be a negative, if not planned for during sprint planning
- Using Appium to execute tests in parallel across a cloud solution can improve CI/CD cycles by 100's of a percent
- Xcode
If you're an Apple developer, you use Xcode. It's practically a forced necessity. For system testing though, it doesn't have to be. You can have your development team focus on unit and integration tests in their platform and another team automate acceptance tests with a language they are more familiar with.