Mobile Load and Performance Testing
Performance testing refers to the process of observing how an application behaves in terms of responsiveness and stability under certain conditions, for example in the case of demand from a certain number of users simultaneously or low memory/space resources. Performance testing helps to identify the maximum operating capacity that the application can manage to continue working with acceptable performance in order to measure what parts of the application cause the application to perform poorly. In addition, load testing can verify other software's quality attributes such as scalability, reliability and resource usage.
Mobile performance testing is more challenging than testing other desktop or website applications because the network connection is not as fast as it is for desktop applications, bandwidth is reduced, and the connection is subject to unexpected disconnections. In addition there are global differences in network speed and a diversity of devices with specific characteristics. Every day the number of mobile device users increases, and they all expect their mobile experience to be as fast as their desktop experience. A slow response time or intermittency will produce frustrated users and the greater probability that users will abandon the application; this is the main reason that load testing is a critical factor in determining the success of mobile applications.
Which aspects are involved in the performance of an application?
The performance of an application must be reflected from two different points of view (server side and client side):
Server side: Response times, streaming resource intensive multimedia packets, delays in delivery of messages, application crashes, resources usage, render response time.
Client side: Discrepancy of application behavior on different platforms and devices (considering different screens, resolutions, configurations, etc.), loading time spent, device's resources usage (memory, CPU consumption, battery, etc.).
How to do performance testing
A few activities should be considered in performance testing:
- Identify the test environment: Identify the physical test environment (such as devices, operating system, etc.), the production environment, and testing tools.
- Identify performance acceptance criteria: Define the performance goals of the application; this involves range of response time, percentage of resource usage and other criteria. It is critical to understand the project context to test the important items that frequently cause time wasted and can produce frustration and trouble.
- Plan and design test: Think of possible scenarios; define how to simulate variability among users, define data, and specify metrics.
- Configure the test environment: Prepare all required tools and resources to execute the test taking into account the different needs at all stages of the testing process.
- Implement the testing design: Develop the performance test according to the test design.
- Execute the test: Run the tests and collect data.
- Collect and analyze results: Consolidate and share results data. Reprioritize the remaining tests and execute them as needed until all metrics values are within accepted limits.
Performance test types
Understanding the different test types and when to apply them reduces risks and minimizes costs. The performance test types are listed below:
Performance test: The main purpose is to determine speed, scalability and stability of the application.
Load test: Consists of observing the application's behavior under peak load conditions. The load test facilitates measuring response times, throughput rates and resources usage and identifying whether the application's breaking point occurs below the peak load condition.
Stress test: Enables observation of the application's behavior when it is pushed beyond normal or peak load conditions; the main purpose of this test is to identify bugs that can be reproduced only under high load conditions.