Fault
tolerance or robustness is the ability of the software product to maintain a
specified level of performance in the presence of software defects or
infringement of a specified interface.
Generally the
software testing experts focus on the
following important aspects of the software product:
# Containment
of defects to specified parts of the system
# Reactions to failures of a given severity
# Self-monitoring of the operations and self-identification of defects
# Ability to allow specified work to continue after a failure of specified severity for specified parts of the system under specified conditions
# Loss of specified operations (functionality requirement or set of functionality requirements) in case of failure of specified severities in specified periods of time for specified parts of the system
# Loss of specified data in case of failure of specified severities in specified periods of time for specified parts of the system
The failures
to consider in Software testing aimed
to check the technical robustness are those forced on the product from external
sources. Failures due to internal defects should be handled in the functional
testing.
Failures from
external sources could, for example, be caused by lack of external storage
capacity, external data storage not found, external services not available, or
lack of memory.
Software
testing aimed to robustness aspect can, like the other technical tests, start
at the requirements level, with testers reviewing robustness requirements.
Even more
important is review of design. Software testing engineers can make the design
more or less defensive, that is more or less robust to external circumstances.
A simple, though often overlooked way to make systems more robust is to check
the return code of all system routine calls and take action in the code when
system call is unsuccessful.
Lack of
memory may be due to memory leaks. Software testing engineers generally adopt
the technique of dynamic analysis to detect the memory leaks if any, for
example, during component testing. Software testing aimed to test the
robustness in system testing and/or acceptance testing may require the use of
simulators or other tools to expose the product to external problems otherwise
difficult to produce.
No comments:
Post a Comment