Let me begin this post by throwing out some buzzwords: DevOps! Continuous Delivery! Agile! There. Now that we’ve dispensed with SEO pleasantries we can have an honest chat. There are a lot of choices when it comes to setting up your mobile testing framework and environment. Chief among these choices is what to rely on as your automation engine: Appium, XCUITest, Espresso, Earl Grey, Detox... the list goes on. Which technology to base your test suite on is a fundamental and important choice, because once you’ve got a bunch of code sunk into using one of these engines, it’s not easy to switch.
The value propositions of these tools are different enough that it has led some to announce the "fall of Appium" in favor of something newer. Certainly, XCUITest and Espresso have grown in popularity as Apple and Google respectively have offered them to their developers. The advantage of these frameworks is their tight integration with the code which application developers themselves are writing. But it’s a mistake to think of Appium as fundamentally competing with XCUITest and Espresso. In fact, Appium is built on XCUITest (for iOS)! And there is an Espresso driver in beta, available for anyone to try out right now. One of Appium's core value propositions is precisely that it doesn’t compete head-on with the vendor-provided tools. Appium is three things:
- A WebDriver interface on top of whatever the best automation tech du jour is (XCUITest, Espresso, etc...).
- A collection of helpful functionality built on top of these tools, to enable an extended feature set or to cover over any flakiness or flaws in the underlying engine.
- A community of practitioners that embody an incredible amount of knowledge about mobile testing.
Of course, Appium aims to be performant, stable, extensible, and a host of other good qualities. But these three areas of value above should not be overlooked. Does this mean Appium is the mobile automation silver bullet? Of course not. Like every tool, Appium has its pros and cons. Appium has decided it's of utmost importance to give you a WebDriver interface which enables you to write tests in any language and leverage your Selenium test architecture and knowledge. If you're a single-person mobile dev shop who writes only iOS apps, you're much better off sticking with the tools Apple has provided in the form of Xcode and XCUITest. If you’re a large organization whose expertise spans multiple languages, and you have the goal of test coverage for your cross-platform mobile app, Appium is going to provide the all-around best experience.
It's important when putting together your mobile automation strategy, as when starting any project, to really understand the space your organization is in and the consequences different tool choices will have. The dilemma is not between Appium or XCUITest, really (for example with iOS); it’s about which kind of interface you want to use to talk to XCUITest. Do you want to write Swift or Objective-C code and have app developers own all the tests? Then XCUITest is probably going to be the best fit for you. In other scenarios, Appium's value proposition is extremely compelling. Not to mention that your Appium tests have the likelihood of outlasting a particular underlying engine, since we maintain a stable interface on top of tool differences, for example between iOS UIAutomation and XCUITest. Native users of Apple’s tools had to completely rewrite their entire test architecture and every single test when XCUITest was released. Appium users in most cases only had to make superficial changes.
There is thus no need to speak about the decline of Appium and the rise of X other tool. Appium's strategy is broad enough to handle any changes in the market of automated testing tools, subject to the limitations of the ingenuity of the Appium devs. So far, we've been able to accommodate just about every automation engine, and look forward to keeping in step with that vision as the years go on. Appium is also about more than mobile testing - apps are everywhere, not just on our phones. Of course, at any given point, Appium is only as strong as the code contributed by its community. As an open source project, Appium is in a very different category than XCUITest and Espresso, with its own set of pros and cons to go with that. One of the remarkable benefits of Appium's open source nature is the community of users that has developed around Appium, and their collective automation wisdom. Our forums are full of one-on-one help and know-how. The real "decline of Appium" would happen if this community evaporated, and our ongoing efforts keep that possibility at bay. On this last note, I invite you as a mobile testing aficionado to join with us in fixing and stabilizing the world of mobile automation, making it globally accessible to everyone, no matter how quickly the underlying engines like XCUITest and Espresso come and go. This, in my humble opinion, is the best way to keep mobile automation from becoming a zero sum game.
Want to catch up with Jonathan and other Appium Project team leaders? Make sure to join us in London on April 6 for the first-ever AppiumConf. Learn more here or sign-up today (optional workshops are also available on April 5).
Jonathan has been making things out of code as long as he can remember. Jonathan is the architect and project lead for Appium, the popular open source automation framework. He is also the founding Principal of Cloud Grey, a consulting firm devoted to helping clients successfully leverage the power of Appium. He has worked as a programmer in tech startups for over 15 years, most recently as Director of Open Source at Sauce Labs, but is also passionate about academic discussion. Jonathan has master’s degrees in philosophy and linguistics, from Stanford and Oxford respectively. Living in Vancouver, he’s an avid rock climber, yogi, musician, and writer on topics he considers vital, like the relationship of technology to what it means to be human.