Wednesday, July 6, 2016

Performance Testing & Its types

Performance Testing – Definition


Performance testing is a type of testing intended to determine the responsiveness, throughput, reliability, and/or scalability of a system under a given workload. It can also serve to investigate measure, validate or verify other quality attributes of the system, such as resource usage.

Performance testing determines speed, scalability, stability, while focusing on cost, system constraint, user expectation

Performance testing types:-


1.     Load testing

  • Load testing is the simplest form of performance testing.
  • A load test is usually conducted to understand the behaviour of the system under a specific intended/expected/anticipated load.
  • This load can be the expected (already known to user) 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 database and/or application server, etc. are also monitored, then this simple test can itself point towards any bottlenecks in the application software.

2.     Stress testing

  • Stress testing is normally used to understand the upper limits of capacity (no. of users) within the system.
  • When user load is greater than the intended load then it is called stress testing.
  • Another condition is when load is negligible but environment under test is with unfavourable/abnormal condition then also it is called stress testing.
  •  This kind of test is done to determine the system's robustness in terms of extreme load and helps application administrators to determine system performance if the current load goes well above the expected maximum.


3.     Spike testing

  • Spike testing is done by suddenly increasing the number of, or load generated by, 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.
  • Load repeatedly is increased beyond anticipated load for short period of time.


4.     Endurance testing (soak testing)

  • It is a subset of load testing – Intended load is applied for long duration over an extended period.
  • Minimum of 4 hours and maximum can be 1 day or 2 day.
  • Endurance testing is usually done to determine if the system can sustain the continuous expected load.
  • During endurance tests, memory utilization is monitored to detect potential leaks.
  • Also important, but often overlooked is performance degradation. That is, to ensure that the throughput and/or response times after some long period of sustained activity are as good as or better than at the beginning of the test.
  • It essentially involves applying a significant load to a system for an extended, significant period of time. The goal is to discover how the system behaves under sustained use.


5.     Capacity Testing

  •  To check the total workload (increased number of users beyond intended load) a server can handle without violating predetermined key performance acceptance area is called Capacity testing.


6.     Scalability Testing


  • Scalability is the capability to increase resources to yield a linear (ideally) increase in service capacity. The key characteristic of a scalable application is that additional load only requires additional resources rather than extensive modification of the application itself.
  • To check the application's ability to handle additional workload without affecting performance.
  • Scalability testing is an extension of performance testing. The purpose of scalability testing is to identify major workloads and mitigate bottlenecks that can impede the scalability of the application.
  • Don’t confuse scalability with capacity testing. Without upgrading the hardware if testing is done then it is known as capacity testing and if hardware is upgraded then it is known as scalable testing.



7.     Stability testing

  • Determine reliability, robustness, function and data integrity, availability, consistency of responsiveness under variety of expected and unexpected condition. To check the stability of the application, do all kind of performance testing.


8.     Benchmark testing

  • Benchmark testing is the process of load testing a component to determine the performance characteristics of the application.
  • The benchmark test is repeatable in that the performance measurements captured will vary only a few percent each time the test is run. This enables single changes to be made to the application or infrastructure in an attempt to determine if there is a performance improvement or degradation.
  • The goals of benchmark testing typically fall into two categories; 
    • To test the system to measure how a change affects its performance characteristics.
    • To test and tune the system to reach a performance requirement or service level agreement (SLA). In this case a series of benchmark tests are conducted in conjunction with iterative cycles of performance tuning.


9.     Configuration Testing

  • Rather than testing for performance from the perspective of load, tests are created to determine the effects of configuration changes to the system's components on the system's performance and behaviour. A common example would be experimenting with different methods of load-balancing.

10.   Volume Testing

  • Volume testing is done against the efficiency of the application. Huge amount of data is processed through the application (which is being tested) in order to check the extreme limitations of the system whether no. of users are 1 or 2 or 10. Standard is 10
  • Such systems can be transactions processing systems capturing real time sales or could be database updates and or data retrieval.
  • Volume testing will seek to verify the physical and logical limits to a system’s capacity and ascertain whether such limits are acceptable to meet the projected capacity of the organization’s business processing

11.  Component Testing

  • Component test is any performance test that targets a single architectural component of the application.
  • Commonly tested components include servers, DB, networks, Firewalls, storage device.

No comments:

Post a Comment