In this type of testing, the software is tested for the functional requirements.
The tests are written in order to check if the application behaves as expected.
A D V E R T I S E M E N T
Although functional testing is often done toward the end of the development
cycle, it can—and should, —be started much earlier. Individual components and
processes can be tested early on, even before it's possible to do functional
testing on the entire system. Functional testing covers how well the system
executes the functions it is supposed to execute—including user commands, data
manipulation, searches and business processes, user screens, and integrations.
Functional testing covers the obvious surface type of functions, as well as the
back-end operations (such as security and how upgrades affect the system).
The application is tested against heavy load such as complex numerical values,
large number of inputs, large number of queries etc. which checks for the
stress/load the applications can withstand. Stress testing deals with the
quality of the application in the environment. The idea is
to create an environment more demanding of the application than the application
would experience under normal work loads. This is the hardest and most complex
category of testing to accomplish and it requires a joint effort from all teams.
A test environment is established with many testing stations. At each station, a
script is exercising the system. These scripts are usually based on the
regression suite. More and more stations are added, all simultaneous hammering
on the system, until the system breaks. The system is repaired and the stress
test is repeated until a level of stress is reached that is higher than expected
to be present at a customer site. Race conditions and memory leaks are often
found under stress testing. A race condition is a conflict between at least two
tests. Each test works correctly when done in isolation. When the two tests are
run in parallel, one or both of the tests fail. This is usually due to an
incorrectly managed lock. A memory leak happens when a test leaves allocated
memory behind and does not correctly return the memory to the memory allocation
scheme. The test seems to run correctly, but after being exercised several
times, available memory is reduced until the system fails.