10 Steps to Great Mobile App Performance Testing Using JMeter
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.
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.
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.
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:
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.
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.
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.
Related insights in blog articles
SRE Roles and Responsibilities: Key Insights Every Engineer Should Know
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 […]
Understanding Error Budgets: What Is Error Budget and How to Use It
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 […]
Mastering Reliability: The 4 Golden Signals SRE Metrics
Introduction to Site Reliability Engineering Site Reliability Engineering is a modern IT approach designed to ensure that software systems are both highly reliable and scalable. By leveraging data and automation, SRE helps manage the complexity of distributed systems and accelerates software delivery. A key aspect of SRE is monitoring, which provides real-time insights into both […]
Reliability vs Availability: Key Differences
Defining Reliability and Availability What is Reliability? Reliability refers to the probability that a system will consistently perform as expected, delivering correct output over a set period of time. In the world of Site Reliability Engineering (SRE), reliability is a core metric that drives everything we do. It’s not just about whether a service works […]
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
People love to read
Explore the most popular articles we’ve written so far
- Benefits of Performance Testing for Businesses Sep 4, 2024
- Android vs iOS App Performance Testing: What’s the Difference? Dec 9, 2022
- How to Save Money on Performance Testing? Dec 5, 2022
- Cloud-based Application Testing: Features & Types Apr 15, 2020