{"id":6,"date":"2014-02-11T06:03:04","date_gmt":"2014-02-11T06:03:04","guid":{"rendered":"http:\/\/blog.cigniti.com\/?p=6"},"modified":"2024-07-04T11:32:11","modified_gmt":"2024-07-04T06:02:11","slug":"types-of-performance-testing","status":"publish","type":"post","link":"https:\/\/www.cigniti.com\/blog\/types-of-performance-testing\/","title":{"rendered":"10 Different Types of Performance Testing You Should Know"},"content":{"rendered":"

The target audiences for this article are product managers, project managers, performance test engineers and anyone who cares about identifying performance issues in their application(s) before releasing it to market.\u202f\u202f<\/span>\u00a0<\/span><\/p>\n

This article helps users identify the correct types of performance testing that need to be conducted on their applications.\u202f<\/span>\u00a0<\/span><\/p>\n

Frequent application releases are now essential for business survival, making their performance and ability to handle anticipated loads crucial. How well they perform under expected conditions significantly impacts their success. This is where load testing software and types of performance testing come into the picture.<\/span>\u00a0<\/span><\/p>\n

Bringing quality products to the market quickly also makes software testing<\/a> challenging. Because of the high cost involved in infrastructure, skill set, duration, etc., in non-functional testing, outsourcing it to other organizations usually makes business sense if done correctly.\u202f<\/span>\u00a0<\/span><\/p>\n

What is Performance Testing?\u202fWhat is its Significance?<\/span><\/b>\u00a0<\/span><\/p>\n

Performance testing<\/span><\/a>\u202fis conducted to mitigate the risk of system availability, reliability, scalability, responsiveness, stability, etc. Like any other testing project, it involves many activities.\u202f\u202f<\/span>\u00a0<\/span><\/p>\n

A few of the important activities involved in any performance testing project are the identification of important business scenarios, identification of correct business scenarios mix, identification of correct workload, identification of the right tools\/strategy for load generation, setting up the test environment, designing the scripts for emulating business scenarios, preparing and populating the right amount of data, identification of proper performance counters\/metrics to collect, designing the report template(s) for different stakeholders as per their need and execution of multiple performance runs as per the project requirement.\u202f<\/span>\u00a0<\/span><\/p>\n

There are many <\/span>types of performance testing<\/span><\/a> that can be conducted on any application\/system. The type of test or run depends upon the performance requirements. In this article, I have listed the importance of various performance test types from technical and business perspectives, which can be considered during multiple stages of performance testing projects.\u202f\u202f<\/span>\u00a0<\/span><\/p>\n

The definitions of run types might differ from other sources, but the idea is not to define but to logically divide or categorize the performance runs. Saying this, I have tried my best to adhere to the definition as closely as possible from other sources.\u202f\u202f<\/span>\u00a0<\/span><\/p>\n

The categories are defined in terms of different performance run cycles in any performance testing project. For example, a load run in a project might be performed first and a soak\/endurance testing run (with the same workload) later if required.\u202f<\/span>\u00a0<\/span><\/p>\n

The following is a summary of ten different types of performance testing that can be referred to and selected according to business requirements. The details of these performance test types are described in their corresponding sections below.\u202f<\/span>\u00a0<\/span>\u00a0<\/span><\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u00a0S.No.<\/span>\u00a0<\/span><\/td>\n\u00a0Performance Test Type<\/span>\u00a0<\/span><\/td>\n\u00a0Description<\/span>\u00a0<\/span><\/td>\n\u00a0Business Case<\/span>\u00a0<\/span><\/td>\n\u00a0Performance Testing Life Cycle Stage<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
1<\/span>\u00a0<\/span><\/td>\nSingle User<\/a><\/span>\u00a0<\/span><\/td>\nIt is conducted for assessing the performance of the application when only a single user is accessing the system.<\/span>\u00a0<\/span><\/td>\nIt helps in improving the performance based on set of pre-existing rules for high performance web pages.<\/span>\u00a0<\/span><\/td>\nPerformance testing life cycle is conducted during the script design phase or as a separate activity. For example, in the case of web applications, tools like YSlow, HttpAnalyzer etc. are used for analyzing the performance of the application.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
2<\/span>\u00a0<\/span><\/td>\nContention<\/span>\u00a0<\/span><\/td>\nIt is conducted for validating if application works perfectly when it is accessed concurrently.<\/span>\u00a0<\/span><\/td>\nConducting this type of test at the early stage of the development life cycles identifies concurrency issues at initial stages and helps in setting up the environment for performance testing early rather than during release time.<\/span>\u00a0<\/span><\/td>\nIt is conducted during script design phase of the performance testing life cycle,<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
3<\/span>\u00a0<\/span><\/td>\nLight Load<\/span>\u00a0<\/span><\/td>\nIt is conducted for validating the performance characteristics of the system when subjected to workload \/ load volume much less than what is anticipated during the production load.<\/span>\u00a0<\/span><\/td>\nConducting this type of test at the last stage of development life cycles identifies easy to find performance issues early rather than during release time.<\/span>\u00a0<\/span><\/td>\nIt is conducted as a smoke test during the performance testing life cycle<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
4<\/span>\u00a0<\/span><\/td>\nLoad<\/span>\u00a0<\/span><\/td>\nIt is conducted for validating the system’s performance characteristics when subjected to workload\/load volume expected during the production load.<\/span>\u00a0<\/span><\/td>\nConducting this type of test before releasing it to the market gives confidence and mitigates the risk of losing business due to performance issues.<\/span>\u00a0<\/span><\/td>\nIt is usually conducted as the very first performance run during the performance testing life cycle.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
5<\/span>\u00a0<\/span><\/td>\nStress \/ Volume<\/span>\u00a0<\/span><\/td>\nIt is conducted to make sure that the application can sustain more load than anticipated on production.<\/span>\u00a0<\/span><\/td>\nThis type of test is usually conducted once the system is in production but needs to be tuned for future growth.<\/span>\u00a0<\/span><\/td>\nIt is performed if required during the performance testing lifecycle.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
6<\/span>\u00a0<\/span><\/td>\nResilience<\/span>\u00a0<\/span><\/td>\nIt is conducted to ensure the system can return to initial state (from stressful state to load level state) when stressed for short duration.<\/span>\u00a0<\/span><\/td>\nThis type of test is conducted usually once the stress \/ volume test is done for performance tuning.<\/span>\u00a0<\/span><\/td>\nIt is performed if required during the performance testing lifecycle.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
7<\/span>\u00a0<\/span><\/td>\nFailure<\/span>\u00a0<\/span><\/td>\nIt is conducted to find out the capability of the application in terms of load. The load (concurrent users or volume) is increased until the application crashes.<\/span>\u00a0<\/span><\/td>\nThis type of test is conducted to find out the number of days left for the business to resolve the performance issues in the application.<\/span>\u00a0<\/span><\/td>\nIt is performed if required during the performance testing lifecycle. It might require multiple cycles of running for concluding anything.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
8<\/span>\u00a0<\/span><\/td>\nRecovery<\/span>\u00a0<\/span><\/td>\nIt is conducted to ensure the application can heal itself when load is decreased from failure point to stress point and then to normal load.<\/span>\u00a0<\/span><\/td>\nThis type of test is conducted to find out if an application can be recovered quickly if there is an unexpected load to the system for some reason.<\/span>\u00a0<\/span><\/td>\nIt is performed if required during the performance testing lifecycle.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
9<\/span>\u00a0<\/span><\/td>\nSpike<\/span>\u00a0<\/span><\/td>\nIt is conducted to find out the stability of the system when it is loaded in burst of very small time and releasing the load quickly.<\/span>\u00a0<\/span><\/td>\nFor example \u2013 viewing real time replays of video streams (games) while there is a goal \/ wicket \/ six.<\/span>\u00a0<\/span><\/td>\nIt is performed if required during the performance testing lifecycle.<\/span>\u00a0<\/span><\/td>\n<\/tr>\n
10<\/span>\u00a0<\/span><\/td>\nSoak \/ Endurance \/ Reliability \/ Availability \/ Stability<\/span>\u00a0<\/span><\/td>\nIt is conducted to find if the system can handle the expected load without any deterioration of response time\/throughput when run for a longer time.<\/span>\u00a0<\/span><\/td>\nConducting this type of test before releasing to the market gives the confidence on availability \/ stability of the system.<\/span>\u00a0<\/span><\/td>\nIt is conducted as the last run during the Performance Testing Lifecycle<\/span>\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Terminology<\/span><\/h3>\n

\"\"<\/p>\n

Single User\u202f<\/span><\/b>\u00a0<\/span><\/p>\n

\u2018Single user\u2019 run is usually performed at the start of any performance run cycles or during the script\u2019s design time. All application response time details should be calculated when accessed by only a single user.\u202f\u202f<\/span>\u00a0<\/span><\/p>\n

If the response time doesn\u2019t match the performance requirements, it should be fixed before proceeding with subsequent performance runs.\u202f<\/span>\u00a0<\/span><\/p>\n

Technical Perspective\u202f<\/span><\/b>\u00a0<\/span><\/p>\n