In this article we are going to see what is Load testing and how to do it. I will try to discuses about strategy to perform Load testing. In my other Load test tool specific post, I will explain how to implement a load test.
Load testing is the process of putting demand on a system or device and measuring its response. In case of software, the demands will be the functions which are needed to be performed and our system will have to perform those.
For example,A load test will define and measure a computer/ peripheral/ server/network /application’s maximum level of work of its specifications.
Primary Goals of load testing are -
- To define the maximum amount of work a system can handle without significant performance degradation
- For comparing capabilities and accuracies of a system with other systems (under controlled lab conditions).
- To get idea about the system on how it functions in real life.
- To get different type of report for having a overall idea on a new or legacy system.
There are mainly two type of load testing can be performed
A. Longevity testing :
This will measure the system’s ability on how long the system performs on standard operations(standard load). The main focus will be on how long(the time) the system is stable and consistent.
B. Volume testing :
This will measure the system’s ability on how the system is stable on heavy operation(heavy load) in standard time. The main focus will be the volume of the operations(load) that system can handle. This load may be performed by multiple users.
Both have pinpoint bottlenecks, bugs and component limitations. EX-A mobile may have a fast processor but a limited amount of RAM (memory). Load testing can provide us with a general idea of
- how many applications or processes can be run simultaneously while maintaining the rated level of performance.
- How long the mobile will be stable with operating standard applications.
- How many users can use the application’s certain function (if it is a mobile app using web service)
To perform a load test you may go through following steps
- Define the functions to be perform for the load test .
- Define the time for performing the functions.
- Make a bottom line standard system behavior to define the bugs/issues(like , set a time for perform some operation or set some operations to run for certain period of time)
- Define the measuring parameters(what to monitor)
- Choose suitable reports(grid results, charts, graphs etc) to monitor the results.
- Choose alert/marking type to determine alarm points(defining bugs).
- Choose tools meeting the above requirements.
For different scenarios, load testing measuring parameter can be different.
For a desktop/mobile application (not using data network)
- Use of processor/memory/disk space/netwrok bandwidth/time on certain functions.
For a web application/service/data server/applications using internet(desktop/mobile)
- Amount of time on certain functions.
- Number of users concurrently can use certain functions.
- Number of functions can be used in certain time
Some tools :
- JMeter
- Load UI
- Load Runner
- Visual Studio Load test
- Eclipse Load test tool
- SOASTA
- WAPT
- Gatling
- Grinder
Some Load testing areas:
- Performing extreme process using functions(like complex logic operation, tree operations)
- Writing and reading data to and from a hard disk continuously
- Downloading a series of large files from the Internet
- Log in to a same system with large number of users.
- Exchanging big number and big size of mail in a mail server.
- Downloading a series of large files from the Internet.
- Running multiple applications on a computer or server simultaneously.
- Assigning many jobs to a printer in a queue.
- Large amount of permission concurrently occurs as accepted/rejected/filtered.
I will try to increase the more load test areas incrementally
Note : Load testing is a part of a performance testing. I will cover performance testing in separate post
Thanks