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
There are different phases in performance testing life cycle. Below diagram shows the same.



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
  1. No need to install it on the server under test. It uses native monitors. For Ex: Perfmon for windows or rstatd daemon for Unix
  2. Uses ANSI C as the default programming language and other languages like Java and VB.
  3. Excellent monitoring and analysis interface where you can see reports in easy to understand colourful charts and graphics
  4. Supports most of the protocols
  5. Makes correlation much easier.
  6. 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

Popular posts from this blog

Loadrunner Functions

Analyzer in LoadRunner Part1

Analyzer in LoadRunner Part 2