Taking some notes from my previous reads here are few basic differences in simple terms. There are quite a few software tools to perform software performance testing, both opensource tools and commercial tools.
Performance testing is defined as the technical investigation done to determine or validate the speed, scalability, and/or stability characteristics of the product under test. Performance-related activities, such as testing and tuning, are concerned with achieving response times, throughput, and resource-utilization levels that meet the performance objectives for the application under test.
A performance test is a technical investigation done to determine or validate the responsiveness, speed, scalability, and/or stability characteristics of the product under test.
To determine or validate speed, scalability, and/or stability.
- Determines the speed, scalability and stability characteristics of an application, thereby providing an input to making sound business decisions.
- Focuses on determining if the user of the system will be satisfied with the performance characteristics of the application.
- Identifies mismatches between performance-related expectations and reality.
- Supports tuning, capacity planning, and optimization efforts.
- Load testing is conducted to verify that your application can meet your desired performance objectives; these performance objectives are often specified in a service level agreement (SLA). A load test enables you to measure response times, throughput rates, and resource-utilization levels, and to identify your application’s breaking point, assuming that the breaking point occurs below the peak load condition.
- Endurance testing is a subset of load testing. An endurance test is a type of performance test focused on determining or validating the performance characteristics of the product under test when subjected to workload models and load volumes anticipated during production operations over an extended period of time.
- Endurance testing may be used to calculate Mean Time Between Failure (MTBF), Mean Time To Failure (MTTF), and similar metrics.
To verify application behavior under normal and peak load conditions.
- Determines the throughput required to support the anticipated peak production load.
- Determines the adequacy of a hardware environment.
- Evaluates the adequacy of a load balancer.
- Detects concurrency issues.
- Detects functionality errors under load.
- Collects data for scalability and capacity-planning purposes.
- Helps to determine how many users the application can handle before performance is compromised.
- Helps to determine how much load the hardware can handle before resource utilization limits are exceeded.
- The goal of stress testing is to reveal application bugs that surface only under high load conditions. These bugs can include such things as synchronization issues, race conditions, and memory leaks. Stress testing enables you to identify your application’s weak points, and shows how the application behaves under extreme load conditions.
- Spike testing is a subset of stress testing. A spike test is a type of performance test focused on determining or validating the performance characteristics of the product under test when subjected to workload models and load volumes that repeatedly increase beyond anticipated production operations for short periods of time.
To determine or validate an application’s behavior when it is pushed beyond normal or peak load conditions.
- Determines if data can be corrupted by overstressing the system.
- Provides an estimate of how far beyond the target load an application can go before causing failures and errors in addition to slowness.
- Allows you to establish application-monitoring triggers to warn of impending failures.
- Ensures that security vulnerabilities are not opened up by stressful conditions.
- Determines the side effects of common hardware or supporting application failures.
- Helps to determine what kinds of failures are most valuable to plan for.
- Capacity testing is conducted in conjunction with capacity planning, which you use to plan for future growth, such as an increased user base or increased volume of data. For example, to accommodate future loads, you need to know how many additional resources (such as processor capacity, memory usage, disk capacity, or network bandwidth) are necessary to support future usage levels.
- Capacity testing helps you to identify a scaling strategy in order to determine whether you should scale up or scale out.
To determine how many users and/or transactions a given system will support and still meet performance goals.
- Provides information about how workload can be handled to meet business requirements.
- Provides actual data that capacity planners can use to validate or enhance their models and/or predictions.
- Enables you to conduct various tests to compare capacity-planning models and/or predictions.
- Determines the current usage and capacity of the existing system to aid in capacity planning.
- Provides the usage and capacity trends of the existing system to aid in capacity planning
Performance testing is a broad and complex activity that can take many forms, address many risks, and provide a wide range of value to an organization.
It is important to understand the different performance test types in order to reduce risks, minimize cost, and know when to apply the appropriate test over the course of a given performance-testing project. To apply different test types over the course of a performance test, you need to evaluate the following key points:
- The objectives of the performance test.
- The context of the performance test; for example, the resources involved, cost, and potential return on the testing effort.