{"id":39239,"date":"2022-06-15T09:53:24","date_gmt":"2022-06-15T16:53:24","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/?p=39239"},"modified":"2024-09-30T11:41:42","modified_gmt":"2024-09-30T15:41:42","slug":"how-to-scale-mobile-automation-testing","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/","title":{"rendered":"How to Scale Mobile Automation Testing Effectively"},"content":{"rendered":"\n<p><em>Learn the best way to scale mobile automation testing today. We&#8217;ll look at a history of traditional mobile automation testing strategies and discuss why each one is and isn&#8217;t effective, and then see why a new tool, the Native Mobile Library, is different.<\/em><\/p>\n\n\n\n<p>In today&#8217;s mobile testing world there are many different approaches to scaling our test automation for native mobile applications. Your options range from running locally with virtual devices (simulators\/emulators) or real devices, to a local mobile grid\/lab, to docker containers\/virtual machines, to remote cloud test services.&nbsp;<\/p>\n\n\n\n<p>As you\u2019re probably aware, testing native mobile applications can sometimes be a difficult endeavor. There are a lot of moving parts and many points of failure involved. To successfully execute, everything needs to work in complete harmony.&nbsp;&nbsp;<\/p>\n\n\n\n<p>For example, just executing a single Appium test you need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An Appium server &amp; all required dependencies installed<\/li>\n\n\n\n<li>A mobile device or emulator\/simulator<\/li>\n\n\n\n<li>Valid test code logic<\/li>\n\n\n\n<li>A compiled mobile application&nbsp;<\/li>\n\n\n\n<li>Application web service APIs running and stable (if applicable)<\/li>\n<\/ul>\n\n\n\n<p>Now let&#8217;s say you want to scale your tests across multiple devices for your cross-device validation needs. We\u2019re now introducing more points of failure for each device that is tested. A test on one device may execute just fine but on another, it may fail for various unknown reasons. We then often have to spend a vast amount of time investigating and debugging these failures to find the root cause.<\/p>\n\n\n\n<p>Let&#8217;s also consider that because we&#8217;re adding more devices we will likely need to add more conditional logic to our test code to accommodate these different devices. We may need to add conditionals for different device resolutions\/screen sizes, OS versions, orientations, scroll views, locators\/selectors, or maybe gestures for specific devices. This all adds more coded logic to our test suite or framework we need to maintain and thus refactor in the future when our application changes.&nbsp;<\/p>\n\n\n\n<p>Because of these reasons and\/or perhaps others, many people often don\u2019t scale their mobile test coverage across different devices. Either it might introduce more test maintenance, more test flakiness, a longer test execution time, or access to different devices is not possible. Crossing fingers and hoping for the best has been the approach for many\u2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-scaling-mobile-automation-testing\">Scaling Mobile Automation Testing<\/h2>\n\n\n\n<p>Now let&#8217;s cover some common mobile test scaling approaches. I\u2019ll go over the benefits and drawbacks of each of these approaches and finally introduce you to a new modern approach and technology, the <a href=\"https:\/\/app14743.cloudwayssites.com\/solutions\/mobile-testing\/\" target=\"_blank\" rel=\"noreferrer noopener\">Applitools Native Mobile Library<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sequential-execution\">Sequential Execution<\/h3>\n\n\n\n<p>The simplest but also <em>the most inefficient and slowest approach<\/em>. The example diagram below shows executing two tests (Test A &amp; Test B) executing across three different mobile devices.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"805\" height=\"1241\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Sequential-Execution.jpg\" alt=\"\" class=\"wp-image-39240\" style=\"width:604px;height:931px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Sequential-Execution.jpg 805w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Sequential-Execution-195x300.jpg 195w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Sequential-Execution-664x1024.jpg 664w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Sequential-Execution-768x1184.jpg 768w\" sizes=\"(max-width: 805px) 100vw, 805px\" \/><\/figure><\/div>\n\n\n<p>As stated before, this is the simplest approach but very inefficient and slow. Perhaps some people aren\u2019t aware of different or better approaches. Or maybe some bad test practices are being used such as one test (Test B) is dependent on (Test A) to complete in order to proceed. Generally, a good test practice is to never have any tests dependent on another to execute. Test suites\/frameworks should be architected in a way to run any test in any order by utilizing test hooks\/annotations, database seeding, mocking, or API test data injection to set up each test independently.&nbsp;<\/p>\n\n\n\n<p>For example, say I have an app that has a shopping cart and I have a test \u201cAdd items to shopping cart\u201d which failed due to a bug in the app. If I relied on that test to then run my \u201cshopping cart\u201d specific tests, I couldn\u2019t. That is where good test architecture comes into play by setting up each test independently by some of the methods mentioned above or other means.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-parallel-device-execution\">Parallel Device Execution<\/h3>\n\n\n\n<p>We live in a fast-paced CI\/CD world these days, and feedback loops that are as fast as possible are crucial. So what can you do to help get this test feedback ASAP? <strong>Parallelization!&nbsp;<\/strong><\/p>\n\n\n\n<p>In this scenario, we are parallelizing the devices needed for cross-device validation. It\u2019s however still inefficient since the tests themselves are running sequentially. But still much better than the former sequential approach.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"1024\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-device-execution-849x1024.jpg\" alt=\"\" class=\"wp-image-39241\" style=\"width:425px;height:512px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-device-execution-849x1024.jpg 849w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-device-execution-249x300.jpg 249w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-device-execution-768x927.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-device-execution.jpg 910w\" sizes=\"(max-width: 849px) 100vw, 849px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-parallel-test-execution\">Parallel Test Execution<\/h3>\n\n\n\n<p>This approach to mobile automation testing is a bit more efficient as it\u2019s parallelizing the tests in your test suite. Ultimately it should reduce the execution time and also promote good test practices keeping tests independent from one another to execute. However, the inefficiency now is that each device is sequentially tested.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"1024\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-execution-660x1024.jpg\" alt=\"\" class=\"wp-image-39242\" style=\"width:330px;height:512px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-execution-660x1024.jpg 660w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-execution-193x300.jpg 193w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-execution-768x1192.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-execution.jpg 802w\" sizes=\"(max-width: 660px) 100vw, 660px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-parallel-test-amp-parallel-device-execution\">Parallel Test &amp; Parallel Device Execution<\/h3>\n\n\n\n<p>This is the <em>most efficient and fastest traditional approach<\/em> as it parallelizes both your test suite and devices for cross-device validations. However, it comes at a cost of machine resources, cloud concurrency or minutes usage on license limits (if applicable), and added complexity in your test framework having to manage different sets of parallelization. Some frameworks have this architecture \u201cbaked\u201d into them but for many others, it\u2019s up to the developer\/tester (or whomever) to implement this logic themselves.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"1024\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-parallel-device-execution-849x1024.jpg\" alt=\"\" class=\"wp-image-39245\" style=\"width:425px;height:512px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-parallel-device-execution-849x1024.jpg 849w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-parallel-device-execution-249x300.jpg 249w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-parallel-device-execution-768x927.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Parallel-test-parallel-device-execution.jpg 910w\" sizes=\"(max-width: 849px) 100vw, 849px\" \/><\/figure><\/div>\n\n\n<p>With that said, all of the approaches above come with but are not limited to some of the challenges below:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Susceptible to continual dependency and versioning conflicts.&nbsp;<\/li>\n\n\n\n<li>Any single device (or devices) either locally or on a cloud test service can have issues at any given time resulting in test flakiness.<\/li>\n\n\n\n<li>Network or latency timeout issues can occur.<\/li>\n\n\n\n<li>Service crashes or issues occurring on any running parallel process or thread.<\/li>\n\n\n\n<li>Added test code complexity for parallelization.<\/li>\n\n\n\n<li>Added test code conditionals to accommodate different device form factors\/resolutions and application layouts.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-applitools-native-mobile-library\">Applitools Native Mobile Library<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"716\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/future-is-now.jpg\" alt=\"\" class=\"wp-image-39271\" style=\"width:500px;height:358px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/future-is-now.jpg 1000w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/future-is-now-300x215.jpg 300w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/future-is-now-768x550.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">The Future Is Now!<\/figcaption><\/figure><\/div>\n\n\n<p>Now that we\u2019ve talked about the typical traditional approaches to mobile automation testing, let&#8217;s talk about the next generation of mobile cross-device testing using the<a href=\"https:\/\/app14743.cloudwayssites.com\/docs\/api-ref\/sdk-api\/appium\/nml\/\" target=\"_blank\" rel=\"noreferrer noopener\"> Applitiools Native Mobile Library<\/a>! Our Native Mobile Library (NML) uses a new technological approach to asynchronously validate your native mobile application in parallel and <strong><em>easily<\/em><\/strong> across many different devices in a single execution.&nbsp;<\/p>\n\n\n\n<p>What this means is the parallelization of devices is handled on the Applitools NML. Since it\u2019s asynchronous you are not waiting on the device to connect or the test results, which frees your tests to execute as fast as possible!&nbsp;<\/p>\n\n\n\n<p>Some key benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Execute your mobile tests on just one device (emulator, simulator, or a real device)!\n<ul class=\"wp-block-list\">\n<li>Supports <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/appium-vs-espresso-vs-xcui\/\">Appium as well as XCUI, and Espresso<\/a> frameworks for iOS and Android native applications.&nbsp;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Simplistic test authoring! \u200b\u200b\n<ul class=\"wp-block-list\">\n<li>Create tests with only one device and form factor\/app layout in mind! You won\u2019t need to add additional logic in your code for different devices or resolutions.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Less code maintenance.\n<ul class=\"wp-block-list\">\n<li>No extra coded conditionals for specific devices or supporting multiple execution environments (Local and Cloud). Tests only need to work on any single device and the environment you execute in.<\/li>\n\n\n\n<li>Visually Perfect with <a href=\"https:\/\/app14743.cloudwayssites.com\/visual-ai-and-deep-learning\/\">Applitools Visual AI<\/a> to perform full-page mobile UI validations. <strong>No more coded UI assertion logic!<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Fast and easy cross-device scaling without complicated multi-parallelization logic and achieve 10x faster executions compared to traditional approaches.<\/li>\n\n\n\n<li>Fewer points of failure.\n<ul class=\"wp-block-list\">\n<li>No longer is there a need to execute the same test redundantly across different devices increasing test flakiness and execution time. Instead, run once on any real device or simulator\/emulator and get validations across many devices.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Fast CI\/CD feedback loop.\n<ul class=\"wp-block-list\">\n<li>Release faster with an assurance of cross-device coverage and your application UI is visually perfect.&nbsp;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>No Appium version pinning.\n<ul class=\"wp-block-list\">\n<li>Use any version of Appium that works for you and your tests.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Secure!\n<ul class=\"wp-block-list\">\n<li>No need to upload an application to 3rd party cloud test vendors and risk exposing sensitive proprietary data and\/or information.&nbsp;&nbsp;<\/li>\n\n\n\n<li>Tests can run locally on your network without opening firewall access or proxies.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Now let\u2019s look at some example execution architectures using the Applitools Native Mobile Grid!&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-asynchronous-parallel-device-execution\">Asynchronous Parallel Device Execution<\/h3>\n\n\n\n<p>This next diagram is similar to the traditional Parallel Device Execution we talked about above. However, the parallelization is offloaded to the NMG to handle and no additional logic for parallel threads or processes is required. This approach is still not the most efficient since each test is running sequentially but it\u2019s lightyears faster than the traditional approach.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"1024\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-device-execution-932x1024.jpg\" alt=\"\" class=\"wp-image-39246\" style=\"width:466px;height:512px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-device-execution-932x1024.jpg 932w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-device-execution-273x300.jpg 273w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-device-execution-768x844.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-device-execution.jpg 954w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-asynchronous-parallel-test-execution\">Asynchronous Parallel Test Execution<\/h3>\n\n\n\n<p>Out of all the approaches for mobile test automation we\u2019ve discussed thus far, this next example is by far the most superior, efficient, and <strong><em>fastest approach possible<\/em><\/strong> to scaling your native mobile test coverage! The added benefit of this approach is your entire test suite execution time will now only take as long as it takes to run your slowest test in your suite!&nbsp;<\/p>\n\n\n\n<p>This example is similar to the traditional Parallel Test &amp; Parallel Device Execution above but the device parallelization is now offloaded to the NMG and handled asynchronously.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"1024\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-test-execution-932x1024.jpg\" alt=\"\" class=\"wp-image-39247\" style=\"width:466px;height:512px\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-test-execution-932x1024.jpg 932w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-test-execution-273x300.jpg 273w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-test-execution-768x844.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/Async-parallel-test-execution.jpg 954w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-code-example-using-mobile-native-library-for-mobile-test-automation\">Code Example using Mobile Native Library for Mobile Test Automation<\/h3>\n\n\n\n<p>The below code is an example using Appium Java, testing an iOS native application. For those of you familiar with the <a href=\"https:\/\/app14743.cloudwayssites.com\/platform\/ultrafast-grid\/\">Applitools Ultrafast Test Cloud<\/a> for desktop and mobile web applications, this should look very similar. All we need to do in the test code is define the devices we want to validate for our cross-device coverage needs. In this case, we\u2019ve specified 15 iOS devices we\u2019ll validate in the same execution time as it takes to run the tests on just one device! Additional settings such as setting the OS version and orientation per device can be specified (not shown).<\/p>\n\n\n\n<pre class=\"wp-block-code lang-java\"><code class=\"\">public class iOSNativeUFGTest {\n   private WebDriverWait wait;\n   private IOSDriver driver;\n   private VisualGridRunner runner;\n   private Eyes eyes;\n\n   private static IOSDriver startApp() throws Exception {\n       DesiredCapabilities capabilities = new DesiredCapabilities();\n       capabilities.setCapability(\"platformName\", \"iOS\");\n       capabilities.setCapability(\"automationName\", \"XCUITest\");\n       capabilities.setCapability(\"deviceName\", \"iPhone 12 Pro Max\"); \/\/Launch a single local simulator or real device\n       capabilities.setCapability(\"platformVersion\", \"15.4\");\n       capabilities.setCapability(\"app\", \"\/Users\/justin\/Desktop\/MyApp.app\");\n       return new IOSDriver&lt;&gt;(new URL(\"http:\/\/localhost:4723\/wd\/hub\"), capabilities);\n   }\n\n   @Before\n   public void setup() throws Exception {\n       runner = new VisualGridRunner(new RunnerOptions().testConcurrency(15));\n       eyes = new Eyes(runner);\n       eyes.setApiKey(System.getenv(\"APPLITOOLS_API_KEY\"));;\n\n       Configuration conf = eyes.getConfiguration(); \/\/Configure the 15 devices we want to validate asynchronously\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_11));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_11_Pro));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_11_Pro_Max));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_12));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_12_Pro));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_12_Pro_Max));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_12_mini));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_13_Pro));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_13_Pro_Max));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_XS));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_X));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_XR));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_11));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_8));\n       conf.addMobileDevice(new IosDeviceInfo(IosDeviceName.iPhone_7));\n\n       eyes.setConfiguration(conf);\n\n       driver = startApp();\n   }\n\n   @Test\n   public void iOSNativeTest() throws Exception {\n       eyes.open(driver, \"My Native App\", \"Login View\"); \/\/Start a visual test\n       eyes.check(\"Login\", Target.window().fully(true)); \/\/Capture the mobile UI view\n       eyes.closeAsync(); \/\/End the visual test\n   }\n\n   @After\n   public void tearDownTest(){\n       \/The \/results object contains validation results on all 15 devices which can then be asserted for visual and accessibility checks\n       TestResultsSummary results = runner.getAllTestResults(false); \n       eyes.abortAsync();\n       driver.quit();\n   }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>Now for the first time ever, native mobile developers can perform continuous testing, running their entire test suites on every pull request or code push across many different devices to get immediate quality feedback at once. Just like web application developers have for many years now!&nbsp;<\/p>\n\n\n\n<p>Hopefully, this article illustrated the benefits and superiority of the Applitools Native Mobile Library to other traditional approaches for mobile automation testing. As you now can see how simple and efficient it is to expand your cross-device coverage with the Native Mobile Library there are no more excuses not to. So what&#8217;s stopping you?!&nbsp;<\/p>\n\n\n\n<p>How do you get started with the Native Mobile Library you may ask? To start using the Native Mobile Library, simply sign up at the link below to request access. You can read more about the Applitools Native Mobile Grid <a href=\"https:\/\/app14743.cloudwayssites.com\/platform\/native-mobile-grid\/\">on our website<\/a>.<\/p>\n\n\n\n<p>&nbsp;Happy testing!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn about mobile automation testing strategies and why each is and isn&#8217;t effective, and what the best way is to scale mobile automation testing today.<\/p>\n","protected":false},"author":25,"featured_media":39277,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12271],"tags":[12783,10103,16714,10152,12690],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Scale Mobile Automation Testing Effectively - Applitools<\/title>\n<meta name=\"description\" content=\"Learn about mobile automation testing strategies and why each is and isn&#039;t effective, and what the best way is to scale mobile automation testing today.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Scale Mobile Automation Testing Effectively\" \/>\n<meta property=\"og:description\" content=\"Learn about mobile automation testing strategies and why each is and isn&#039;t effective, and what the best way is to scale mobile automation testing today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-15T16:53:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-30T15:41:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"831\" \/>\n\t<meta property=\"og:image:height\" content=\"542\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Justin Ison\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Justin Ison\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\"},\"author\":{\"name\":\"Justin Ison\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/83f4467415d57a7fc1a1115e8154555c\"},\"headline\":\"How to Scale Mobile Automation Testing Effectively\",\"datePublished\":\"2022-06-15T16:53:24+00:00\",\"dateModified\":\"2024-09-30T15:41:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\"},\"wordCount\":1748,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg\",\"keywords\":[\"Mobile\",\"Mobile App Testing\",\"Native Mobile Library\",\"Test Automation\",\"Test Engineers\"],\"articleSection\":[\"Getting Started\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\",\"name\":\"How to Scale Mobile Automation Testing Effectively - Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg\",\"datePublished\":\"2022-06-15T16:53:24+00:00\",\"dateModified\":\"2024-09-30T15:41:42+00:00\",\"description\":\"Learn about mobile automation testing strategies and why each is and isn't effective, and what the best way is to scale mobile automation testing today.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg\",\"width\":831,\"height\":542},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Scale Mobile Automation Testing Effectively\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/83f4467415d57a7fc1a1115e8154555c\",\"name\":\"Justin Ison\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/37c37fdd95c8a2f9871acf394fa2e03b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/37c37fdd95c8a2f9871acf394fa2e03b?s=96&d=mm&r=g\",\"caption\":\"Justin Ison\"},\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/justin_ison\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Scale Mobile Automation Testing Effectively - Applitools","description":"Learn about mobile automation testing strategies and why each is and isn't effective, and what the best way is to scale mobile automation testing today.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/","og_locale":"en_US","og_type":"article","og_title":"How to Scale Mobile Automation Testing Effectively","og_description":"Learn about mobile automation testing strategies and why each is and isn't effective, and what the best way is to scale mobile automation testing today.","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2022-06-15T16:53:24+00:00","article_modified_time":"2024-09-30T15:41:42+00:00","og_image":[{"width":831,"height":542,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg","type":"image\/jpeg"}],"author":"Justin Ison","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Justin Ison","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/"},"author":{"name":"Justin Ison","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/83f4467415d57a7fc1a1115e8154555c"},"headline":"How to Scale Mobile Automation Testing Effectively","datePublished":"2022-06-15T16:53:24+00:00","dateModified":"2024-09-30T15:41:42+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/"},"wordCount":1748,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg","keywords":["Mobile","Mobile App Testing","Native Mobile Library","Test Automation","Test Engineers"],"articleSection":["Getting Started"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/","name":"How to Scale Mobile Automation Testing Effectively - Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg","datePublished":"2022-06-15T16:53:24+00:00","dateModified":"2024-09-30T15:41:42+00:00","description":"Learn about mobile automation testing strategies and why each is and isn't effective, and what the best way is to scale mobile automation testing today.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2022\/06\/scale-mobile-automation-testing_831x542.jpg","width":831,"height":542},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/how-to-scale-mobile-automation-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Getting Started","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/getting-started\/"},{"@type":"ListItem","position":3,"name":"How to Scale Mobile Automation Testing Effectively"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/83f4467415d57a7fc1a1115e8154555c","name":"Justin Ison","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/37c37fdd95c8a2f9871acf394fa2e03b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/37c37fdd95c8a2f9871acf394fa2e03b?s=96&d=mm&r=g","caption":"Justin Ison"},"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/justin_ison\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/39239"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=39239"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/39239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/39277"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=39239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=39239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=39239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}