Go with the flow: the secret to getting mobile testing right

Go with the flow: the secret to getting mobile testing right

We all know that mobile technology is revolutionising brands’ ability to interact with customers. Apps are increasingly sophisticated, and for many organisations they’re fast becoming the primary source of communication with users.

Sophisticated smartphones and tablets have helped companies to facilitate more regular and meaningful user contact. When done right, it can help boost loyalty, increase revenues and safeguard market share.

But – with the growing number of apps and ever-increasing competition, a perfect user experience is now absolutely crucial. In a highly dynamic, fragmented and complex market, it’s challenging for QA professionals to get this right.

This is particularly true when it comes to new releases – as we saw with the iPhone X, which presented significant challenges for developers and testers alike.

So, how can testers ensure user satisfaction and fulfil their role in helping brands get their mobile strategies right?

Introducing the concept of flow

On the one hand, a quick moving market with a plethora of new releases provides an opportunity for rich user experiences and improved engagement. However, these advancements come with consequences for testers – namely supporting multiple OS families, devices and generations.

App functionality varies across devices and operating systems and, depending on different target environments, apps need to be tested in different ways. To do this, we believe that it’s crucial to introduce the concept of flow.

For the uninitiated, Flow sounds like a Yoga technique, but in testing user flow is the series of actions a user takes in order to accomplish something.

Flow is critical to testing as it upholds the functionality of the app from the user’s perspective, and it ensures the most common functions are represented in testing – the functions that vary between devices, operating systems, and generations.

User flow may differ drastically depending on the capabilities and supports of the OS and device. For example, in order to login to a device, you may use your fingerprint, face identification, or simply manually enter a username and password.

Take a Twitter mobile application for example. How you login, how you post a tweet, and how you bring the app to the foreground would differ between operating systems, devices, and generations.

Because of this variability, tests need to be based on the user journey, which in many cases can be attached to specific devices and generational capabilities. Mobile test automation needs to address these different capabilities in order to provide complete test coverage and the optimal digital experience for users.

But this is no easy feat.

How to get it right

Usually this type of situation causes “branching” within test suites – something which is an unnecessary complication. However, this can be avoided if a tester is able to dynamically probe the available capabilities – something which can be achieved by exploring an app’s metadata and property files.

After analysing the user journey, the next step towards mobile automation testing is to understand the app functions and capabilities, and app metadata and property files will be infinitely helpful here.

The first step is to statically analyse the files. Both Android and iOS have application-wide property files. These define sets of supported app features, required permissions and other information. Simply put, knowing what a tested app supports in terms of functionality and user interaction is crucial to the success of the whole test cycle.

The second step is the dynamic analysis of app metadata and property files. Right now, static analysis of application capabilities and other metadata is conducted by using simple text editors and dedicated tooling – but this now needs to be done at runtime.

A library or utility that could be referred to as a dependency by test solutions would facilitate the dynamic analysis of supported application features.

It should be able to:

  • Open a packaged app
  • Load its application metadata in memory
  • Provide the means to query/introspect application metadata with regard to some interesting capabilities.

Armed with this critical information, testers can better understand the app’s functions in the context of the user journey. With this knowledge, they can create more comprehensive test coverage – ultimately ensuring quality of service.

So, knowing what application features are supported for any given version of a tested mobile app is essential for better mobile automation testing. It can help avoid unnecessary and complex “branching” of test suites, save time and ensure issues are addressed quickly.

Information extracted from property files and metadata unleashes the potential for better coordination, understanding and agreement amongst testing and software development units.

Ultimately, by combining this data with insights from the user flow, testers can create a nuanced test strategy that is both effective and thorough. The context of the user journey will only improve test coverage, which can affect your bottom line and is ultimately, make or break for digital user experience.

Eran Kinsbruner, chief technical evangelist, Perfecto