Skip to content

Load Testing Blog

Sharing variables between Virtual Users

Variables, may they be constant or dynamic, are an essential part of load testing.

We already learned how to manipulate these values by extracting and re-injecting them inside one Virtual User.

But what if we need to share these values between several Virtual Users ?

In this blog post, I will show you just how to do that, using the MQ technology.

What is AMQP ?

Advanced Message Queuing Protocol (AMPQ) is an open standard protocol that allows messages exchanges between different systems.

In practice, it lets you store values in queues, values that can be retrieved later by simple calls.

Gatling: Loops, Conditions and Pauses

This blog post is a guide to help you write Gatling scripts in order to load test web applications efficiently. It follows our second Gatling Simulation scripts parameterization article.

We will continue to load test a fake e-commerce, and so we are going to improve our Virtual User to make it browse the store in a more humanly way. To do it we will cover several topics:

  • Loops to make it browse several articles of each category,
  • Conditions to change its behavior depending on dynamic parameters,
  • Pauses to simulate a real user think-time.

We start where the previous blog post ended, with a simulation script that uses a CSV feeder and a Regular Expression extractor to visit dynamic pages of the pet store: Download Sample Script.

SNCF - Case study

Most of you have already recognized the name SNCF, it is obviously one that is hard to miss when you live in France. But for everybody else, allow me to do a quick reminder of what SNCF stands for.

The Société Nationale des Chemins de fer Français (Chemin de fer, literally, 'path of iron', means railway) is France's national state-owned railway company. It operates 32,000 km (20,000 mi) of route and in 2017 had €33.5 billion of sales in 120 countries. The SNCF Group employs more than 260,000 people.

source: Wikipedia

Lately, SNCF's IT strategy could be summarized as follows:

  • Have state-of-the-art, multi-cloud, application execution capabilities,
  • Work as a business partner with hand-picked software vendors to help them grow and learn from a real life use case.

This means re-thinking the strategy in many areas, including performance testing.

Julien Leclere
Julien Leclère is the Head of software factory at SNCF, with a range of 1500 applications.
The factory provides assets to manage the entire application lifecycle. Julien was looking for
a solution that could fit in the factory while still answering to a large variety of requirements.

To help with his task, Julien was assisted by Joaquin De Ibar Aguado who took the role of project manager on the migration to OctoPerf. Joaquin would help integrate OctoPerf in the factory as well as migrate a few key projects as a proof of concept.

OctoPerf 11.7 - Pacing, monitoring, dynatrace and more

This new release of OctoPerf brings a lot of long awaited features. This is all based on your feedback, so make sure to let us know what you would like to see in OctoPerf next!

Of course we have a few plans of our own for the future, but I strongly believe that a good software can only result from a good collaboration between users and developers.


Pacing your execution


If you ever had to execute a load test campaign you are probably aware that it's not only a question of concurrent users, you also need to define the execution rate of each user.

JMeter provides a Constant throughput timer that is also available in OctoPerf, this way you can define a target hit rate and the timer will increase or decrease to try to maintain this rate:


The main problem with this timer is that it is incompatible with anything that influences sub requests like the automatic resources and follow redirects option.

It's also often difficult to translate real business transactions activity to a certain number of hits/s.

Asynchronous API Performance Testing with JMeter

The principles behind performance testing API’s does not differ from the principles behind the performance testing of any application.

Many API’s however are Asynchronous and a valid response from the API does not necessarily mean the transaction is complete which can cause a problem when measuring the performance of API’s.

There are however ways around this and we will explore these in this post.

Sample JMX and DB files for this blog post are available for download: