|
What
Integration testing where system
components are integrated into the system one at a time until the entire
system is integrated. BS 7925-1.British Computer Society
Specialist Interest Group in Software Testing (BCS SIGIST)
The defining element is the repeated process of integrate then teste. I
suppose that integrating a sub-systems of components one at a time also
counts as incremental testing.
Once integrated the system can be tested using functional and
non-functional design techniques.
Incremental testing is can considered part of system testing.
Why?
Our old friend risk raises it head again here. The risk of the system
failing as a whole is constantly being mitigated. This is because as each
component or sub-system is added we can confirm, that no adverse effects are
demonstrated.
Additionally as the system grows, stakeholders, including customers, can
see the finished product taking shape.
Who? Testing should ideally be undertaken by a system testing
team.
Where? At the developing organisations site. The test team
should not be too far away from the development effort though.
When? In terms of the V Model, integration testing is about
halfway up. (We can never be accurate about this.) However the timing of
the testing, the order in which components are integrated depend on the
process methodology used.
Organisations with little or no process will integrate the components in
ad-hoc increments without much thought of how they are to hang together or
reference to business and technical risk.
In the waterfall method, where test is the last phase, incremental
testing may well be used. This is a slight improvement on Big Bang testing. However the testing is still being
executed if not written at the very end of the process.
At the other extreme in a highly iterative process, the integration of
components is essential. Typically a daily build takes place of all the
components that have been tagged to be included. In the Rational Unified
Process, RUP, incremental testing is driven entirely by risk. For instance
in the Elaboration phase, the aim is to establish that the central software
architecture is working. For construction, other components are added
in.
An environment which has many sub-systems being developed, might have
many incremental integrations taking place at different levels.
How?
Planning is essential as always for a successful test phase or technique
to work. To avoid chaos and unnesecarry failures, the team has to know
which components are to be included in the build. This will have an effect
on the type of tests and the resources required. For example will a test
harness be required?
The other essential is good configuration management. The test team needs
to know that the code inside each component is, the code the plan wants
them to test. Also the components or sub-systems that have actually been
included in the build. Once this is in place the organisation can decide if
the component is to be added or control the release of changes once it has
been included. Thus developers can "check out" code, confident that changes
they make will not actually be included in the build until it is "checked
back in".
Configuration management tools are available such as Visual Source Safe
and ChangeMan.
Typically a range of tests can take place as soon as the build is ready,
to confirm that it has met entry criteria. These are known as Smoke tests.
The sort of tests include logging on and opening important elements of
functionality.
Once all the integration has taken place, the whole range of functional
and non-functional testing can continue.
|