7 Principles of Software Testing
As software
development techniques have advanced during the last decades, some basic
principles of testing have also been established. Describing theoretical ideas
and practical hints, these principles can be seen as a basic guideline for
both, testing and coding.
Testing shows presence of errors
In general, testing
proves the presence of errors. Sufficient testing reduces the likelihood of
existing, not discovered error conditions within the test object. It does not
verify that no more bugs exist, even if no more errors can be found. Testing is
not a prove that the system is free of errors.
Exhaustive testing is not possible
An exhaustive test
which considers all possible input parameters, their combinations and different
pre-conditions can not be accomplished (except for trivial test objects). Test
are always spot tests. Therefore, the effort must be managed by risk,
priorities and thoughtful selection.
Test early and regularly
Testing activities
should begin as early as possible within the software life cycle. They should
be repeated regularly and have its’ own agenda. Early testing helps detecting
errors at an early stage of the development process which simplifies error
correction (and reduces the costs for this work).
Accumulation of errors
There is no equal
distribution of errors within one test object. The place where one error
occurs, it’s likely to find some more. The testing process must be flexible and
respond to this behavior.
Fading effectiveness
The effectiveness of
tests fades over time. If test-cases are only repeated, they do not expose new
errors. Errors, remaining within untested functions may not be discovered. In
order to prevent this effect, test-cases must be altered and reworked time by
time.
Testing depends on context
No two systems are the
same and therefore can not be tested the same way. Testing intensity, the
definition of end criteria etc. must be defined individually for each system
depending on its testing context. E-commerce websites require a different
approach than online-banking applications.
False conclusion: no errors equals usable
system
Error detection and
error fixing does not guarantee a usable system matching the users
expectations. Early integration of users and rapid prototyping prevents unhappy
clients and discussions.
No comments:
Post a Comment