Cost Effective Web Application Load Testing

How LBi Software successfully load tested its applications using open source tools

What is Load Testing?

Load testing is the process of putting demand on an application and measuring its response. It usually refers to modeling the expected usage of a software application by simulating multiple users logging on concurrently. As such, this testing is critical for multi-user systems, often ones built using a client/server model, such as web servers.

Load testing tools differ from regression testing tools. Load testing tools work at the procedure level. Regression testing tools are typically “record and playback” tools that work at the GUI object level. For example, a regression testing tool will simulate a mouse click on an “OK” button on the browser, but a load testing tool will send out the hypertext that the browser will send after the user clicks the “OK button”, and it will send out the hypertext for multiple users each having a unique login ID and password.

Load testing also differs from stress testing, which evaluates the extent to which a system keeps working when subjected to extreme work loads or when some of its hardware or software has been compromised. The primary goal of load testing is to define the maximum amount of work a system can handle without significant performance degradation.

Load testing can identify issues with record locking, concurrent transactions, synchronization issues and insufficient hardware. Through load testing, hardware requirements can be accurately determined.
Load Testing Tools

For enterprise level testing, there are packages such as Load Runner and WebKing that are available to support large systems. Parasoft’s WebKing is an automated testing solution for creating, executing and managing functional and regression test suites. WebKing can also perform load testing, leveraging the existing functional tests to perform the load tests. Load Runner is a performance and load testing product by Hewlett-Packard used for examining system behavior and performance, while generating actual load.

There are open source options with similar capabilities, such as JMeter and TestMaker. JMeter is an Apache Jakarta project that can be used as a load testing tool for analyzing and measuring the performance of a variety of services, with a focus on web applications. PushToTest’s TestMaker is a platform for test automation, service governance, and business service management. For Java developers, TestMaker is a framework for turning unit tests into functional tests, creating load and scalability tests, and creating service monitors automatically.

The tools mentioned above all require the tester to have dedicated servers. BrowserMob is another option available to testers who do not have access to a dedicated server. BrowserMob allows the user to define and schedule load tests over the Internet using 3rd party servers and virtual users to send a stream of data to the tester’s site. Actual browsers are spawned, which makes this close to a real user experience.
LBi Software Experiences with Load Testing

For its Load Testing, LBi Software has had success with TestMaker, BrowserMob and JMeter.
TestMaker

  • LBi tested its standard web applications with this tool.
  • LBi created Selenium scripts for Functional Testing. TestMaker was able to use many of these same scripts for its Load Testing, making extra scripts unnecessary.
  • LBi took two approaches:
    • An environment within LBi’s network, with multiple testing nodes and one server. This was sufficient for small load tests.
    • For load tests that numbered into the thousands and tens of thousands, LBi utilized Cloud Computing, specifically Amazon Web Services (AWS). The various nodes were in the cloud, as well as the main server. The number of nodes and servers could easily be increased, as well as the computing power of the Cloud servers. (Please note: Mixing the cloud solution with a local network solution is possible, but be aware that your internet pipe may become a bottleneck due to bandwidth limitations.)

BrowserMob

  • Selenium scripts and the target URL were sent to the BrowserMob service. BrowserMob utilized the Selenium scripts to spawn multiple instances ofbrowsers, running the load tests from each browser against the submittedURL.
  • If any errors were encountered, they were sent via email.
  • This was utilized as a load testing source, as well as a means to verify that results from other load testing tools were accurate.

JMeter

  • LBi used JMeter for AJAX-heavy web applications
  • Performed very well against these complex applications, giving accurate and consistent results on every run.
  • Uses a simple GUI to record Load Testing scripts. While it does not use Selenium scripts, the GUI is simple enough to easily record tests.
  • Can include both in-network and Cloud Computing options. LBi achieved similar results with both.

 

Web technologies have exposed more users to business applications. For example, a benefit enrollment application will be used company wide by 10,000 employees, all during a small period of time (open enrollment). LBi has found it’s essential to load test these web applications to ensure successful functionality with multiple users while accurately establishing hardware requirements. Load Testing is now an essential piece of the application project lifecycle.

  • Mike G says:

    Very interesting. Would you have a specific tool you would use depending on the project?

  • George Boutis says:

    Yes. JMeter worked better for AJAX apps and TestMaker for “web 1.0″ apps. In general, if I had to pick one it would be JMeter.

    1. *