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