Performance Testing
Performance Testing
What is performance testing?
Performance testing is the process of determining
application/product’s behavior on various load conditions
It is one of the non-functional testings. Other non-functional
testing examples are given below
Ø
Compatibility testing
Ø
Disaster recovery testing
Ø
Security testing
Ø
Usability testing
Ø
Resilience testing
Ø
Documentation testing
Ø
Localization testing
The goal
of performance testing is to evaluate user experience in realistic scenarios on
your target application. It will allow you to assess machine and infrastructure
capability.
Performance
testing is all based on business requirements. It is a professional
approach to evaluate the performance of an application. It requires the
simulation of real load scenarios running against your target applications or
websites.
Types of
Performance Testing
Load test
Load test is conducted to understand the behavior of the
system under a specific load. This load can be the expected concurrent number
of users on the application performing a specific number of transactions within
the set duration. This test will give out the response times of all the
important business critical transactions. If the database, application server,
etc are also monitored, then this simple test itself can point towards bottlenecks
in the application software.
Stress
test
Stress test is performed to find out application’s
breaking point. This kind of test is done to help the application
administrators to determine when the application will break/crash if the load
goes well above the expected maximum.
Endurance/Soak/Stability
test
An endurance, soak or stability test measures the
system's stability over time by placing it under load for an extended period.
This type of test can expose such problems as memory leaks.
Spike Test
Spike testing is done by suddenly increasing the
number of users by a very large amount and observing the behaviour of the
system. The goal is to determine whether performance will suffer, the system
will fail, or it will be able to handle dramatic changes in load.
Scalability Testing
Scalability testing lets you determine how your
application scales with increasing load.
Scalability testing is the one where you try to
determine whether the application can be made to support more user load by
adding more hardware (ex-CPU, RAM, disk space) or software (ex-by replacing
text-file data storages with SQL Server databases).
Vertical scaling
Vertical scaling, also described as scale up,
typically refers to adding more processors and storage to an Symmetric Multiple
Processing to extend processing capability.
Horizontal scaling
Horizontal scaling, or scale out, usually refers to
tying multiple independent computers together to provide more processing power.
Horizontal scaling typically implies multiple instances of operating systems,
residing on separate servers.
Volume Test
Volume testing refers to testing a software application
with a certain amount of data. This amount can, in generic terms, be the
database size or it could also be the size of an interface file that is the
subject of volume testing. For example, if you want to volume test your
application with a specific database size, you will expand your database to
that size and then test the application's performance on it. Another example
could be when there is a requirement for your application to interact with an
interface file (could be any file such as .dat, .xml); this interaction could
be reading and/or writing on to/from the file. You will create a sample file of
the size you want and then test the application's functionality with that file
in order to test the performance
Performance Testing Life Cycle
Performance
requirements gathering
In
this phase, a performance tester’s job is to get answers to all the questions
he/she has in mind before moving further. Below are a couple of questions
usually asked in this phase
Ø What
is the type of application and its architecture?
Ø What
are the performance goals?
Ø Which
application scenarios to be tested?
Ø What
will be the workload model?
Ø Which
different performance tests are required?
Ø Whether
a dedicated performance test environment will be given for testing?
Ø Whether
the given performance environment is replica of production?
Ø Who
is responsible to create performance test data?
Ø Which
tool will be used for testing?
Ø What
is the time frame to finish performance testing?
Ø What
are the known current as well as previous performance bottlenecks (if any)?
Ø How
many resources are planned to be on boarded to complete performance testing?
Ø What
are the normal usage hours of the application
Performance
testplan creation
It
is very important to plan and document the activities before working on them.
Usually below details are included in the performance test.
Ø Objective
of performance testing
Ø Scope
Ø Out
of scope
Ø Assumptions
Ø Entry
criteria
Ø Exit
criteria
Ø Approach
Ø Test
schedule
Ø Work
load model
Ø Test
data
Ø Testing
resources
Ø Risks
and mitigations
Ø Deliverable
Environment
readiness check
In this phase, a performance tester needs to make sure
the environment has a stable application deployed in the performance test
environment. He/she needs to do a smoke test to verify that the application is
ready for testing
Scripting
Here, performance tester is supposed to create scripts
for each workflow identified in the requirements gathering phase
Execution
and monitoring
Once the scripting is done, execution can be started
as per the plan. Different monitoring tools are available in the market using
which server statistics can be monitored.
Analysing
the result
When the execution gets over, performance tester has
to get the data and start analysing it.
Report
creation
After analysis, a report has to be created. This
report can be considered as final if it meets all the SLAs. If the SLAs are not
met and the customer wants to tune the application, then tuning process has to
be carried out after which again testing should be done. This process can be
continued until the SLAs are met.
When to performance
Test the application?
Performance
Test requirements gathering and test planning can be done much before the
application is available for testing. However for scripting to start, a stable
application is needed. Typically scripting can be started once SIT(System
Integrate Testing) is done.
Most
widely used Performance testing Tools
Loadrunner
is the most widely tool for performance testing across the world. As per the
survey, it is observed that around 70% of the application’s performance testing
is carried out by this tool in the market today.
Below
are a couple of other tools which are used for performance testing.
Ø IBM
RPT(Rational Performance Tester)
Ø Silk
Performer
Ø JMeter
(Open source)
Ø OpenSTA
(Open source)
Ø NeoLoad
Ø ELoad
Ø LoadUI
Ø HttPerf
Ø LoadImpact
Ø QEngine
Ø LoadSter
Ø LoadImpact
Ø WebLoad
Advantage of HP LoadRunner
over other Performance Testing tools
- No need
to install it on the server under test. It uses native monitors. For Ex: Perfmon
for windows or rstatd daemon for Unix
- Uses ANSI
C as the default programming language and other languages like Java and
VB.
- Excellent
monitoring and analysis interface where you can see reports in easy to
understand colourful charts and graphics
- Supports
most of the protocols
- Makes
correlation much easier.
- Excellent
tutorials, exhaustive documentation and active tool support from HP
The only disadvantage we can consider is the
prohibitive cost associated with the tool but that can also be compensated in
the long run when you start getting a good ROI from the tool.
======================================================================Also refer the Link: https://msdn.microsoft.com/en-us/library/bb924356.aspx
Comments
Post a Comment