WebSizr 2002 - Capacity Planning, Performance Analysis and Stress Testing Framework for HTTP Servers and Applications
CONTENTS
WebSizr Feature Summary - At a Glance
WebSizr Function Summary
Platforms
Script File Parsing and Command Verbs
Using WebSizr - A Tutorial

This section provides a screen-by-screen illustration of using WebSizr. We will be conducting a simple demo test to show some capabilities of WebSizr.
 
Using the SETUP Applet

The SETUP applet allows you to set up and customize the test per your specifications. The SETUP applet has several tab panels that allow such customization and this subsection will explain these in more detail.
 
Control Panel 

Let us start with the "Control Panel" view of the SETUP screen. Note that this applet, among other things, allows you to define the duration of your test. If you do not choose a test duration, the test will run to reproduce all the events defined in  the script file(s) used for the test. The duration of the test can be limited by using the "Run Test for" checkbox and the associated numeric value for the number of seconds.


Choosing a script file to use for test 

This screen allows the user to specify the script file for this test. Remember that this script file can be either constructed/edited manually or can be generated automatically using Technovations WebCorder.
 
Choosing how many users to simulate during test 

The total number of users (Simultaneous Web Browsers) that need to be simulated for the test that we are about to conduct can be specified by either entering this in the "Concurrent Users to Simulate" field or by using the drop down button to pick from preset choices.
 
Choosing how to handle errors

The SETUP screen allows the user to specify actions on errors generated during test.
By default, all errors are ignored (but reported) and tests continue in spite of them. This setting can be used if you can allow a margin for errors to hapen during test.
The test can be configured where test users are dropped as they encounter errors. This setting may be useful to figure out the optimal number of users that can be fielded by the server or application.
The test can be configured to terminate the test when any user encounters errors. This setting is frequently used during reliability and regression testing of applications.
There is also a mode where you could choose to retry URLs whenever errors occur. This setting mimics the way some real applications work.
 
Assigning credentials to simulated users 

For each user to execute the assigned script, the user may need to log in to the server. These User names and passwords are input through the credentials file associated with WebSizr. This can be initiated using the "Edit Credentials" button. Picture below shows the format of the credentials file, which is a plain text file that can be edited using your favorite editor.

The first field in the credentials file is the User number. This is the index which helps WebSizr identify and assign usernames and passwords to various user sessions being simulated.

The second field is the name of the user and the third field is the password associated with the username. In this case, we have simplified setup by simulating the same user multiple times. Note that many applications may not allow the same user to be logged in twice. If this is the case, then the test user needs to register unique user credentials and supply them in this file.

User credentials can also be entered/edited/imported using the SIZR.CRD file as opposed to using the above Graphical interface. The SIZR.CRD is located in the WebSizr program directory.

The credentials file is also used to store cookies associated with a certain user. In cases where cookies are encountered by WebSizr. the value of the cookie is written back into this file at the end of the test. If you would like to conduct tests by using pre generated cookies, you can input these values into the credentials file.
 
The Screens and Result Logs Panel 

Now back to the details of the SETUP screen. The SETUP screen allows the test user to start a new test. Before we start a new test, let us look at some of the other settings that can be manipulated as part of test SETUP.

There are 2 types of running logs that WebSizr can keep during test - Result Logs and Screen Logs -
 
Result Logs: Specifying the Log file for test.
Result Logs contain data for each operation performed by WebSizr during test. We crafted out a simple script file to retrieve a JPG image using the script file and conducted the test with 5 users. This Result data (that we decided to log in Abstract form) is shown below.

Time:5818, USER#:5, RT:1636ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:6353, USER#:4, RT:1671ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:7396, USER#:3, RT:1629ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:7863, USER#:2, RT:1618ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:8907, USER#:1, RT:1757ms, OP:GET, URL=http://test:80/wsstat.jpg

The Time: field shows the relative time in Milliseconds from test start time. The User#: field is the identity of the simulated user for the experiment. The RT: field shows the Round-Trip Response Time for this operation, and lastly, the URL: field shows the URL that was hit during the test.
 
Instrumenting additional detail from WebSizr Runs. 

Let us see what would happen if we rerun the experiment with Result Logging to get "Detailed(Socket Level Timing)" info.

Time:9950, USER#:5, OP:GET, ToCreateSocket:32ms, ToConnect:5ms, ToSendCmd:0ms, ToReadFirstByte:11ms, ToReadRestOfBytes:1598ms
Time:9950, USER#:5, RT:1666ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:11551, USER#:4, OP:GET, ToCreateSocket:52ms, ToConnect:4ms, ToSendCmd:0ms, ToReadFirstByte:11ms, ToReadRestOfBytes:1606ms
Time:11551, USER#:4, RT:1674ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:12208, USER#:3, OP:GET, ToCreateSocket:28ms, ToConnect:5ms, ToSendCmd:0ms, ToReadFirstByte:11ms, ToReadRestOfBytes:1539ms,
Time:12208, USER#:3, RT:1583ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:13946, USER#:2, OP:GET, ToCreateSocket:5ms, ToConnect:4ms, ToSendCmd:0ms, ToReadFirstByte:11ms, ToReadRestOfBytes:1560ms
Time:13946, USER#:2, RT:1581ms, OP:GET, URL=http://test:80/wsstat.jpg
Time:14599, USER#:1, OP:GET, ToCreateSocket:5ms, ToConnect:4ms, ToSendCmd:0ms, ToReadFirstByte:11ms, ToReadRestOfBytes:1565ms
Time:14599, USER#:1, RT:1585ms, OP:GET, URL=http://test:80/wsstat.jpg

In addition to the abstract log information, the detailed timing information about when certain events happened for these requests is presented.

You will notice that adding the 5 quantities above is what results in the overall ResponseTime for the HTTP request. All times are in units of Milliseconds.
 
Screen Logging - Specifying recording of data read back from the System Under Test. 

Screen logging is the log that keeps track of the data read by the "test browser". You can optionally decide not to log this data to avoid additional IO on the load generator machine, but this could come in handy for debugging applications under load.
If you conducted a certain test where there were failures only with a load of 200 simultaneous users. How would you debug this problem ? You would enable screen logging to understand what happened during test execution and analyze the screen logs to understand the nature of the problem. what would make it more convenient is to have the ability to log screens for each simulated user into a separate file. This would make it easier to read the screen logs. Also, logging into separate files provides the ability to compare screen output between different users.

The Screen page size is the size of the buffer that is used to collect data that is read from the server. This should be larger than the largest page that will be read through this experiment, but also should not be too big because this consume valuable run-time memory resources.
 
The Miscellaneous Settings Panel

Stats Collection Definitions
Cookies/Proxies Panel


Defining Test Acceptance Criteria

The "Vital Statistics" view of the run-time monitor shows performance statistics through the test as the test progresses. Latency (Response Time) and Throughput (URLs/Minute) are displayed at the top of the viewing panel.

Test Warm-up Time is the time to setup the experiment. This starts from the time the user hit the "Start Test" button to the time when the first user is generated.
Test RampUp Time is the time to start up all the users for the test. This is measured from the time when the first user starts up to the time when the last user is started up.
Test Time is the time from when the last user is started up to the time when the first user completes or drops out of the test.
Ramp down Time is the exact opposite to RampUp Time. This is the time from when the first user drops off or terminates to the time when the last user drops off or terminates.

In the viewing panel, there is an indicator which shows the total number of Active users Vs. Specified Users. This shows you the progress through test RampUp, but there is a more important use for this. Consider the following example: You want to find out how many users you can put on your system without generating errors, etc. Let us for the moment think that this magic number is 632. Rather than conducting many tests to figure out this optimal number of users for your system, WebSizr allows you to come up with the answer with a single experiment. How ? Just specify the number of user in the SETUP screen to a high number. In our case, let us set it to 800. Set the "Error Handling" in the SETUP screen to "Terminate User on Errors". Start Test. As the test progresses, users who encounter errors are dropped off automatically. 632 users will be running on the system without errors and will be visible through the Run-time screen. And this is how you will know that your system can support 632 users.
 
The HTTP Status Code Display Panel

The second view of the Run-time screen is the View which show the different status codes during test. Please refer to the HTTP specification for meanings of these access codes. For more information on what these status codes mean please refer to the HTTP specification.
 
The Test Progress Panel

The "Test Progress" view of the Run-Time screen shows the Number of requests completed by category. It covers the 3 basic types of HTTP operations, GETs, POSTs and HEADs. In addition, it categorizes the commands which involve authentications separately. The GETs with Authentication and the POSTS with Authentication complete the picture. Notice that the right hand columns show the percent of total operations completed so far.
 
The Response Times Panel

Remember the Response Time Criteria that were input to the program in the SETUP screen. In the "Response Times" view, you can find out how you are doing with respect to those settings. There are 5 Response Time buckets and this view shows you how many of the requests fall into the separate categories.

When the test is complete, we will see that the number of active users will be 0. All the other Test stat values will be filled up in the "Vital Settings" view. Notice that there is a new command button on the landscape which prompts the user to "View Test Results".
 
 
 
 
Reading Test results and statistics - The Test Results Applet

The "Test Results" screen shows different statistical categories for data that was obtained during the test.

The stats show the total number of each type of operation played against the system under test. The "Average Rate" is the Throughput metric which presents the total number of operations completed per unit time on the system under test. "Average Latency" is the metric which reveals Response Time details for different operations conducted against the System Under Test. This is an average number (in milliseconds). Other Numbers presented on this screen are the Standard deviation of response time about the average Response Time, which shows the variability of individual response times from the average. There are 3 discrete points on the Response Time graph that are captured and presented on this screen - The MIN, MAX. and LAST values. These, along with the Standard Deviation can be used to get a quick synopsis of the test before going into more details.

The "ALL" category folds the metrics for the individual operations into an overall test average. It is possible that you may need more detailed statistical information than what is presented in this screen. For this exact reason, a complete audit trail of Response times and timestamps are maintained for each individual operation conducted through the test. This log is in Comma Separated Variable (spreadsheet friendly CSV) format which can be manipulated further if necessary.

From the Statistics screen, you will be given the option of documenting this test or to start a new one. If you choose to Start Another Test, you will be redirected to the Basic Setup screen. If you decide to document results, you will be directed to the screen which helps you define the elements in your test report and generate your test report.
 
Using the Document Results Applet

As you can see, we have setup the test report to write to a HTML file called demoreport.html. You can decide to log your server's configuration files, and any other test files (shell scripts, other programs used for the experiment), etc. if you want to capture a complete snapshot in time of all your test setup.

Note that you also have the flexibility to also log the content generated by the server (during the test). You need to be aware that this can log a lot of data into the test report that may not exactly be relevant to analyze the report.

After you "Commit Results", you can "View Test Results". Here is the HTML file which contains the full report of the experiment that we have been discussing all along. This is the file that you will see in your browser when you click on the "View Test Results" button.

WebSizr provides a mechanism to automatically document all test parameters and values of importance. This is useful for analysis at a later point of time.
 
Summary

WebSizr presents a powerful paradigm to setup, run, view and develop reports for experiments which simulate hundreds of users. It very easily adapts to your test plans to deliver data and results from your experiments which can be used for Capacity Planning, Performance Analysis and Tuning, Regression Testing and Patch Management. Also, you can debug applications against realistic user Workloads and configurations for Reliability and Availability.

If you are developing a mission critical application, you can performance engineer it using WebSizr. Without it, you can only guess how good your application could be under load.
If you are deploying a mission critical application and tuning it to meet ever changing user workload needs, WebSizr can not only make your deployment more robust, but also optimize your deployment cycle by providing you with the right testing technology as you incorporate new patches and versions of Application software.

Copyright © 1998-2002 by Technovations, Inc. All rights reserved.