Monday, 23 February 2015

Load Test


Load testing is a kind of performance testing which determines a system's performance under real-life load conditions. This testing helps determine how the application behaves when multiple users access it simultaneously.


This testing usually identifies -
· The maximum operating capacity of an 
application
· Determine whether current infrastructure
 is sufficient to run the application
· Sustainability of application with respect
 to peak user load
· Number of concurrent users that an 
application can support, and scalability 
to allow more users to access it.


It is a type of non-functional testing. Load
 testing is commonly used for the Client/Server, 
Web based applications - both Intranet and 
Internet.

Need of Load Testing:

 Some extremely popular sites have suffered serious downtimes when they get massive traffic volumes. E-commerce websites invest heavily in advertising campaigns, but not in Load Testing to ensure optimal system performance, when that marketing brings in traffic.
Consider the following examples
· Popular toy store Toysrus.com, could not handle the increased traffic generated by their advertising campaign resulting in loss of both marketing dollars, and potential toy sales.
· An Airline website was not able to handle 10000+ users during a festival offer.
· Encyclopedia Britannica declared free access to their online database as a promotional offer. They were not able to keep up with the onslaught of traffic for weeks.
Many sites suffer delayed load times when they encounter heavy traffic.
Few Facts -
 
· Most users  click away after 8 seconds delay in loading a page
· $ 4.4 Billion Lost annually  due to poor performance

 

Why Load Testing ?

· Load testing gives confidence in the system & its reliability and performance.
· Load Testing helps identify the bottlenecks in the system under heavy user stress scenarios before they happen in a production environment.
· Load testing gives excellent protection against poor performance and accommodates complementary strategies for performance management and monitoring of a production environment.

 

Goals of Load Testing:

Loading testing identifies the following problems before moving the application to market or Production:
· Response time for each transaction
· Performance of System components under various loads
· Performance of  Database components under different loads
· Network delay between the client and the server
· Software design issues
· Server configuration issues like Web server, application server, database server etc.
· Hardware limitation issues like CPU maximization, memory limitations, network bottleneck, etc.
Load testing will determine whether system needs to be fine-tuned or modification of hardware and software is required to improve performance.

 

Environment needs to be setup before starting the load testing:

Hardware Platform
Software Configuration
· Server Machines
· Processors
· Memory
· Disk Storage
· Load Machines configuration
· Network configuration
· Operating System
· Server Software

 

Prerequisites of load testing:

The chief metric for load testing is response time. Before you begin load testing , you must determine -
· Whether the response time is already measured and compared - Quantitative
· Whether the response time is applicable to the business process - Relevant
· Whether the response time is justifiable - Realistic
· Whether the response time is achievable - Achievable
· Whether the response time is measurable using a tool or stopwatch - Measurable

 

Strategies of load Testing:

There are many numbers of ways to perform load testing. Following are a few load testing strategies-

· Manual Load Testing: This is one of strategies to execute load 
testing, but it does not produce repeatable results, cannot 
provide measurable levels of stress on an application and is
 an impossible process to coordinate.
· In house developed load testing tools: An organization, which
 realizes the importance of load testing, may build their 
own tools to execute load tests.
· Open source load testing tools: There are several load testing 
tools available as open source that are free of charge. 
They may not be as sophisticated as their paid counterparts,
 but if you are on a budget, they are the best choice.
· Enterprise class load testing tools: They usually come with 
capture/playback facility. They support a large number of 
protocols. They can simulate an exceptionally large number 
of users.

 

Load Testing Process: 

The load testing process can be briefly described as below -
1. Create a dedicated test environment for load testing
2. Determine the following
3. Load Test Scenarios
4. Determine load testing transactions for an application 
Prepare Data for each transaction
Number of Users accessing the system need to be predicted
Determine connection speeds. Some users may be connected via leased 
lines while others may use dial-up
Determine different browsers and operating systems used by the users 
Configuration of all the servers like web, application and DB Servers
5. Test Scenario execution and monitoring . Collecting various metrics
6. Analyze the results. Make recommendations
7. Fin-tune the System
8. Re-test

 

Guidelines for load testing:

1. Load testing should be planned once the application
 becomes functionally stable.
2. Large number of unique data should be ready in the 
data pool
3. Number of users should be decided for each scenario 
or scripts
4. Avoid creation of detailed logs to conserve the disk 
IO space
5. Try to avoid downloading of images in the site
6. Consistency of response time over elapsed period should
 be logged & the same should be compared with various
 test runs

 

Difference between Load and Stress testing:

Load Testing
Stress Testing
Load testing identifies the 
bottlenecks  in the system under 
various workloads and checks 
how the system reacts when
 the load is gradually increased
Stress testing determines the breaking
 point of the system to reveal the 
maximum point after which it breaks.

 

Difference between Functional and Load Testing:

 

Functional Testing
Load Testing
Results of functional tests are easily
 predictable as we have proper steps and
 preconditions defined
Results of load tests are unpredictable
Results of functional tests vary slightly
Load test results vary drastically
Frequency of executing functional 
testing will be high
Frequency of executing load testing will be low
Results of functional tests are dependent 
on the test data
Load testing depends on the number of users.

 

Load Testing Tools:

Tools recommended for load testing are:
· Loadrunner
· Web Load
· Astra Load Test
· Radview's Web Load
· Studio, Rational Site Load
· Silk Performer

 Loadrunner and Web Load are the popular tools. 
 Their features are listed below -

Load Runner: 

Load runner is HP tool  used to test the applications under normal and peak load conditions. Load runner generates load by creating virtual users that emulate network traffic. It  simulates real time usage like a production environment and gives graphical results.

 

Web load: 

Web load supports HTTP1.0 and 1.1, including cookies, proxies, SSL, TSL, client certificates, authentications, persistent connections and chunked transfer coding. During execution, Webload gathers results at a per-client, per-transaction and per-instance level from the computers that are generating the load.

 

Advantages and disadvantages of Load testing:

Following are the advantages of Load testing:
· Performance bottlenecks identification before production
· Improves the scalability of the system
· Minimize  risk related to system down time
· Reduced costs of failure
· Increase customer satisfaction
Disadvantages of Load testing:
· Need programming knowledge to use load testing tools.
· Tools can be expensive as pricing depends on the number of virtual users supported.

 

Conclusion:

Load testing typically improves performance bottlenecks, scalability and stability of the application before it is available for production. This testing helps to identify the maximum operating capacity of applications as well as system bottlenecks.

1 comment:

  1. Hello Kripal,
    The Article on Load testing is a kind of performance testing, gives detailed information about it. Thanks for Sharing the information about Load Testing in Web Services, For More information check the detail on the load testing here Software Testing Company


    ReplyDelete