Importance of Performance testing in software development
In software development arena, there is a
mammoth role of performance testing. Performance testing is continual process
during the life cycle of the project. It is a combined technical effort of
testers, and developers to run and maintain the application to its performance
prospects. Performance testing requires high level skill set which includes
writing test scripts, watching and appraising test results, modifying the
application and restating the process.
Simply elaborated, performance testing is a
procedure to determine the responsiveness, reliability, throughput,
interoperability, and scalability of a system or application under a given
workload. It also assesses the speed and effectiveness of system. System can be
a computer, network, software program, or device. Performance testing can be
conducted on software application, system resources, targeted applications
components, and databases. In this
process, quantitative tests are conducted in a lab, for example measuring the
response time or the number of MIPS (millions of instructions per second) at
which a system operates. Factors that govern performance testing are
throughput, response time, turning, and benchmarking.
Software professionals can successfully
develop a product functionally. Professionals cannot check how the product will
react in production or live environment. Ignorance of performance testing can
also lead to crashing of system. Crashing or lowering performance of system
will lead to reduce in product’s immersion on clients and finally slowdown in
market growth. Thus, it’s important to have performance testing. Performance
testing serve as a diagnostic tool in determining bottlenecks and single point
of failure. It is often conducted in controlled environment and in conjecture
with stress testing, a process of determining the ability of a system to
maintain certain level of effectiveness under unfavorable conditions. .
Major
grounds for using performance testing:
- It Identifies problems early on before they become
costly to resolve.
- Performance testing reduces development cycles.
- It produces high quality, more scalable code.
- It averts revenue and credibility loss due to poor Web
site performance.
- Permits intelligent planning for future development.
- Performance testing ensures that the system meets
performance expectations such as response time, throughput etc. under given
levels of load.
- It exposes bugs that do not surface in cursory
testing, such as memory management bugs, memory leaks, buffer overflows.
Types
of performance testing:
1. Load Testing: As the name denotes in this
type of testing, how much load can be handled by system is evaluated. Above the
threshold level of load, system can behave in abnormal way. The main purpose of
load testing is to check system with continually increasing the load on the
system until the time load reaches to its threshold value. Increasing load denotes
to growing number of concurrent users, transactions and check the behavior of
application under test. It is also known as “Endurance testing” and “Volume
testing”. The basic function of load testing is to observe the response time and
staying power of application when system is efficiently operating under heavy
load. It evaluates the capability of a load balancer and identifies concurrency
issues. For example, testing a word processor by editing huge document.
2.
Stress Testing: Stress Testing is a type of performance testing to check the steadiness
of software when hardware resources are not adequate such as CPU, memory, disk
space. Stress testing mainly determines or validates an application’s behavior
when it is pushed beyond normal or peak load conditions. Its purpose is to ensure
that the system fails and recovers elegantly. For instance, double the baseline number for concurrent users/HTTP
connections.
3. Spike testing: Spike testing is subsection
of Stress Testing. A spike test is done to authenticate the performance traits
when the system under test is exposed to workload models and load volumes that constantly
increase beyond expected production operations for short periods of time. It is
performed by sudden increase or decrease in load and observing the behavior of
load.
4. Soak testing: Soak testing checked with an
expected amount of load over a long period of time to comprehend the behavior
of system.
5. Scalability Testing: Scalability Testing
is the testing of a software application for assessing its capability to scale
up in terms of any of its non-functional capability like the user load
supported, the number of transactions, and the data volume.
6. Volume testing: Volume testing denotes to
testing a software application with huge data to be processed to check the
efficiency of the application. The main aim of this testing is to monitor the
performance of application under variable database volumes.
Performance
testing covers following areas:
- Assessing
application and system production readiness.
-
Evaluating against
performance criteria.
-
Comparing performance
characteristics of multiple systems.
-
Identifying source of performance
bottlenecks.
-
Aiding with performance and
system tuning.
-
Helping to identify system
throughput level.
-
Testing tool
One of the best tools capable of doing
Performance testing according to many testers is Apache Jmeter. It almost
covers all types of servers such as web, SOAP, database, LDAP, JMS, mail and
shell scripts.
There are numerous challenges of performance
testing for software development. These are infrastructure setup, collection
and analysis of huge data, identifying the root cause of issues, team effort
required, accuracy of results, client involvement, testing inside the firewall,
multidimensional application (Web, SAAS, Mobile), testing on live server, and huge expense.
To bind up, performance testing is usually a collaborative effort between all
parties involved in software development. Performance testing appraise the
response time, throughput and utilization of system to perform its necessary
functions in comparison with different versions of the same product or a
different competitive product.
Comments
Post a Comment