In the past few years, mHealth apps have helped consumers conveniently manage their health conditions and has emerged as a fast-growing segment in the healthcare market. The global mHealth app market is projected to be valued at US$28.320 billion in 2018 and is expected to reach up to US$102.35 billion by 2023. According to a study by mHealth App Developer, more than 84,000 mHealth app publishers have released mobile apps for the medical and health and fitness market.
With such intense competition, developers need to understand the performance characteristics of their apps to ensure it delivers value and is easy to use. Testing apps under load conditions becomes crucial in a marketplace where these apps are being used by hundreds and thousands of users. And unlike regular apps, mHealth apps also need to follow healthcare compliance and safety regulations.
mHealth apps require testing early in the development cycle (and through its entire lifecycle). Before beginning load testing on an app, companies need to consider the following aspects that affect app performance.
1. Application Architecture
The assessment should start by reviewing the application architecture, components of the architecture, third-party services and expected device capabilities such as data connectivity, bandwidth (2G, or above), cache usage, storage usage, etc. These provide potential performance choke points that can be further worked on if required.
The next step is to evaluate overall system performance. Based on the architecture, typical metrics include server response times, errors, network latency and throughput, hits per sec, server CPU, memory, and network usage. Response times vary based on several factors, which may include:
- Mobile hardware: Multi-core CPUs, faster RAM chips, SD Card bandwidth, etc. impact the performance of the app. Similarly, tablets tend to have more powerful CPUs and larger batteries and need different considerations.
- Underlying OS version: Depending on the OS and version, app data management, RPC, networking, storage workloads, power management, peak load management, etc. change significantly, varying the app’s behavior – particularly in case of hybrid apps as their rendering and background task performance has variance across the top platforms.
- Network bandwidth: More available bandwidth results in better data download rate impacts an app’s performance favorably. There are scenarios to validate such as low power mode, or when there’s jitter in the network.
- Test scenarios: A scenario that tests a “first time data load” vs. a warm run will get different numbers. Similarly, a scenario that tests with a background app and location services will show different numbers.
2. API Performance
Isolated API performance tests help evaluate whether APIs are ready for prime time. APIs need to scale with increase in load – with response times remaining fairly consistent. An incremental load testing for APIs is a good approach to achieve this objective.
3. Storage Tier Performance (back end)
Testing the performance of the storage tier is another crucial step in mobile application performance test. Back-end performance testing helps identify bottlenecks in the application architecture. Appropriate usage of user stories, caching and data schema – all behave differently under read and write loads. And, the storage technology varies for different devices, OS, manufacturers, and even users especially in devices that allow user data to be stored on external SD cards.
Throttle bandwidth testing can help to check the impact of the network speed on the performance of the mobile application. Most of the enterprise performance tools have built-in network emulation capabilities. The scripts used for measuring server-side performance can be re-used and the network emulation can be configured to throttle the bandwidth for variety of network conditions like 2G, 3G, 4G, Wi-Fi, etc.
5. Client side (front end)
The rendering time can be captured by using automation scripts while conducting the load test.
- Native tools: Android profiler like TraceView or instruments for iOS can be used to find memory leaks, slow performing methods, etc.
- JMeter: JMeter is an open-source testing software. It’s a Java application for load and performance testing. It can be used for mobile APIs and to record scripts for mobile applications. It has record and replay functions to verify mobile application performance for native and web apps.
- HP Tools: HP Loadrunner & Performance Center, collectively can be used to simulate user actions to support browser based, native and hybrid mobile apps.
- SOASTA: SOASTA along with CloudTest provides APIs and mobile apps performance testing capabilities with cloud offerings.
- Neotys: NeoLoad supports load and performance testing of both web API and native applications on mobile devices.
- For application monitoring, tools such as New Relic, Dynatrace and AppDynamics provide facility to track and drill down into the application for performance bottleneck identification. Testers can effectively make use of such features.
Architecture and development approaches make a significant impact to performance, making it imperative for companies (healthcare organizations as well as companies that develop mHealth apps) to conduct performance testing very early in the development life cycle. Selecting the proper tool, methodology and test approach will help developers maximize their testing output under various loads and conditions, improve reliability and response time to help deliver value to consumers.