Performance Testing of an application determines
its responsiveness, throughput, reliability and scalability under a given
workload. This process evaluates the software against its performance criteria.
It compares the software performance on multiple system configurations and
quantifies the levels of throughput.
Performance testing usually identifies the bottlenecks in a software
application and helps to identify its compliance its initial requirements. The
results generated by performance testing also helps to assess the hardware
configurations that will be required while deployment.
Types of Testing:
The types of performance testing can be
categorized into the following three categories.
-
Performance
Testing: This process validates the responsiveness, speed, scalability and
stability of the software. It measures the response times, throughput and the
level of resources utilized by the software. This category is the super set of
all the performance related testing.
-
Load
Testing: This validates the performance characteristics of the software
application when it is subjected from normal to peak load conditions that can
be expected during production. It aims at identifying the breaking point of the
application within peak load conditions. Endurance test can be considered as a
subset of load testing. It determines the performance of the system under load
conditions over an extended period of time. Endurance level of a system can be
defined by Mean Time Between Failure(MTBF) and Mean Time to Failure(MTTF).
-
Stress
Testing: This process is an extension of load testing.
It verifies the performance characteristics of the system when it is subjected
to conditions beyond the anticipated workloads during production. It also tests the system under other
stressful conditions such as limited memory, insufficient disk space and server
failure. These tests help to estimate the conditions under which the
application is liable to fail. It reveals bugs that can occur only under
extreme load conditions. This helps to identify the indications which need to
be monitored to avoid failures. Spike testing can be considered as a variation
of stress testing that verifies the performance of a system on repeated extreme
loads for short periods of time.
-
Capacity
Testing: It determines the upper limit of the users and transactions that can
be supported by the software. It is conducted in conjunction with capacity
planning. This can be used to anticipate the additional resources required to
support increased user base or increased data volumes. It also helps to
determine whether the system should be scaled up or scaled down in future.
Automated Performance Testing Tool:
JMeter is an automated open source testing tool
in Java used to perform load and stress testing of application software. It can
be used to test the performance of both static and dynamic resources of an
application. It can simulate heavy loads on a server or group of servers to
test overall performance under different load types. It generates the test
results in graphical formats like charts and tables which are very easy to
understand. It can be installed by running the JMeter Shell script in Linux or
by starting the .bat file in Windows.
Conclusion:
Performance Testing is an indispensable activity
for assessing business risks. Besides identifying business risks, it reveals
information about usability, functionality and security of the system. It is a
qualitative and a quantitative evaluation of the software under test. It
generally occurs at the end of the test plan. However, it should be also
incorporated in the earlier stages of the development system when important
logical structures are being decided.