Why organizations should prefer native automation frameworks over third-party tools?

Shivam Gohel
4 min readDec 9, 2022

The rapid growth of Android Espresso for Android Automation and XCTest for iOS Automation has given us a sense of the market trends and the great use cases they come with.

There are many reasons why companies adopt (or should adopt) native automation technologies (Android Espresso, iOS XCTest) over third-party automation frameworks (Appium).

Developers and QA’s share the same code

Because these frameworks are provided by the same organization, leveraging gray-box testing, the development code and the automation code (along with test cases) lie in the same directory.

The testing code can leverage methods from development code and hopefully this can be done visa-versa. Because we can leverage development code, this eases the process of locating elements, perform actions (on the device), and improves the execution time too.

We are leveraging “gray box testing” at the best here.

Better Support. Better Community

Because these frameworks are maintained by the folks who really construct Android and iOS technologies, and because every mobile developer is aware of these technologies in some way, you get better query resolution.

These frameworks are updated every time something new comes out in Android, it can be new UI Library, or new ways of doing things, these changes get reflected in Android Espresso as well.
It may take some time for third-party technologies to adapt to these rapid changes.

Better code visibility

Because developers often contribute to the testing part as well, and that development and testing team share the code, it becomes easy for anyone to quickly jump in, and resolve any problems. Developers and QA’s here work in sync to improve, maintain and improvise the frameworks along with test cases.

Engineering managers specialized in either Android or iOS Technologies, also have an input when the code is shared by developers.

Faster Execution

The third party frameworks (like appium) follows a complex client-server architecture, and hence there are times when locating elements, executing actions (on the UI) becomes cumbersome and time-taking. While native automation supports locating and performing actions on elements out of the box, it’s becomes super-flexible to write test cases and locating elements is also easy.

Note: These differences in execution are very minute. You won’t see any difference if you are executing let’s say 100 or even around 400 test cases. Results come when you are executing more than 500 test cases.

Better code debugging. Better code maintainability

Debugging

Because we share the automation code with the development code, it becomes easy for us to maintain the project, and also keep the code up to date. Because developers understand the automation code here, they can contribute too to maintain the quality standards.

Also because we use the same development tools, IDE, and programming language, it boosts our ability to debug in to issues, and get views on a specific problem or a design implementation. Developers and QE’s work together to implement features, automation capabilities and hence it’s easy for everyone to maintain and add new functionalities.

Building an architecture requires time, effort and a lot of different factors plays in the equation. Things like available resources, technological limitations, current tech stack, resources experience with given technology, coding standards and many more. Enough R&D and data should be there to support the decision.

--

--

Shivam Gohel

I enable enterprises in launching high-quality products | M.S in Human Centered Design @ UMBC