Blog

Last published posts

The Importance of Stability and Reliability Testing in Software Development
Posted on

There are aspects of software testing that often plant confusion in those new to the process — such as drawing the line between stability and reliability testing. The two are often used interchangeably and share a common goal of ensuring a system can perform steadily over a chosen time frame.  In this post, we’ll take…
Read more…

The Role of Installation Testing in Software Development
Posted on

When launching a product, the project team needs to ensure users can install it effortlessly. That’s why it’s crucial not to miss out on tasks like installation testing. These tests check that the installation process is bug-free, regardless of the device or operating system that runs it.  This post will offer business owners, QA specialists,…
Read more…

What is Web Performance Testing and Why do You Need It?
Posted on

Performance testing is one of the most challenging components of web application testing. Irrelevant web performance test data or wrong metrics, chosen during testing, cost companies a ton of money and effort. If done right, performance testing has all the tools needed to forecast product behavior and its response to user’s actions with an impressive…
Read more…

How to Run Performance Testing on a Mobile Application

Performance testing is a key element in the mobile app testing pipeline. You’ll be able to track and predict performance changes for spikes in connection quality (3G, 4G, LTE), the change in a user’s location, increased traffic loads, and so on.

When it comes to mobile apps, you also need to test the product on different devices to see if the performance is affected by the change in screen dimensions. 

In this post, you’ll find out more about what it means to performance test mobile apps as well as get to know about tips and hacks that can improve the tester’s workflow. 

Table of Contents:

  1. What Is a Mobile Application?
  2. What is Mobile Application Testing?
  3. Who Needs to Performance Test Mobile Apps?
  4. Strategy for Performance Testing Mobile Apps
  5. Environment for Mobile Application Performance Testing
  6. Challenges in Mobile App Performance Testing
  7. Useful Mobile Performance Testing Tools
  8. Examples of App Performance Tests
  9. Performance Tests of Mobile App Services at PerformanceLab

What Is a Mobile Application?

By definition, a mobile application is a type of software designed to run on a mobile device – a smartphone or a tablet. They can be web-based or independent. Mobile apps rarely allow multitasking due to limited software capacity, one-screen constraints, and comprehension quality. 

While porting a PC app into a mobile-based project can be a way to go, in order to harness the full power of device-specific features, developers tend to build mobile software from the ground up. 

What is Mobile Application Testing?

Mobile app testing is executed in order to assess the performance of the application in a simulated environment (or several) in order to predict a user’s experience after a software’s public release. 

For testers, performance assessment normally means running parallel tests of the system response on a range of devices, checking the app’s performance at peak points of traffic loads, and ensuring that it’s stable under poor internet connection and supports device-specific transactions. 

The overall process of mobile app testing is divided into the following stages:

  • Connectivity-related testing. As most mobile apps require online connectivity, a developer has to ensure the tool is functional in case there isn’t any. This means predicting a scenario for users in the flight mode or offline, test connections with changing bandwidth, and so on. 
  • Understanding device-specific characteristics. Unlike PCs, the screen dimensions of mobile devices can differ drastically – from 5-inch smartphones to 13-inch tablets. Also, there are other tech specs to keep in mind – camera, GPS, the capability of touchscreen and the range of supported gestures, and so on. A tester needs to have a better understanding of those characteristics as well as the way they impact the experience of using the app. 
  • Location simulation. For GPS-reliant apps, this step is a must. A tester has to ensure the performance of the product does not change drastically when a user moves to a different location. You can achieve this by using location simulators. 
  • Fragmentation testing. A development team needs to ensure the app supports different versions of the operating system it has been designed for. Be sure to outline the types of devices you’re looking forward to supporting and running tests specifically on those systems. 
  • UX testing. Key User Experience requirements include clarity of navigation, the intuitiveness of the interface, the look and feel of the app layout, error messages, and handling. UX testing is essential in order for the app to be accepted by the app store. 
  • End-to-end integration testing. System integration testing presumes to validate the performance of the solution against the main features of Mobile Device Management (MDM, in short) systems.
  • Mobile performance app testing. Performance quality is different across high-end and low-end devices. Apart from ensuring the app performs consistently across devices with a lower capacity, a developer has to ensure the product is capable of handling high server loads as well as being immune to bandwidth and latency changes. This stage also includes load testing – increasing the number of incoming traffic to ensure the stability of the application’s response. As a rule, the approach to such tests is either modular or integrative.
  • Security testing. Most mobile apps process the data from the device and store it on servers. In order to ensure a user’s privacy is not jeopardized in case a phone is lost or stolen, testers have to establish a secure authorization system, create a system of recording all the events performed within the app, and secure data confidentiality. 

Who Needs to Performance Test Mobile Apps?

When development teams face time constraints, there is a temptation to skip mobile app performance testing. Doing that, however, is a no-go – otherwise, a tester would ignore oblivious bugs and the app would likely not be approved by distributors (Google Play Market for Android and App Store for iOS). 

The list of objectives a tester achieves thanks to performance testing is quite extensive. It includes:

  • Validate the performance of an application during big workloads. Performance testing allows product owners to measure the performance of the system as the number of concurrent users or actions increases. A tester will know the response time and the amount of system resource consumption at the app’s peak points. This is highly helpful in case your app has traffic spikes (where, during a certain season or period of time, the number of visitors surges and decreases shortly after). 
  • Validate the use of hardware. Through performance testing, product owners will ensure that low CPU usage or little server storage will not prevent the app from functioning according to the requirements. 
  • Determine the capacity of the application. You’ll be able to determine if the current software is capable of matching the set of metrics designed beforehand (peak traffic load, server response time, and so on). 
  • Measure and assess the performance of the app on the protocol level. A tester will be able to get a realistic simulation of real traffic, create a load profile, and measure the response time.
  • Check the app’s performance under critical conditions. Thanks to performance testing, a developer will be able to establish the limits of the app’s performance. This way, you’ll be able to predict and prevent system crashes. 

Strategy for Performance Testing Mobile Apps

Building a strategy from scratch can be challenging for newly funded startups. The good news is the app performance test approach is similar for apps in all industries and any scale.

In order to successfully execute performance testing, a project manager has to come up with a strategy. Normally, a step-by-step performance testing plan consists of the following steps. 

Step 1. Align test objectives and business requirements

Performance testing will only be as good as its goals. When setting objectives for each case, make sure they correspond to business scopes of building an app. A tester’s top priority would be to assess the functions of the app that are crucial for lead generation – the cart feature for e-commerce stores, the registration and contact form, and so on. 

At this stage, the testing team gets to know the architecture of the product to the best extent possible – including its presentation, business, and data levels.

Step 2. Identify test KPIs

By setting benchmarks for testing, you’ll be able to tell if the execution was a success or a failure. For mobile app testing, the following KPIs are worth consideration:

  • Error rate;
  • Maximum response time;
  • Average response time;
  • Peak number of requests;
  • Average throughput and the peak number of concurrent active users per device and OS.
Step 3. Prioritize scenarios

Testing all the features of the app all at once without prior selection of cases is a common trap for a beginning tester to fall into. Instead, it’s better to outline multiple packet scenarios that are crucial for the app’s reliable performance. 

After you have assured crucial features work properly, feel free to move in deeper and test less significant scenarios. 

Step 4. Simulate a real-life testing environment

The testing environment is crucial in order to understand the user experience of the app the way people will after it’s live. In order to speed up the testing process, QA specialists mostly use system emulators. 

Such tools do a good job of emulating the basic parameters of an operating system and allow testers to get a sense of the look and feel of the interface. However, to assess the performance of features that require camera permission, GPS, and other device-specific functions, it’s better to use real hardware. 

Step 5. Align the testing approach with the overall development methodology

Testing should fit into a company’s general development framework. For Agile, the tester should be ready to implement the principles of continuous integration. If a company is using Waterfall, a tester should align their workflow accordingly – this means embracing regular bug reports and regression tests. 

Adopting the same methodology for testing as for development allows both parties involved to be on the same page regarding the project, improve communication, and speed up the decision-making process. 

Step 6. Keep the latency and the bandwidth of a carrier network in mind while testing

Due to the fact that mobile devices are connected to the internet through third-party carriers, the latency and bandwidth of the networks can vary. Keeping the carrier network differences in mind allows a QA specialist to optimize the app’s performance and improve user experience. 

Environment for Mobile Application Performance Testing

Environment setup is capable of determining the accuracy of tests and the number of insights a QA specialist can gather out of any executed test. Setting up an environment for an app or mobile website performance testing consists of the following steps:

  • Isolate the environment. Make sure you’re the only one to use the system for testing and no other activity is performed on it simultaneously. Otherwise, you’ll jeopardize the test accuracy. Also, having a few users accessing the platform at the same time increases the server load and slows down the process. 
  • Use test data generators. Most tests are reliant on database records. When doing performance testing, it’s crucial to pay attention to data writing, reading, and deletion as these actions are known to halt the app’s performance to the fullest extent. In order to match the database records with those used in the test environment system, QA specialists use data generation tools. 
  • Isolate the network. This is done in order to eliminate timeout errors. It’s not a necessary guideline – if the bandwidth is wide enough to support both a tester and other users, there’s no need for isolation. For most networks, however, supporting a few concurrent activities without affecting the performance of the app is impossible. 
  • Remove proxy servers from the network path. A proxy between the client and the web server can put a strain on the performance of the app. The problem can be solved by conducting server transfers in a secluded environment. 

Challenges in Mobile App Performance Testing

Mobile app testing is often even more challenging and tedious than that of PC software. A large variety of devices, increased mobility of users, the use of device-specific features – all of this can turn into a roadblock for a tester. 

Here’s a list of the most common challenges when performance testing mobile apps: 

  • A large variety of device-specific features. While many apps use GPS, camera, microphone, and other features, it’s hard to emulate them with an online tool. As a result, a tester has to get a range of hardware which, in turn, increases the test budget. 
  • Multiple UI variations. Depending on the operating system, the page layouts and system fonts vary. If you’re not complying with the guidelines for Google Play Market or App Store, the publishing process of the app can be stalled or delayed. 
  • A tester needs to procure multiple devices or install emulators. The mobile device market is extremely fragmented – the capacity, screen dimensions, and built-in features all vary wildly. In order to test an app across as many devices as possible, a developer has to find as much hardware as possible. 
  • Context-based challenges. In order to test the app efficiently, a QA has to think about the network quality as well as the location of a user. There are more use cases and patterns in mobile app performance testing to consider than for PC software – thanks to all this datum, the process can be more expensive and time-consuming. 
  • Complications due to touchscreen testing. For example, it’s hard to translate the entire range of movements a touchscreen provides users on a PC emulator. Even the testing process on physical hardware requires more intricacy and is harder to be automated. 

Useful Mobile Performance Testing Tools

There are two approaches testers use to assess the performance of mobile apps. The first one is to test the server-side performance of the product. This way, the development team is capable to check the logic and the readiness of the app. The second one is to assess the performance of the app on a device (either physical or emulated). This way, a tester will be able to see the end product from a user’s point of view. 

Here are the most popular tools for server-side performance testing. 

Server-side Performance Testing
JMeter

JMeter is the most widely-used tool for mobile performance testing. It’s an open-source tool with extendable functionality (thanks to plugin support) and an easy-to-use interface. There’s a wide range of testing features – including multiple load generators and controllers. 

The software can also be used for volume and availability testing. JMeter supports data visualization tools and HTML-rich reporting. 

The development team provides users with comprehensive documentation that makes it easier to master the tool. 

Gatling

Gatling is an open-source tool for performance testing founded in 2012. The key features of the solution include:

  • HTTP/S, JMS, and JDBS support;
  • Rich HTML reporting;
  • Wide OS and browser support;
  • DSL and Scala support;

Gatling is simple and easy to use – thus, it’s a good fit for junior performance testers However, developers shouldn’t mistaken a simple interface for the lack of functionality – in fact, Gatling allows you to conduct tests with up to 600 concurrent users. The tool has two executables – for running tests and recording them. 

Client/Device-side Performance Testing

After testing the server-side performance of the app, the team runs a code on the physical devices in emulated environments. For such testing, the following tools can come in handy. 

Sauce Labs

Sauce Labs is a cloud-based test platform. It covers 800 different browser types to create a controlled bug-free environment for testers. The tool allows you to run parallel tests that don’t interfere with one another. 

Sauce Labs allows developers to handle large testing volumes and automate mobile tests with little programming knowledge. 

Appium Studio

Appium Studio is a free tool for mobile performance testing. It’s widely praised around the web thanks to a code that’s easy to read and write, a wide variety of supported tests, and a unique XPath. 

Appium Studio gives app testers access to device-specific features – including TouchID, barcode scanning, and many more. 

UI Automator

UI Automator is an open-source tool for mobile app performance testing. Testers can write JavaScript-based scripts for automation and execute them. UI Automator has an easy-to-use interface and a built-in Android emulator. As of now, the app doesn’t support iOS apps. 

Robotium

Robotium is a tool for automated testing supporting both native and hybrid Android apps. The framework gives developers enough freedom – you’ll be able to write custom systems, functions, and test scenarios. 

Selendroid

Selendroid is a framework designed for Selenium – a widespread testing tool that allows QA specialists to test multiple Android apps simultaneously and switch between cases. With the tool, you can use several emulators at once. The downside of the tool is that a tester has to write code via Selenium 2 API. 

Testdroid

Testdroid is a handy tool for both manual and automated tests. You’ll be able to record the execution process and sort through test cases and their respective reports. The tool is free to use – it has dozens of proprietary open-source plugins as well as its own API.

Examples of App Performance Tests

Mobile app performance testing is quite complex. There are dozens of activities a QA specialist needs to perform in order to ensure the product works as required. 

The most common examples of performance testing are the following:

  • Load testing. A tester increases the number of users and concurrent transactions to define the app’s load threshold. Load testing is normally performed in order to measure the performance speed and response time during a heavy traffic load. It is also known as ‘Volume testing’ or ‘Endurance testing’. 
  • Stress testing. Aimed at assessing the performance of an app in case the CPU usage, system memory, or other hardware specs are reaching their limits. The goal of such tests is to validate the app’s behavior at its peak condition. 
  • Capacity testing. This test helps developers find out what number of users and features the app is capable of maintaining. After conducting a series of capacity tests, developers can get better workflow visibility as well as an understanding of application limits. 
  • Spike testing. This test is carried out when the traffic load in the app surges for a short period of time. A QA specialist will be able to validate the performance characteristics of the app when it’s subjected to conditions exceeding its capacity. 

Performance Test of mobile app services at PerformanceLab

Mobile performance testing is efficient if handled by a team of certified professionals. At PerformanceLab, we offer QA resources for mobile applications in finance, retail, insurance, hospitality, and other industries. 

Our team makes a point to reduce testing cost as well as shorten the amount of time needed to deliver an app to market. We’ll assign a dedicated project manager to a team of testers working on your app, and you’ll be able to contact an account manager in order to get reports and status updates. 

The team of testers at PerformanceLab is also fully integrated with software engineers and DevOps working on your project. We adapt to our client project management methodology as well to ensure the workflow will be as smooth as possible. 
Take a look at our services to know more about PerformanceLab. If you’d like to have us on board for your next project, contact our team – we’ll reach out in no time!