| Your company is rolling out its new web | | | | Testers who are proficient in programming may |
| application. This web application is well | | | | want to manipulate their scripts by editing |
| designed and attractive. It has been well | | | | the code. These testers would work with code |
| tested by your quality assurance group. You | | | | written in a well known programming language |
| have spent a lot of money marketing your new | | | | such as JavaScript, VBScript or C. Once your |
| website. The website now goes live. Very soon | | | | script has been created, you may wish to put |
| you realize that your new web application is | | | | specialized checks in place. These checks |
| unable to scale to your typical production | | | | would typically be related specifically to |
| load and the response times and performance | | | | the application under test. For example you |
| reach completely unacceptable levels. Your | | | | may wish to check that the response returned |
| web logs indicate that most of your website | | | | by a certain web request meets certain |
| visitors simply leave the new website before | | | | textual criteria. This would involve the |
| buying anything since its response times are | | | | placement of a text checkpoint. A text |
| very poor. You start to panic, and one of | | | | checkpoint can verify that a given text |
| your friends tells you that the reason your | | | | segment is present or is not present in a |
| application does not perform adequately is | | | | specified portion of the web page. Once you |
| that you do not have ample hardware. Hearing | | | | have finished the creation of the script you |
| this, you decide to add more server hardware. | | | | would typically test the script on your own |
| While this has a small effect on the website | | | | machine as a single user to ensure that the |
| response time, it is still woefully | | | | test script runs as intended. You are now |
| inadequate. You soon realize that problem | | | | ready to perform a performance based load |
| does not really lie with the hardware but | | | | test. A good load testing tool will allow the |
| rather with the web application itself. It | | | | tester to fine tune the execution of the |
| appears that your web application was not | | | | test. This means that it will allow the |
| well optimized for the typical peak loads. It | | | | tester to choose the number of concurrent |
| becomes increasingly evident that most of | | | | virtual users, how the script ramps up, how |
| your marketing dollars were wasted. Enter the | | | | it ramps down and for how long it runs. It |
| world of performance and load testing. In | | | | should also allow the tester to create |
| order to ensure that your application scales | | | | various groups of concurrent virtual users |
| as the load increases, it is necessary to | | | | that have their own ramp up, steady state and |
| perform tests where your application is | | | | ramp down characteristics. A good testing |
| tested against a simulated load that closely | | | | tool will allow the user to distribute this |
| resembles the actual load that it will be | | | | load over several machines since a single |
| subjected to when it is exposed to the | | | | machine may be only able to scale up to a few |
| outside world. It is important to distinguish | | | | hundred users. To understand the behavior of |
| between functional or regression testing and | | | | the loaded web application, it is also |
| load or performance testing. Functional and | | | | important for the load testing tool to enable |
| regression testing is used to automate a | | | | the tester to track the performance |
| large number of scenarios to ensure that your | | | | characteristics of external components such |
| website works as intended. Load testing on | | | | as operating systems, web servers, databases |
| the other hand gauges how well your website | | | | etc. This allows the user to see how the |
| performs when it is subjected to a large | | | | performance of his application correlates |
| load, such as a large number of simultaneous | | | | with the performance characteristics of the |
| users. Load and performance testing require | | | | external component. This kind of analysis |
| the use of automated testing tools. It is | | | | will allow the tester to pinpoint the root |
| impractical if not ridiculous to try to | | | | cause of performance bottlenecks fairly |
| simulate a load of 200 concurrent users by | | | | easily. During test execution the tester |
| having a group of 200 folks sit on 200 | | | | should be able to view the performance graphs |
| machines and try to perform operations at the | | | | in real time for performance metrics such as |
| same time. Before you can begin any kind of | | | | the transaction response time, HTTP responses |
| load and performance testing you will need to | | | | per second grouped by HTTP code (e.g. 200, |
| identify the test scenarios you need to | | | | 404, 500 etc), passed transactions per |
| automate. A load testing tool will typically | | | | second, failed transactions per second, total |
| record web requests and responses based on | | | | transactions per second, hits per second, |
| user interactions with a website. As you | | | | pages downloaded per second etc. The tester |
| perform various operations on your website or | | | | should also be able to simultaneously view |
| application, the tool records all the web | | | | the performance characteristics of the |
| transactions that take place. When you finish | | | | external components described above. For an |
| recording, it generates an automated script. | | | | operating system this could be something like |
| Alternatively you could use the tool to | | | | the % processor time, for a database it could |
| manually create the script. Typically testers | | | | be the number of writes per second. At the |
| will perform a combination of the two. They | | | | end of the test, the tester would typically |
| will use the recording mechanism to generate | | | | be able to view and save this data as a |
| the skeletal foundations of their scripts and | | | | report for further analysis. Load and |
| then manually modify the scripts to take into | | | | performance testing allow you to simulate the |
| account specialized scenarios. The load | | | | behavior of your application under a typical |
| testing tool should also allow the tester to | | | | production environment. This will allow you |
| simulate constrained bandwidth situations. | | | | to plan your hardware deployment strategy |
| This means for example that it would | | | | effectively and ensure that your application |
| accurately model users who would use the | | | | will deliver the expected performance |
| application on a slow modem connection. It | | | | characteristics. Rolling out a web |
| should also allow the tester to drive the | | | | application without testing its performance |
| script using random data from large external | | | | characteristics under expected production |
| data sets. Load testing scripts can be either | | | | loads would resemble crossing a road |
| graphical or textual in nature. Good load and | | | | blindfolded. Load testing is an essential |
| performance testing tools do not require the | | | | part of the development cycle of a web |
| testers to be programmers. Testers that are | | | | application and should never be overlooked. |
| not familiar with programming will work with | | | | |
| scripts that can be graphically manipulated. | | | | Umair Khan is Founder and Chairman of |
| Graphical scripts will typically show all | | | | Verisium, Inc., a maker of vPerformer, an |
| recorded steps in the form of a hierarchical | | | | application for performance and load testing |
| structure and testers would modify any of the | | | | of web applications. |
| steps in order to modify the recorded script. | | | | |