What are Load, Stress, Volume, etc. testing? |
|
|
Volume testing is a way to test functionality. Stress testing is a
way to test reliability. Load testing is a way to test performance.
Testing an application under heavy but expected loads is known as load
testing. It generally refers to the practice of modeling the expected
usage of a software program by simulating multiple users accessing the
system's services concurrently. As such, load testing is most relevant
for a multi-user system, often one built using a client/server model,
such as a web server tested under a range of loads to determine at
what point the system's response time degrades or fails. Although you
could perform a load test on a word processor by or graphics editor
forcing it read in an extremely large document; on a financial package
by forcing to generate a report based on several years' worth of data,
etc.
When the load placed on the system is accelerated beyond normal usage
patterns, in order to test the system's response at unusually high or
peak loads, it is known as stress testing. Stress testing is often
incorrectly used interchangeably with load and performance testing.
In a stress test, the load is usually so great that error conditions
are the expected result, although there is a grey area between the two
domains and no clear boundary exists where you could say that an
activity ceases to be a load test and becomes a stress test.
There is little agreement on what the specific goals of load testing
are. The term is often used synonymously with performance testing,
reliability testing, and volume testing.
Performance testing is usually performed to determine how fast some
aspect of a system performs under a particular workload. It can serve
different purposes: to demonstrate that the system meets performance
criteria; to compare two systems to find which performs better; to
measure what parts of the system or workload cause the system to
perform badly.
In the diagnostic case, we use tools such as profilers to measure what
parts of a device or software contribute most to the poor performance.
In performance testing, it is often crucial (and often difficult to
arrange) for the test conditions to be similar to the expected actual
use.
A reliability test determines how likely a piece of hardware (or
sometimes software) is to fail. It is part of reliability theory, used
originally as a tool to help nineteenth century insurance companies
compute profitable rates to charge their customers. Statistical models
appropriate for any of these are generically called "time-to-event"
models. Death or failure is called an "event", and the goal is to
project or forecast the rate of events for a given population or
probability of an event for an individual.
Volume testing is used to determine if the system under test can
handle the required amounts of data, user requests, etc.
Soak testing occurs when running a system at normal to high levels of
load for prolonged periods of time. A soak test would normally execute
several times more transactions in an entire day than would be
expected in a busy day. This should identify any performance problems
that appear after a large number of transactions have been executed.
|
|