Go back to all articles

10 Steps to Great Mobile App Performance Testing Using JMeter

Nov 30, 2022
12 min read

Nowadays, almost every company has its mobile app, which provides millions of customers with products and services for all kinds of requests. Just think of it: developers upload thousands of new applications and mobile games daily to Google Play and the App Store. To engage and retain users, you should have brand new ideas and a great code and design and be sure of high system performance.

Your application’s quality, reliability, and speed must be the best in this highly competitive market. The most reliable way to identify opportunities and potentials of your product is mobile app performance testing. This process often involves system performance analysis to ensure your application meets user demands under various conditions. In this blog post, we will look at how to write a load script for a mobile application and run a performance test by generating HTTP/HTTPS traffic on the app server using JMeter.

1. Choose Operations and Create a Load Profile

The first step in approaching mobile app performance testing is to understand what type of operations should be performed and with which frequency, that is, to create a load profile. The choice of procedures and their intensity is made by analyzing the statistics for the most loaded month, selecting the peak day of that month by the number of interactions, and choosing the peak hour of that day. Pick the most intensive operations from the list for this hour. They should constitute more than 80% of the total load.

The profile should also include the most resource-intensive operations and those important for your business. It is worth considering possible time limits for those interactions, too. If you do not have suitable statistics, e.g., because your app is new, the profile is created based on your market analysis and forecasts.

2. Prepare a Real Device or Install Emulator

Now, it is time to decide whether to use a real smartphone or a mobile operating system emulator to write a script. The latter is much cheaper because you do not need to buy a collection of different devices from multiple vendors. On the other hand, if your app is supposed to interact with a microphone or a GPS module, you probably will not be able to test it without appropriate hardware.

In this post, we are using the MEmu Android emulator. We have also tried it with a real mobile device based on Android 10, and there is no difference other than some visuals.

3. Configure the Connection to the Network

For further work, it will be necessary to connect the desktop and a real or virtual device to the same local network. In the case of the Android OS emulator, everything is simple because it is installed on your PC and, therefore, connected to the same network.

For a real mobile device, you have to manually configure a connection with a desktop over a local network, which is very easy to do. All you need is to connect a mobile device and a PC to one router via Wi-Fi or, in the case of a computer, LAN.

4. Create a Script in JMeter and Configure an HTTP Proxy Server on Your PC

For the script, you will need to install Apache JMeter. This is a popular tool for load testing, but if you have not worked with this program yet, it is not a problem. First, you must install the Java Development Kit (JDK) on your PC; otherwise, the app won’t start.

When JDK is installed, you should download the archive with the program from one of the mirrors listed on the official Apache website and unpack it on your desktop. Then, you should run the file jmeter.bat in the bin folder. After the start, a graphical user interface will pop up. You will use it to work on your test plan.

There is the tree of your JMeter script on the left side of the window, whilst information about the selected element is displayed on the right.

There is the tree of your JMeter script on the left side of the window, whilst information about the selected element is displayed on the right.

Now you can start creating your script using JMeter:

1.  Add the main element to your Test Plan. Right-click Test Plan —> Add —> Threads (Users) —> Thread Group. This thread group can consist of one or more scripts, each performing a specific task for your virtual users. Before starting the test, all Threads (Users) elements must be configured for load delivery. Remember that each script needs a separate “spool” of threads, as the intensity of these scripts can be different.

2. Add Listener. Right-click Test Plan —> Add —> Listener —> View Results Tree. This adds an element to view future queries and responses, which is useful when debugging the script.

3. Add Recording Controller. Right-click on Thread Group —> Add —> Logic Controller —> Recording Controller to add an element inside your coil that allows you to automatically group the script on transaction writing. This is quite convenient for a lot of actions.

4. Add Test Script Recorder. Right-click on Test Plan —> Add —> Non-Test Elements —> HTTP(S) Test Script Recorder to add an element to record the script. Pay attention to the connection port: ensure it matches the port you specify in your mobile device or emulator settings.

Do not forget to choose Test Plan > Thread Group > Recording Controller in the Target Controller field. This option indicates where the script will be recorded to.

Create a script in JMeter 2

Then, you should click the Start button, and JMeter will create the certificate you need for the next step. Confirm the creation of the Root certificate in the pop-up window, or wait until it disappears and stop the recording.

The created certificate will be valid for seven days. If you need to renew it in the future, you can click the Start button again.

Run JMeter Tests in the Cloud

Easily scale your JMeter tests with cloud-based execution.
No infrastructure needed.

5. Copy and Install the Certificate on Your Mobile Device

The next task is copying and installing the Apache JMeter certificate on a smartphone or emulator. You will find the certificate in the JMeter installation directory bin folder. The file you are looking for is called ApacheJMeterTemporaryRootCA.crt.

Transferring it from your desktop to a real device is not a big deal, but copying a file to an emulator may look tricky. Take MEmu as an example. Click the icon of a folder on the right of the toolbar and open the shared folder screen. Each folder has a Windows icon, which opens a folder on your PC, and an Android icon, which opens an appropriate directory on the emulator. You can copy the certificate to any of these four folders on your PC and then find it on the emulator by clicking on the relevant Android icon.

To install a copied certificate on a mobile device, it is sometimes not enough just to run it via the certificate installer. Even if the system reports that the certificate has been successfully installed it is not. Therefore, you need to go to the settings and do the following:

  • 01
    Go to Settings —> Security —> Install from an SD card. The exact path may vary depending on the device and Android OS version.
  • 02
    Find your certificate in the storage.
  • 03
    Specify the name of the certificate.
  • 04
    Tap OK to confirm installation.
  • 05
    The system will ask you to enter a screen lock password, or create it, if you don’t have any. Agree, and enter the password or set up a new one.
Install a certificate on your mobile device

6. Download and Install the App on Your Mobile Device

It’s time to download and install the mobile application you want to test using JMeter. Since everyone knows how to do this on a real device, let’s look at the emulator.

There are two ways to install the app in MEmu. First, you can click the APK icon on the right side of the toolbar. This opens Windows File Explorer, where you can find and run your application package. Another option is to download it directly from Google Play, which also works in the emulator.

It is worth noting that if you want to download some client-server application and try to write a script, you cannot do it seamlessly. The reason is that, nowadays, to protect the application from incorrect data, hacking, data theft, etc., developers add many checks into the code and implement SSL certificates. So, you cannot get a response from the server via proxy. Of course, it is possible to bypass it with the help of special utilities, but if you are a part of the team working on the project, you’d better ask developers to solve this problem.

7. Configure Proxy on Your Mobile Android or iOS Device

The next step is proxy configuration. To analyze scripts, you need to intercept mobile traffic and transfer it over a certain LAN port to Apache JMeter. You have already configured the proxy server on your desktop, and now you will have to do the same on your emulator.

  • 01
    Open the list of wireless networks in the settings and choose the one you are connected to. Left-click and hold it until a new menu unfolds, then select Modify Network. Click the dropdown in advanced settings and switch proxy to manual.
  • 02
    Enter your PC IPv4 as proxy hostname and type in the port number, which must be the same as you have specified in the HTTP(S) Test Script Recorder setting in Apache JMeter setup.
  • 03
    In the IP Settings field, leave the DHCP value. Remember to save changes.
On a smartphone, the roadmap is similar.

On a smartphone, the roadmap is similar.

8. Record the Mobile App Performance Testing Script Using JMeter

Now, you can start recording the script. Click Start in JMeter and run the application in the emulator or smartphone. If everything is set up correctly, the recording controller will add a transaction in which multiple requests will be grouped. Each next action in the application will add a transaction with its queries until you finish the record by clicking the Stop button.

Record mobile app performance testing script

All Test Plan elements can be moved or commented, also you can hide or show the contents of each element, copy and paste, or delete them. It is also possible to copy a script to another scenario by opening two windows of the tool, which is useful when designing a large project. If you want to save a recorded script and continue your work later, click File —> Save Test Plan As.

9. Disable Proxy on Your Mobile Device

When recording is on, the traffic is sent to Apache JMeter, but after the script is recorded, you will not have access to the Internet via Wi-Fi. To restore the connection, disable the proxy server on your test smartphone.

If you are recording a lot of scripts using a real device, you can switch from Wi-Fi to cellular data and back. The proxy settings on the wireless network do not reset, so you can quickly start writing another script.

10. Process the Script and Start the Load Testing

This stage is not different from the processing of a regular script. After parameterizing, correlating, and adding test data, a debugging test (one iteration with one virtual user) is run to check for errors. You can see the results of the script debugging by selecting the View Results Tree element from the script tree. You may want to insert delays between actions to get as close as possible to the real conditions.

Use the Ultimate Thread Group or the Stepping Thread Group to smooth the load. You will find these in Test Plan —> Add —> Threads (Users). If an element you need is missing, you can add it using Options —> Plugins Manager.

It is also necessary to calculate the pacing of each operation, the number of virtual users used, and the number and duration of load stages. An important step is to add monitoring elements through Test Plan —> Add —> Listener, such as Transactions per Second, Active Threads Over Time, Hits per Second, Aggregate Report, etc.

These tools will help you collect data for further analysis. After all these actions, you can start the test.

Executing JMeter Tests In the Cloud

Executing JMeter mobile app load testing in the cloud using PFLB offers numerous benefits, including scalability, flexibility, and efficiency. By leveraging cloud resources, you can easily simulate large user loads across different geographic locations without the need for extensive on-premise infrastructure. PFLB’s platform enhances this process by providing seamless integration with JMeter, allowing you to quickly identify performance bottlenecks, optimize your app, and ensure it can handle real-world user demands. This cloud-based approach not only saves time and costs but also delivers more accurate and reliable results.

JMeter performance testing services

Conclusions

Hopefully, you can now configure mobile application traffic reading, record scripts, and run load tests using JMeter. Depending on the test objectives, you may need to conduct a series of launches. If you encounter any problems or obstacles, please contact us! We are engaged in all kinds of mobile app performance testing.

Run JMeter Tests in the Cloud

Easily scale your JMeter tests with cloud-based execution.
No infrastructure needed.
Table of contents

Related insights in blog articles

Explore what we’ve learned from these experiences
14 min read

TOP 10 Best Online Load Testing Tools for 2024

best online load testing tools preview
Nov 7, 2024

In this article, we will go through our favourite features of each of these cloud-based load testing tools, while in the end you will find a parameterized comparison of all of them in one table.

10 min read

Essential Guide to ITSM Change Management: Processes, Benefits, and Tips

Essential Guide to ITSM Change Management
Oct 15, 2024

ITSM change management is essential for managing and implementing IT changes smoothly. It focuses on minimizing risks and aligning changes with business goals. In this guide, we’ll explore what ITSM change management entails, discuss its benefits, and provide practical tips for implementation. Key Takeaways What is ITSM Change Management? ITSM change management is a key […]

7 min read

SRE Roles and Responsibilities: Key Insights Every Engineer Should Know

sre roles and responsibilities preview
Sep 11, 2024

Site Reliability Engineers (SREs) are crucial for maintaining the reliability and efficiency of software systems. They work at the intersection of development and operations to solve performance issues and ensure system scalability. This article will detail the SRE roles and responsibilities, offering vital insights into their duties and required skills. Key Takeaways Understanding Site Reliability […]

11 min read

Understanding Error Budgets: What Is Error Budget and How to Use It

understanding error budgets what is error budget and how to use it preview
Sep 10, 2024

An error budget defines the allowable downtime or errors for a system within a specific period, balancing innovation and reliability. In this article, you’ll learn what is error budget, how it’s calculated, and why it’s essential for maintaining system performance and user satisfaction. Key Takeaways Understanding Error Budgets: What Is Error Budget and How to […]

  • Be the first one to know

    We’ll send you a monthly e-mail with all the useful insights that we will have found and analyzed