Storm Forecast Blog

On APIs, Load Testing, Performance and StormForger.


Introducing StormForger

Hi, my name is Sebastian (@tisba on Twitter) and I'm working on a project called StormForger. In this blog I'll keep you posted on API, performance and load testing related topics.

StormForger is a Load Testing as a Service platform, targeting HTTP-APIs. By providing a comprehensive and expressive DSL to specify your test cases and a high degree of automation, I try to enable people to do Continuous Load Testing.

To tell you in more detail what StormForger is about, I just recently published a high-level introduction video about it. If you are interested in testing your APIs, just get in contact. I'd love to have a chat with you on that topic, tell you more on the project or even setup a demo specifically to test for your APIs.


Here is a transcript of the video:

Hi, my name is Sebastian and today I would like to introduce StormForger – a next generation, comprehensive API load testing solution. But before I start with StormForger, let me give you some context.

HTTP-based APIs can be found everywhere. Examples for APIs are…

  • APIs to web applications
  • backends for mobile applications and online games
  • single page web applications
  • tracking & monitoring systems

and so on. Applications that offer such APIs can be complex systems with extensive software stacks and their performance can be hard to predict.

While you most likely have test suites in place, that cover functional requirements, you might lack good answers to questions like:

  • How fast is my system?
  • How many requests can my architecture handle?
  • Can my application scale?

Load testing is a way of providing data to answer those questions.

It is, simply put, the process of putting a specific amount of traffic on a target system while observing the targets behavior.

For example, you might be interested in the response time, resource usage or error rates of your application under a specific amount of pressure.

Let's have a very brief look at what you have to do in order to run a load test. You have to…

  • set test goals
  • plan tests
  • provision test resources
  • setup and deploy the test case
  • execute the test
  • monitor the running test
  • tear down the test environment
  • gather and analyze log and other sensor data
  • evaluate & compare results to previous test runs

In short: Load testing can be a time consuming and challenging task. And it isn’t easy to get started with. But performance can be crucial to success, so you want to perform load tests on a regular basis. So you should ask yourself the question, why not run load tests like you do Continuous Integration?

The solution to target this in a fast and easy way is StormForger.

StormForger is a load testing as a service platform targeting HTTP APIs. It tries to simplify and automate as much as possible in regard to setting up, executing and analyzing API load tests. More importantly, StormForger tries to enable the user to conduct affordable comprehensive and reproducible load tests on a regular basis.

I think that getting started with load testing should be a no-brainer. My vision is to enable people to run load tests continuously: Continuous Load Testing so to speak. I also want to provide you with ongoing visibility into performance characteristics.

To achieve this, StormForger will provide you with the following:

  • easy to understand test case language to specify your tests
  • management of test resources (setup, deployment, execution & monitoring)
  • detailed analytics of results
  • tools and metrics to compare multiple test runs over time
  • comprehensive HTTP API to automate and integrate StormForger into your environment

StormForger is in open beta right now. If you want to try it out, get in contact.

Thanks for watching and happy load testing!

Create repeatable Performance & Load Tests easily using our JavaScript DSL to verify your HTTP APIs. StormForger enables you to do continuous performance testing to make the web a faster place. Learn more...

definition.setTarget("API.EXAMPLE.COM");

definition.setArrivalPhases([
  {
    duration: 5 * 60,  // 5min in seconds
    rate: 1.0,         // clients per seconds to launch
  },
]);

definition.session("hello world", function(session) {
  session.get("/", { tag: "root" });
});
:production