BLOG

Mobile Web App Automation Testing: the first scalable point-and-click mobile solution

Functionize now extends its continuous QA platform of functional software testing to include mobile web app testing. This natural step expands the reach of Functionize’s cloud-powered automation testing to include myriad mobile devices and diverse display options. Functionize wields Google’s Nested Virtualization to execute test scenarios on all major mobile device types including iPhone and Samsung. The great benefit is that the advanced machine learning techniques we deploy to catch visual rendering errors now encompass the mobile device world. This progress further enhances QA engineers’ methods of ensuring the efficient flow of software development through the continuous integration, continuous testing, and continuous deployment pipeline. Let’s dive right into the details and get an inside picture of how a mobile test case works with Functionize.

First, Functionize is true automation testing which runs simultaneous emulations of test cases in all browsers on virtual machines which are dynamically scalable for load testing. Complex test scenarios run in Chrome and Firefox on hundreds of VMs in minutes and catch unanticipated web element rendering errors quickly. Functionize is 100% portable and is capable of testing all web applications because it is a browser extension with no installation overhead nor any compatibility issues. Now you can deploy all this power to automate the testing of your web applications on all mobile devices as easily as using any desktop platform. And crucially no scripting is required. How do we deploy this power to mobile app testing?

Functionize learns to act and react like your mobile users!

Functionize opens with your web app in your browser and actually observes and remembers your assertions and test gestures. After watching you develop test cases, Functionize uses diverse and sophisticated new machine learning techniques to actually learn and predict errors and failures and to assist you in the creation of a perfect user experience by notifying you during the CI/CT/CD development cycle. Functionize notices when web elements move, when menus change and even learns to recognize dynamic elements in order to anticipate your needs. You no longer need to explicitly code anomalies with scripts in various IDEs; Functionize does everything for you and provides you with alerts when a problem needs attention.

Easy and Accurate Mobile Device Test Cases

Functionize runs a test case in the browser exactly in the same way that it runs on the mobile device. We use Google’s User-Agent Switcher extension to develop test cases for specific mobile devices. To record a test case for an iPhone 6 just select the phone from the menu. As we record the test going forward the browser mimics the phone and renders the page exactly as if it is running an iPhone mobile layout. This includes the scaling of dimensions to run successfully on the iPhone display. Meanwhile, Functionize applies its breakthrough techniques to watch and learn from your gestures. So, instead of having to manually simulate a mobile display, we have the capability to have these diverse displays scaled and rendered for us to fit any target device.

Features of Mobile App Testing

Functionize mobile testing makes possible the complete testing and evaluation of mobile devices running your app without the necessity of running tests on the individual devices themselves. This is because Functionize perfectly simulates the behavior of each device’s behavior in the context of your web application. Naturally, scaling and device dimensions are essential to this success. In addition to scaling, we build on Google’s Nested Virtualization to emulate the CPU and other hardware specifically for testing devices which host your web app. Here also we realize the need for precision hardware virtualization.

Functionize’s mobile device testing uses multiple levels of virtualization. We start by implementing the test in a virtual machine and then layer in the virtualization of the specified device’s hardware using Google’s Nesting Virtualization.

Up to the minute updates for new devices

Functionize continually rolls out support for new mobile devices. New tablets and phones in the Android and iPhone markets and many others are supported. We are currently delivering support for the new iPad and have completed a full range of internal testing for the device. We cooperate with manufacturers to anticipate the newest hardware because we know that your innovations are likewise intertwined with breakthrough technology. When a new device hits the market we are prepared with support for you to test and deploy your apps.

Breaking Out Devices

A common question about Functionize support is about device browser support for newer iPhones such as iOS 8 for example. Functionize testing is not dependent on the browser running in the mobile device, but instead, it is device dependent.

Suppose you are running test cases to compare iOS 8 and the iPad. Functionize observes substantial differences in the page layouts. For this reason, we record test cases based on unique device hardware features so that we can rapidly scan and adjust the aesthetic and functional presentation elements of any web application.

The variation among devices leads us to the crucial question of how much tolerance or margin there is when testing more than one device with a single assertion. In other words, how do we know when a separate test is required for a unique feature of a given device? One answer is, it may turn out that different screen sizes result in the same layout; but if two different screen sizes result in different user experiences then a separate test case must be recorded.

When we find empirically that there is a substantial difference in the layout between an iPhone 8 and an iPad we need to develop a separate test scenario for each device. Figure 1. Shows Functionize conducting a test scenario wherein Chrome’s Responsive View (in Developer tools menu) simulates the iPhone 8 display. Here you can see how crisp and cleanly Functionize harmonizes with the browser to enable accurate mobile app testing on a desktop platform. iPhone 8 and iPad render with a significant difference in the layout, suggesting that we break these devices out into separate test scenarios.

automation testing

Figure 1. Rendering Test for iPhone 8

This means that, from one device to the next, it is primarily the rendering and layout of the device which is targeted for detecting visual rendering failures. In this way, Functionize is capable of running tests on all new hardware up to the minute of deployment and delivery. We constantly track firmware updates to guarantee the precision rendering that you require for the best possible user experience of your web applications.

Efficient Asynchronous Testing

Looking at Functionize’s control panel as you build test cases, you will notice that the browser icons indicate the current state of progress for the respective test cases, and that each of these is processed as an individual entity in parallel.  This capability to manage hundreds of tests asynchronously on potentially thousands of virtual machines puts nearly unlimited capability in the hands of your QA engineer. Figure 2. shows Functionize in action with the current stability level of one in progress for iPhone devices.

automation testing

Figure 2. Asynchronous Progress of Active Tests

Testing landscape view and display orientation

Yet another important question to be confronted empirically is, does the test experience change if you rotate the screen at various points during the test and switch from portrait to landscape view? The orientation of the device can be controlled via settings for the test case on the Functionize UI.

Throttle tests

Based on bandwidth experience wifi vs. 3g for example, see Figure 3.

automation testing

Figure 3. Throttle Tests by Bandwidth

Mouse Hover for Mobile Apps!

Intelligence is the basis of Functionize testing. One of the great intelligent features in the Functionize system is the ability to capture mouse hovers. Ordinarily, this event is captured as a tap event. Functionize actually captures the mouse hover in a mobile browser app. In fact, Functionize automatically recognizes and converts desktop events into their mobile equivalents. This intelligent design ensures that while a tester’s experience is streamlined during test creation on a desktop it remains true to the performance on the target mobile device under test.

automation testing

Figure 4. Capturing Mouse Hovers

Breakthrough Mobile App Testing

Functionize heralds a new wave of intelligent testing and now the width and breadth of the field is expanding to absorb the plethora of mobile devices which have long tortured testers with their confusing variety of hardware features. Continuous testing environments are even more streamlined. Compatibility issues no longer plague the process. Now testers operate in parity from desktop to mobile. QA engineers are now free to test any device from one platform with the intelligence of Functionize.