Adventures with Automation – Part 1 – Appium

That is the Appium tagline, and after a recent dance with this application I’ve concluded that there is certainly some truth to the claim. If the tag line contained “made simple” we might have more to quibble about.

In essence, it is a dream come true: a single, open source application that interfaces with real or simulated / emulated mobile devices. This is an app that recognizes the ever-popular Selenium WebDriver and enables powerful automation capabilities for App Quality Assurance testing.

Appium May be Awesome But It’s Not Easy

You will notice I added the comment about “made simple”. Appium is not easy to set up to run on a system. To be fair, this is not really the fault of Appium, but the fault of Open Source in general.

The first issue you run into is the choice of Operating System. While you have complete flexibility with developing on the Android platform, it is an entirely different story for iOS. It will probably surprise no one that iOS development is tied strictly to the Apple Mac Operating System. Even if you want to just use real iOS devices for automation, rather than the simulator that comes with xcode, you remain tied to the platform.

This was not a pleasing revelation to me. I had not used a Mac previously, and learning a new OS on top of learning test automation with Appium was a little daunting. You may think this is why I claimed that setting Appium up was not particularly simple. I ran into just as many headaches when I set it up on Windows to do some performance benchmarking.

What Is So Difficult About Setting Appium Up?

I think the major difficulty comes down to documentation. While the website does offer a guide, it is not overly verbose and is broken down into chunks. It explains setup for iOS and then refers you to the setup for Linux when you want to contemplate Android automation.

In today’s multi-platform world, the chances are that whatever you are developing will probably be produced for both Android and iOS, thus it seems more logical to set up everything in one walk through.

I won’t detail all the hoops that I ended up having to jump through to get things working, but I will offer one tidbit: you should install Homebrew and Homebrew Cask. Then use that package manager to install everything using brew to ensure the permissions are set correctly.

Solid Test Automation Functionality

Once you have Appium working, it proves to be a valuable tool. Ever wondered how to find the element tag of a mobile app as a QA engineer? Well the Appium Inspector can tell you. It even has a handy record function so it can rough out what you will want when you start writing your automation code.

The biggest gripes I have with the software is the time it can take to get the inspector launched and long delays when refreshing virtual devices to get the current app status. It takes some patience or a more powerful Mac!

The basic functionality, though, is quite solid when running the automation tests. It appears that any lag that happens when testing is caused by either the emulator or the real device. This seemed to be proved when running on high performance devices, which cut test execution time by more than 50%. At no time did Appium itself crash during test automation, which I considered to be quite impressive.

Appium is a Great Mobile Application Test Tool

Appium has been the best mobile app test automation tool that I have had the pleasure to interact with. If you set aside the difficulty in getting set up, once it is set up it is a breeze to use. The app has a strong open source community and is backed by SauceLabs who use it for their cloud-driven mobile automation service.

It is a tool that definitely gets the thumbs up from this QA professional.

The next article in the “Adventures with Automation” series will discuss Virtual vs. Reality – should you focus on emulators/simulators or go with real devices for testing?