Announcement: New Java and Selenium batch is starting from 30th March 2020, Please enroll ASAP!

The Mobile Testing Pyramid

The Mobile Testing Pyramid


Mobile testing involves more complexity when you compare it to web UI testing. A few examples of mobile testing challenges:
mobile testing challenges
As you can see, mobile testing not only has to cover the UI aspects, but also the compatibility of hardware, network connectivity, operation system flavors (especially on Android), etc.
When most people start with testing for mobile, they tend to start with getting a few real devices and perform exploratory testing manually. Over time, the number of devices will grow, because actual customer feedback comes in describing that their app does not work properly in certain situations on specific devices. Does this sound familiar?
In order to reach fast feedback and lower amounts of the manual testing, a better usage of available tools is necessary.

Mobile Test Pyramid

Based on my personal mobile testing experience, I came up with the mobile pyramid strategy. Of course, it was inspired by the test pyramid of Mike Cohn ('Succeeding with Agile', 2009). But this doesn't quite cover the detail that is needed for a good mobile testing strategy.
The mobile test pyramid has 3 levels:
  • Real devices
  • Mobile simulators & emulators
  • Desktop browsers (using mobile simulation)
mobile test pyramid
Identical to the generic test pyramid, the broader the layer in the pyramid, the more tests you should have which cover a wider range of complexity.
Here are the focus areas for each layer, along with their pros and cons as I see them.
Desktop browsers: mobile testing on desktop browsers
Focus areaDescription
Functional system testingIsolated browser tests performing full functional validations
Responsive designResizing browsers and toggling user agents
Cross-browserUse equivalent desktop browsers
Overall visual layoutNo extensive visual checks because the rendering is different than devices


  • Fast execution: Matter of milliseconds to launch a browser, also headless execution is possible.
  • Scalable: Easily set up 10+ browser instances per machine.
  • Cross platform: Ability to use browsers on different operating systems.


  • Mobile simulation uses the desktop browser engine: Mobile simulation in desktop browsers is still using the desktop browser.
  • No native integration: No native keyboards, incoming calls, etc.
  • Just not a device... Incredibly fast, but still not a real device.
Mobile simulators/emulators: closer to the actual mobile experience...
NOTE: Only applicable for iOS and Android.
Focus areaDescription
Functional end-user flowsClick paths throughout the application
Native API integrationGPS injection, file attachments, incoming calls etc.
Visuals (vanilla only)Use equivalent desktop browsers
Overall visual layoutEmulators are limited to vanilla versions
Touch interactionsTouch interactions such as swipe and tap comes closer to the user experience of a device than browser emulation


  • Easy to set up: Simulators/emulators are easy to set up, just download, install, and run.
  • Scalable: Virtualization means scalable and also running in parallel on one machine.
  • Native API integration: Ability to test native APIs such as incoming calls and GPS injection.
  • Simulators or Intel-based emulators are fast: Simulators are fast, because they only have to simulate the software part. Emulators based on the Intel architecture are fast.
  • Debugging possibilities: Easy to debug simulator/emulators, already hooked up to the machine to access logs.


  • Vanilla versions only: Manufacturer’s skins are available, but the device behavior is still based on what comes stock.
  • No real resource usage: CPU/memory usage of machine in case of simulators. Emulators try to simulate the hardware.
  • No real interoperability: Connectivity with NFC, Bluetooth, network connections.
  • Slow ARM-based emulators: Emulators based on the ARM architecture are slow, which is the main architecture for Android devices.
  • Inaccurate color display in light/dark: Contrast/brightness inaccurate in light/dark environment.
Real devices: the real thing...
Focus areaDescription
UsabilityValidating usability such as actual click areas, touch actions and voice over
PerformanceCPU/memory usage, battery, network strengths
Native API integrationInterruption (incoming calls, push notifications), resource fighting (camera, GPS), NFC, Bluetooth
VisualsFocus on devices which are not available as simulators/emulators
Manufacturer’s sauceReal OS from manufacturers, e.g. Samsung's TouchWiz and built-in browsers


  • Native APIs in real conditions: Ability to test native APIs not only with injections for automation, but also actual NFC touch for example.
  • Can be faster than emulators: Some real devices are just faster than emulators due to the simulation of hardware, especially compared to the ARM-based emulators.
  • Just the real thing... Actual network conditions, battery/CPU/memory usage, manufacturer’s secret sauce on top of the OS.


  • Costs: Real devices come with a price, usually you pay per device/cradle.
  • New device means procurement: A new device is usually not available on-the-fly, even with cloud solutions. E.g. when the new iPhone comes out, it's not available immediately to procure. In the meantime, the iOS simulator would already be available.
  • Development iOS build required for automation: iOS apps need to be signed with Development Distribution Certificate and Provisioning Profile for automation.


There are loads of trade-offs when it comes to mobile testing. But by learning to use all layers of the mobile testing pyramid to your advantage (leveraging desktop browsers, mobile simulators/emulators, and real devices together) you can gain the fast feedback that is required in modern CI/CD environments. It's just a matter of focusing on the right things in each layer for your context.

Naveen AutomationLabs


  1. Hi Naveen,

    Your posts and videos are amazingly awesome. Can you please cover how to do responsive testing with the selenium.

    It will be really helpful. Thanks in advance

  2. I would like to say that this blog really convinced me to do it! Thanks, very good post. The Sims Mobile Hack

  3. I’m going to read this. I’ll be sure to come back. thanks for sharing. and also This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article... unlockmobiledevice

  4. 3 Mobile phone deals are considered as the best way to buy high-end or other handsets. Under the exciting deals the users are viable to avail various gifts as well as lucrative services.

  5. These are not the only good blog posts – there were a lot of really great posts written. We just singled these out to give everyone a sense of our expectations
    Well written. I think you have a great blog. I just like the valuable info you provide for your articles. Keep blogging. A good blog always comes-up with new and exciting information and while reading I have feel that this blog is really have all those quality that qualify a blog to be a good one.

  6. Hi Naveen.. your tutorials are awesome.. can you post some on mobile automation

  7. Hello,

    Your vast knowledge on tools & technologies is really awesome. Most importantly your way of imparting that knowledge.
    Can you start lessons on Mobile testing Automation - especially Appium tool?
    Thanks & Regards

  8. Good work Dude !!...This blogs gives basic testing information... very useful for freshers(learner)..." I just wondering if you could show some insight on the difference between test scenario and test cases based on above test ideas.

    Selenium Automation testing

  9. I have read all the comments and suggestions posted by the visitors for this article are very fine,We will wait for your next article so only.Thanks! Mi mobile phones

  10. However, while scaling a business to the extent of the greatest online retailers may not be likely, utilizing the equivalent inventive armada the board devices unquestionably is.meilleur gps

  11. APK Editor Pro Free Download from here apk editor

  12. Great knowledge, do anyone mind merely reference back to it alamat vidio bokep

  13. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.

  14. In an effort to make vehicles more safe and user friendly, mobile technology is being developed. Drivers will not have to wait very long to get this new technology.  Can You Play Ps3 Games On Ps4

  15. This article demystifies 4G mobile technologies. It talks about the technical details of this new technology. Persona 5 Fusion Guide

  16. Many people realize that mobile solutions are primarily beneficial for suppliers and business owners - unfortunately, not many people realize that this technology can also be used to greatly increase the productivity of sales people. Through specialty QR codes, mobile Smartsites, and SMS messaging, Tumblr Safe Mode

  17. In most of the early childhood programs and schools, technology will be part of the learning landscape of the future cod mobile hack make sure this new technology is used effectively, we must assure that teachers are fully trained and supported, and that the programs and internet sites used are developmentally appropriate, non-racist, non-biased against people with disabilities, and respect religious differences.

  18. A moving tool kit is a significant expansion to your working environment. It gives space that will keep your tools and little gear all odin

  19. If you have private information leaked somehow, and only you know about it, this is a good warning sign that someone was listening in on your phone and taking down your information.programa para hackear celular

  20. Market reputation and experience speak volumes about the credibility of a mobile app development company.Mobile App development


Featured Post

How to control Chromedriver using curl

How to control Chromedriver using curl Here is how to use Chromedriver without libraries like  selenium-webdriver . This can be useful ...