Monday, 23 November 2015

An understanding of Performance Testing



Performance Testing of an application ensures its responsiveness, reliability, throughput and future scalability under a certain workload. Performance testing determines the following for an application.

-           Assess readiness for production.

-           Compare performance against performance criteria.

-           Find performance issues.

-           Determine throughput levels.




Performance Testing can be divided into the following test activities:

-           Performance Test: It is a technical investigation that determines characteristics such as responsiveness, scalability and throughput of the application system.

-           Load Test: It verifies the performance of the application under different conditions of work load ranging from normal to peak conditions. It helps to determine the response time, resource utilization levels, and throughput rates and further identifies the breaking point of the application on an assumption that the breaking point occurs within the peak load condition.

-           Endurance Test is classified under load testing. It validates the performance of the application when it is subjected to volumes of workload over a period of time. This helps to calculate the Mean Time between Failure and Mean Time to Failure for the application. 


-           Stress Test: it verifies the performance of the system when it is subjected to work beyond peak load conditions. The bugs generated here include synchronization problems, memory leaks etc. Stress test determines how the system functions under extreme loads.

-           Spike Test is classified under stress test. It validates the performance of a system by subjecting it repeatedly to load models beyond anticipation for short periods of time.


-           Capacity Test: This test determines how many transactions the application will support and still meet its performance parameters. It basically determines the future scalability of the system.

Risks Addressed by Performance Testing


-           Speed related risks

-           Is the application fast enough?

-           Is the application able to process the data before it becomes outdated?

-           Is the application able to provide the latest information?

-           Is the application able to respond within time before an error occurs?


-       Scalability related risk

-       Is the application able to provide consistent response time?

-           Is the application able to store all the data in its life time?

-           Is there any warning flag that shows it is reaching its peak capacity?

-           Will the application secure under heavy usage?

-           Will the application get compromised under heavy usage?

-           Will the application be able to handle heavy work loads?


-     Stability related risk

-           Is the application able to run for longer periods of time without inconsistencies?

-           What happens to incomplete transactions during abrupt system failure?

-           Will the application still function seamlessly once rebooted?

-           What are the probabilities of a system crash?

-           Can the system be scaled up or down without putting it down?

The main activities of performance testing are as follows:


-           Test Environment Identification

-           Identification of the Performance Criteria

-           Planning and designing of tests

-           Configuration of the test environment

-           Implementing the test design

-           Executing the tests

-           Analyzing results, reporting and retesting.

Conclusion

The goal of carrying out performance testing is not to find out bugs but to eliminate them. It is necessary before releasing the application into the market. There are a number of performance testing tools available. HP Loadrunner, HTTP Load and Proxy Sniffer are a few.