I really enjoy finding and using good tools. There are a couple of tools I have been using lately that give me that warm fuzzy feeling in spades, so I thought I would share.
The first one is curl-loader. This is a really nice tool for load testing web applications. It is based on cURL1, which as we all know, is one the best ways to test web applications. Being based on libcurl means that you can load test applications that require HTTP authentication2, redirection following, SSL or pratically any other of the myriad of features supported by cURL.
The only issue I have run into is that test scripts must be explicit about the exact URIs to operate against. This is not really surprising, but if you have multiple setups all with different host names it can get a little tedious modifying the scripts for each environment. Fortunately, the script a simple text format that is amiable to being generated. I knocked to together a couple of Ruby scripts to generate various scripts for our application in just a couple of hours – and that included learning the curl-loaders script format.
The other tool have been having some success with is VirtualBox. VirtualBox is a open source virtual machine. It is available via
apt-get in Ubuntu and works really well3. I mostly use virtualization to verify that our software really does function correctly when there are several servers in a cluster. You cannot really extract much information about performance or scalability from a completely virtualized environment (at least not when all the pieces are running on my laptop) but you can tell if it is going to work or not. VirtualBox seems quite fast and it is dead simple to setup new virtual machine instances, all of which make it a joy to work with.
To be precise it uses libcurl, which is the functionality of the
curlcommand made available as a native library.
The ability to handle HTTP authentication is surprisingly uncommon in load testing frameworks.
The only problem I have had so far is that I put my machine to sleep when VirtualBox had control of the keyboard and when I resumed the keyboard was completely non-functional.