Stress test your application stack and expand your toolset with Windows versions of popular Unix/Linux-based command-line utilities with this month’s tools.
Stress testing isn’t just for developers. You need to understand the impact each user has on your application stack. Relying on recommendations and capacity planning isn’t enough to make educated decisions on hardware and software requirements.
There are a number of stress- and load-testing tools out there, ranging from simple single-instance tests to multi-machine synchronized load generation that can test numerous systems and application types. One easy-to-use load test tool for HTTP applications is StressStimulus from Stimulus Technology. StressStimulus runs as an integrated component within the Fiddler Web debugging proxy tool.
Fiddler has been a staple tool for years. It helps you create, analyze and debug HTTP traffic. (In fact, TechNet Magazine has covered Fiddler in this column.) The product was recently purchased by the company Telerik, which has committed to keeping it available for free.
StressStimulus runs as an integrated component of Fiddler, so you’ll need to install Fiddler first. After running through StressStimulus installer, launch Fiddler and you’ll notice a new tab adjacent to the inspectors, composers, filters and other standard Fiddler tabs. The StressStimulus tab has a tree-based navigation section along with two detail panes. Navigation is logically presented as Test Case, Test Configuration and Test Results.
The easiest way to create a test is to use the built-in Test Recorder. The Test Recorder launches a browser instance and records your Web requests (though you could generate requests through another medium) along with a relevant query string and form-post data to create a test sequence.
If you need to, you can provide authentication credentials for running the test as well as data sources for test parameterization. This gives you distinct request patterns. For example, you can provide different form data for testing a registration system or query strings for the different method signatures provided by a Web service API. You can also provide custom response validators as raw text or regular expressions to ensure that a particular request gives an appropriate response above and beyond a standard HTTP 200 result.
Within Test Configuration, you set up the more general test structure, including how long your test should run, how many virtual users to use, how to apply the load of virtual users over time (constant or step loaded), the browser mix to apply and the simulated network connection types. For larger tests, you can add multiple StressStimulus load agents (machines configured to act as test drones to increase the load against particular endpoints beyond what one test machine could handle in terms of CPU, memory and NIC). You can also configure settings for particular weighting and step-load pattern.
StressStimulus lets you record tests to a SQL Server Compact Edition or a custom SQL Server instance. Once you’ve run your test, you can crunch the numbers within the Test Results section. Here you’ll find graph and chart tools along with data tables showing you performance metrics on requests, response times, errors, user load and so on.
StressStimulus is available in three editions: free, Pro and Enterprise. The free edition is limited, but does let you spin up a single 100 virtual user test. You can’t save the test and it’s of limited duration. The Pro edition is more full-featured, but limits you to one test case, one load generator, and 500 virtual users. The Enterprise edition gives you up to 100,000 virtual users across multiple load generators, as well as distributed load testing and cloud-based load testing. There’s also a seven-day free trial.
Pricing for StressStimulus is based on the number of virtual users. The Pro edition is $296 for 100 virtual users or $450 for 500. The Enterprise edition starts at $640 for 100 virtual users or $1,400 for 500, with additional discounts as you increase virtual user volume. There are other increments and time-based subscriptions are also available. So the next time you’re looking to spin up and roll out that new HTTP/Web-based application, consider load testing before purchasing hardware or releasing it into the wild with a tool. It could save you a few headaches, wasted time and money.
There have always been a few command-line goodies in the *nix world I wish I had in Windows. Fortunately, there are a few native Windows port projects out there. The open source and free GnuWin project has been around since 2001 and provides more than 160 utilities and toolsets as native 32-bit ports to Windows. Project development has faded, but the tools are still quite viable.
Each of the utility packages is available as a standalone installer you can download from the project Web site, so you only have to install what you need to install. If you want the whole gamut, though, rather than grabbing each package one-by-one, use the GetGnuWin32 project.
The GetGnuWin32 project maintains a digitally signed master update file containing the tools (along with their versions and dependencies), so you can download and update them all in one shot. The program hashes are verified on download as well. Here’s an overview of some of the tools to whet your appetite.
The first thing you’ll want to dig into is the CoreUtils project. This has basic file, shell and text manipulation utilities. The file, text and shell utilities include things like:
There are numerous compression and archiving tools such as gzip and arc. There are also image tools like Fax2Png, Gif2Png, or Bmp2Png. Other packages include hits such as which, to show you the full path of shell commands; wget to retrieve files over HTTP/HTTPS and FTP; and the super pattern matcher grep.
There are quite a few useful and fun tools in the GnuWin32 set. So if you find yourself yearning for a few of those oldie-but-goody *nix-based command-line utilities, check out the GnuWin project to see if has what you need.