The selective retesting of a software
system that has been modified to ensure that any bugs
have been fixed and that no other previously working functions have failed as a
result of the reparations and that newly added features have not created
problems with previous versions of the software. Also referred to as verification
testing, regression testing is initiated after a programmer
has attempted to fix a recognized problem or has added source code to a program that may have inadvertently
introduced errors. It is a quality control measure to ensure that the newly
modified code still complies with its specified requirements and that
unmodified code has not been affected by the maintenance activity.
Regression testing is the process of testing changes to
computer programs to make sure that the older programming still works with the
new changes. Regression testing is a normal part of the program development
process and, in larger companies, is done by code testing specialists. Test
department coders develop code test scenarios and exercises that will test new
units of code after they have been written. These test cases form what becomes
the test bucket. Before a new version of a software product is released,
the old test cases are run against the new version to make sure that all the
old capabilities still work. The reason they might not work is because changing
or adding new code to a program can easily introduce errors into code that is
not intended to be changed.
Like confirmation testing or Retesting, regression testing
involves executing test cases that have been executed before. The difference is
that, for regression testing, the test cases probably passed the last time they
were executed (compare this with the test cases executed in confirmation
testing - they failed the last time).
The term 'regression
testing' is something of a misnomer. It would be better if it were called
'anti-regression' testing because we are executing tests with the intent of
checking that the system has not regressed (that is, it does not now have more
defects in it as a result of some change). More specifically, the purpose of
regression testing is to verify that modifications in the software or the
environment have not caused unintended adverse side effects and that the system
still meets its requirements.
It is common for organizations to have what is
usually called a regression test suite or regression test pack. This is a set
of test cases that is specifically used for regression testing. They are
designed to collectively exercise most functions (certainly the most important
ones) in a system but not test any one in detail. It is appropriate to have a
regression test suite at every level of testing (component testing, integration
testing, system testing, etc.). All of the test cases in a regression test
suite would be executed every time a new version of software is produced and
this makes them ideal candidates for automation. If the regression test
suite is very large it may be more appropriate to select a subset for
execution.
Regression
tests are executed whenever the software changes, either as a result of fixes
or new or changed functionality. It is also a good idea to execute them when
some aspect of the environment changes, for example when a new version of a
database management system is introduced or a new version of a source code
compiler is used.
Maintenance of a
regression test suite should be carried out so it evolves over time in line
with the software. As new functionality is added to a system new regression
tests should be added and as old functionality is changed or removed so too should
regression tests be changed or removed. As new tests are added a regression
test suite may become very large. If all the tests have to be executed manually
it may not be possible to execute them all every time the regression suite is
used. In this case a subset of the test cases has to be chosen. This selection
should be made in light of the latest changes that have been made to the
software. Sometimes a regression test suite of automated tests can become so
large that it is not always possible to execute them all. It may be possible
and desirable to eliminate some test cases from a large regression test suite
for example if they are repetitive (tests which exercise the same conditions)
or can be combined (if they are always run together). Another approach is to
eliminate test cases that have not found a defect for a long time (though this
approach should be used with some care!).
No comments:
Post a Comment