Henry Ford revolutionized manufacturing with the first automated assembly line in 1913, incorporating the latest time-study theories to make Model T's flow through the system "like the flow of water through a pipeline." His engineers and foremen repeatedly analyzed every task in the assembly process to find ways to save valuable inches and seconds.
A lot has changed over the last century. The assembly lines of businesses today are high-performance client/server computer networks - including the Internet - that move information quickly and efficiently, speeding communications and shortening the business cycle. Implementations of Java applications and applets have emerged as the leading technology to implement client/server and Internet-based applications.
Just as Ford's engineers and foremen kept assembly lines moving smoothly, a process called load testing helps system developers isolate potential bottlenecks or problems in Java-based applications and applets. JavaLoad software from Sun Microsystems helps developers understand how these applications will behave and react under a variety of load conditions before being deployed.
From a single point of control on any tested client, anywhere in the network, Java-Load software stresses and monitors both the application under test and the network to isolate problem areas at every system level.
JavaLoad software creates virtual users to perform a specific sequence of actions that test the main functions of an application. It's multiple "users" generate workload from a series of client workstations or PCs to help answer critical questions about network and application capacity and scalability such as:
JavaLoad software load-tests both Java and non-Java enterprise applications across large, heterogeneous environments to ensure that any Java-based distributed application is rock solid - end-to-end.
- How many concurrent users can the server or application handle?
- How does system performance respond to configuration changes or system upgrades?
- What happens during peaks in usage?
JavaLoad Software's Commander Network
The commander network is the heart of JavaLoad software. Commanders generate repeatable, targeted, client-side activity and constitute a self-maintaining, distributed load-testing network. They're deployed on each host in the test network to manage and conduct the activities of the load test.
A Central Commander starts the load test on all the hosts and maintains the network time stamps, synchronizing virtual users across the network to begin at the same time. It also collects the results of the load test from the individual commanders for deposit in a central repository, where they're stored for future analysis alongside reusable test component files that can be used to construct future tests, saving time and money.
The effects of the generated load are measured through JavaLoad software's Telemetry Service and executed by the commanders (which can be used on every platform - client, middle-tier or server). They can record:
The service can be customized to collect specific application-level statistics and can graphically display the telemetry data in real time, or archive the data for postanalysis and hard-copy report generation.
- The response time of any type of client transaction
- The number of active simulated users
- Memory and thread use of any Java program involved in the application under test, server or client
- System-level statistics including CPU use, disk use and network performance.
JavaLoad Console and Session Profiles
The JavaLoad Console is the powerful graphical user interface that controls and continuously monitors the JavaLoad software load-test network across the enterprise. It's the portable point of control from which developers can design, launch, monitor and analyze the results of load-testing sessions.
The JavaLoad Console is the central place where the separate components of a load test - tasks, telemetry channels, virtual users and commanders - are pulled together into a Session Profile. The Session Profile instruction file defines what each particular load-test run should do, providing a blueprint for each aspect of the test such as:
To ensure that the right changes are made to right problems without creating new ones, JavaLoad assigns a new session ID each time the load test is run so that each set of results can be compared with earlier tests.
- Which tasks are to be performed
- Which telemetry channels to use for system measurement
- The session's number of virtual users
- Which commanders are included in the test
JavaLoad software leverages the animation capabilities of Java technology to display real-time graphical reporting. The JavaLoad Console also generates standard and customizable load-test reports for comparing different test sessions.
WebLoader and DataProxy plug-ins are available with the software, allowing it to record and replay HTTP events and JDBC and Socket messages as tasks within a normal Session Profile.
WebLoader: No Browser Required
WebLoader captures and replays HTTP events (the kind that occur on any Web browser) to test a Web or proxy server's performance and load-test Web-based applications.
WebLoader captures and records a browser's interaction with any number of Web servers in the form of HTTP events, independent of the particular type of browser used. It then creates a Java program that faithfully replays these recorded events without the need for a browser within a regular Session Profile.
The freedom of replaying HTTP events without a browser means the WebLoader playback program can be easily replicated and distributed over the entire test network to simulate a few dozen to thousands of users concurrently accessing a Web-based application.
DataProxy: Java Database and Socket Messages Captured
DataProxy enables JavaLoad software to capture Java Database (JDBC) and Socket messages in a form that can be replayed as normal tasks within the load-test Session Profile. DataProxy controls the launch of a Java application in order to capture JDBC or Socket network traffic traveling between client and server, regardless of protocol. Once it intercepts the messages, DataProxy records them to a data file and generates Java source code for a JavaLoad program that's able to multiply and replay the JDBC or Socket messages within a Session Profile. The server receiving the messages captured by DataProxy can't detect any difference between the replicated messages and the originals.
JavaLoad software's ability to simulate a wide variety of protocols frees developers to generate significant system loads without excessive amounts of hardware testing.
Load Testing in Heterogeneous Environments
Today, applications in many sectors, including e-commerce, the Web, banking, telephony, order-entry, ERP, call center and manufacturing, need load testing. Because Java technology links together heterogeneous environments, load testing these applications becomes more important than ever. With virtue of JavaLoad software being written in Java programming language, developers don't have to pay extra for each platform. This means all Java-compatible platforms can be used for load-testing, which yields a more thorough and realistic load-test of both client and server. Sun Microsystem's JavaLoad software can be used throughout the product development life cycle, and is unique among load-testing tools because it can validate architectures, benchmark hardware and stress the integrated system.
For more information about the JavaLoad member of the SunTest suite contact your SunTest product specialist, or call 1 888-TEST-JAVA.
About the Author
Matt Evans is the principal developer of JavaLoad
as well as the manager of the SunTest tool suite
engineering team at Sun Microsystems in Menlo Park, California. With Sun for more than eight years, Matt focuses primarily on development and management of projects in the area of software verification technologies. Matt can be reached
at [email protected]