Skip to content

Load Testing Blog

Angular: @ViewChild() and @ContentChildren() decorators

With the release of OctoPerf's new UI we wanted to create a component that would allow our users to easily edit HTTP request actions.

The new UI being heavily inspired by IDEs such as Eclipse or Visual Studio we decided to create a component that behaves likes the project settings panel of IntelliJ:

IntelliJ Settings

This panel displays a tree on its left part with a search input on top. The content of the left part changes depending on the current selection.

While our simplified version will only display a list on the left panel, the idea is to create a composite component :

A visual component made of disparate or separate parts or elements, here a parent settings component and children settings panel components.

BivwAk! - Case study

BivwAk! is the transformation hub for BNP Paribas. Its goal is to bring new services and skillsets at the crossroad of all BNP Paribas entities. It's in this context that Dino learned about OctoPerf.

Dino Dona
Dino Dona is the QA lead at BivwAk! He handles all the testing-related activities.
Dino is very passionate about testing because it's a constantly evolving space.
With new methodologies and tools emerging all the time.

We met Dino at the french testing event JFTL. After a short discussion it was clear that OctoPerf would be a very good fit at BivwAk!

Scalability Testing

We are going to look at scalability testing in this Blog Post. On paper scalability testing is simple because all you are doing is increasing the load, but there are some common pitfalls that can be easily avoided. So you need to really understand what you are trying to achieve before you start.

Basic Principles

Let’s start with the basic principles: A scalability test is the process of systematically increasing load on your application under test until

  • You reach your goal in terms of desired load,
  • The system starts to become unresponsive.

If you want to get a clear picture of whether your application does scale then it is important to run your scalability test on an environment that is consistent with production, or how you expect production to be.

Clearly one of the objectives of a scalability test is to size the environment so you must also have the flexibility to increase the resources in the environment in which you are running this test.

Load Test Driven Development

We are going to explore whether Load Test Driven Development is an idea that would be worth pursuing for your organisation.

We will recap on what Test-Driven Development (TDD) is in the next section but fundamentally

Test-Driven Development is a philosophy and practice that involves building and executing tests before implementing the code or a component of a system

Now when you think about this, does it make sense to try and run a performance test before we have developed any code?

We think it does and we are going to explain why. For clarity we are not suggesting that Load test Driven Development should replace TDD but rather to compliment it.

OctoPerf v12.8 - Datadog, Json Path and sub samples

It's been a while since the last update post in july 2021, not that we haven't updated OctoPerf since then but the additions we've made are not easy to share in a blog. Allow me to take an example.

JMeter import

The thing that kept us the most busy over the years is finding the perfect way to import a JMeter project into our data model. We need to do this in order to:

  • Allow you to manipulate your virtual users in our interface even when they come from JMeter,
  • Execute each Threadgroup/Virtual user in a separate docker container to make our runtime resilient and scalable (this allows us to predict resource consumption better and allocate machines accordingly),
  • Offer a configurable report with filters instead of a static HTML.

But we must make sure to maintain the same behavior for all functionalities. And at the same time we must avoid negative impacts on our non-JMeter users (like added UI complexity, or regressions). That seems simple enough at first glance but it gets harder when you consider that JMeter allows you to put any configuration anywhere but with a different scope. For instance you can have header managers configured this way:

header-manager

Once imported in OctoPerf each Threadgroup will be a distinct Virtual User, and we need to consider carefully what to do with these headers, we must find a way to preserve the same behavior in OctoPerf.