Web Application Load Simulator

Introduction

LoadSim is a web application load simulator. It allows you to create simulations and have those simulations run against your webserver.

While I have used and followed quite closely several open source projects this is my first attempt at actually managing one. Please bear with me as I learn both the ins and outs of managing such a project as well as how to best manage one using the SourceForge website.

Motivation

LoadSim began life after I spent a frustrating several weeks trying to load test a consulting client's web site. The web-based application was fairly complex and to get as accurate information as possible I wanted to be able to faithfully recreate the usage patterns of real users. Nothing I could find in the free software world seemed to fit the bill and commercial products were prohibitively expensive and in many cases offered many features that we didn't need.

My search did uncover JMeter, which I used for some basic load testing. JMeter will let you pound a way at a website with some number of virtual users. It's shortcoming, at least for the application being tested, was that every virtual user would submit the same exact links with the same exact form and querystring data. Because the functionality of JMeter was close to what I needed I started reading through the JMeter source code and found the core simulation engine to be a good starting point for what would become LoadSim. I took the JMeter engine, as well as JMeter's cookie manager, modified them, and added some Tcl extensions so that I could script highly dynamic simulations. To help analyze the results I added some basic statistics routines. Finally, I added some rough support for generating HTML pages that could summarize the results.

Anway, when I looked up I thought I had a pretty useful tool and decided to release it under an open source license.

Between the first version and the one I am working on now a good deal has changed. Most importantly, the way simulations are specified has undergone substantial change. Instead of using Tcl to specify the simulation you now do it by creating an XML file. I made this change because I found the Tcl approach to be a bit cumbersome and wouldn't support a GUI frontend very well, which is something I would like to add in future.

Features

LoadSim is currently in a pre-alpha state. What that means to me is that most of the functionality is present, but not much testing has taken place. Most of the following features are already implemented but some, most notably the statistics and publishing, are in a fairly rough state and are not very usable. By the full release, however, the following feature set will be supported:

Acknowledgements

LoadSim would not exist without a lot of help from other open source projects. Here is a list of projects I would like to thank for making some really great software freely available.

Source Code

Anonymous CVS Access

This project's SourceForge CVS repository can be checked out through anonymous (pserver) CVS with the following instruction set. The module you wish to check out must be specified as the modulename. When prompted for a password for anonymous, simply press the Enter key.

cvs -d:pserver:anonymous@cvs.loadsim.sourceforge.net:/cvsroot/loadsim login
 
cvs -z3 -d:pserver:anonymous@cvs.loadsim.sourceforge.net:/cvsroot/loadsim co modulename


You can also browse the CVS respository.

Mailing Lists

Subscribe to the mailing lists.

Documentation

There is currently no user documentation. I will be trying to rectify that as quickly as possible. Over time I will be adding not only comprehensive documentation for LoadSim specifically, but also more general testing documentation. I would also like to provide as many links to other sites devoted to testing. If anyone knows of any useful links, please let me know.

I do have some JavaDoc, however.