Perfecto with JMeter | Performance testing

Apache JMeter™ is open-source software and 100% pure Java, designed to load test functional behavior and measure performance. It was originally intended for testing web applications but has since expanded to other test functions.

Perfecto has e2e integration with JMeter to perform SUT (Single User Performance) testing, with JUnit supporting both web and mobile applications.

In this exercise, we will perform client-side performance testing while stressing the server with JMeter threads for the Etihad web application. While measuring responses on the few real devices, we will ramp up virtual users to increase the load on the system. Following is an architecture diagram.

We have selected the following transactions:

  • Launch App: The time it takes to load the app
  • Search Flights: The time it takes to list the available flights on the given itinerary

The following thread groups are required:

Merge both Perfecto user experience and server-side scripts in the test plan. A sample e2e JMX test plan file is available here: EtihadPerformance.jmx

Because Etihad is the production website, let’s run Performance testing with 7 users: 2 on the client-side with a real device (in Perfecto) and 5 on the server-side.

The following image shows virtual user configuration (server-side).

The following image shows Perfecto user configuration (server-side).

To execute the performance tests:

On the toolbar, click the (green) Run button. The test will load the server and execute client-side tests in Perfecto. The summary report contains the transaction time of both server- and client-side.

From the summary, we see that as per JMeter threads (server-side), the system took an average of 28s to load the launch page and 7.8s to search the flights.

From the Perfecto user experience side (client-side), it took 2s on Android and 6s on iOS devices. More time was reported on the server-side because the server page load time depends on the processing time of all the APIs (including third-party APIs that are not visible on the screen, whereas the Perfecto page load time depends on specific text to display on the page, ignoring background and third-party APIs.

The following video shows a demo execution.