Web Performance Testing is executed to provide accurate information on the readiness of an application through testing the web site and monitoring the server side application. This article describes different techniques and aspects to be considered when performing Performance Testing on Web Applications.
Today, when a telephone system is installed in a new neighborhood, it will always work perfectly. The phone will ring, the line will be OK and people can communicate with each other even if all the neighbors are speaking at the same time. This is because overtime algorithms have been developed so it is known how much hardware is needed to support a specific area. Web technology is very different. There can be a different number of servers, different amounts of resources per server, different and new technologies, many different parameters can be configured to improve performance and naturally code can always be improved. As the number of mission critical applications Web sites increases, so too there is an increasing need to test these applications in order to ensure and guarantee the business and marketing needs. As the web does not have the same loyalty as traditional trading, poor performance will let users' easily move over to the competition.
What is Web Performance Testing?
Web Performance Testing is executed to provide accurate information on the readiness of an application through testing the web site and monitoring the server side application. This is done by simulating load as close as possible to the real conditions in order to evaluate if the application will support the expected load. That allows you to guarantee system performances and to identify and help in fixing possible issues, identifying possible bottlenecks and providing useful advice about how to fix problems (tuning of system parameters, modification of software or hardware upgrade).
Testing is an art and science and there may be multiple objectives for testing. It is important to know what the objectives are before testing can begin. Naturally there is always interest in the different page times and specifically the slowest ones. These slow pages can point to the bottlenecks in the application. An objective may also be to make sure pages are downloaded within a specific time. Companies always want to know what this desired time is but it differs from application to application. It is desired to know the number of concurrency that the application can support and at how many users there is a decline in application performance. Does the page time reduced from 1 to 3 seconds which may be acceptable or is it greater than 30 seconds? Another objective may be to know the number of users which can crash the application.
Type of Load Testing
Once the objectives have been set, then the type of testing can be determined.
Smoke Test: A simple quick test, to check if the application is really ready to be tested. This is not normally mentioned, but without it, much time and resources are wasted.
Load Test: This is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the application under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transactions within the set duration. This test will give out the response times of all the important business critical transactions. If the database, application server, etc are also monitored, then this simple test can itself point towards the bottleneck in the application.
Stress: This testing is normally used to break the application. Double the number of users is added to the application and the test is run again until the application breaks down. This kind of test is done to determine the application's robustness in times of extreme load and helps application administrators to determine if the application will perform sufficiently if the current load goes well above the expected load.
Spike Testing: Spike testing, as the name suggests is done by spiking the number of users and understanding the behavior of the application, whether it will go down or will it be able to handle dramatic changes in load.
Endurance Testing (Soak Testing): This test is usually done to determine if the application can sustain the continuous expected load. Generally this test is done to determine if there are any memory leaks in the application.