Concepts:
Stages of Test
Testing is usually applied to different types of targets in different stages
or levels of work effort. These stages vary in importance as the software development
lifecycle unfolds, but it's important ensure a balance of focus is reatined
across these different work efforts.
Developer Testing
Developer Testing denotes the aspects of the test effort that it are most appropriate
for the software developers to undertake. The is in contrast to the System Testing
effort which denotes the aspects of the test effort that are most appropriate
for a group independent of the software developers to undertake.
Traditionally, developer testing has been thought of mainly in terms of unit
testing, with occasional focus on aspects of integration and infrequently other
aspects of testing. Following this traditional approach presents risks to software
quality in that important testing concerns that are often discovered at the
boundary of these distinctions are often ignored by both work groups.
The better approach is to divide the work effort so that there is some natural
overlap; the exact nature of that overlap based on the needs of the individual
project. We recommend fostering an environment where developer and independent
system testers share in a single vision of quality. See Concepts:
Developer Testing for additional information.
Unit Test
A more traditional distinction, unit test, implemented early in the iteration,
focuses on verifying the smallest testable elements of the software. Unit testing
is typically applied to components in the implementation model to verify that
control flows and data flows are covered and function as expected. These expectations
are based on how the component participates in executing a use case, which you
find from sequence diagrams for that use case. The Implementer performs unit
test as the unit is developed. The details of unit test are described in the
Implementation discipline.
Integration Test
A more traditional distinction, integration testing is performed to ensure
that the components in the implementation model operate properly when combined
to execute a use case. The target-of-test is a package or a set of packages
in the implementation model. Often the packages being combined come from different
development organizations. Integration testing exposes incompleteness or mistakes
in the package's interface specifications.
System Test
System testing denotes the aspects of the test effort that are most appropriate
for a group independent of the software developers to undertake. Traditionally
done when the software is functioning as a whole, an iterative lifecycle allows
system testing to occur much earlier, as soon as well-formed subsets of the
use case behavior are implemented. The target is the typically the end-to-end
functioning of the system.
Acceptance Test
"User" acceptance testing is typically the final test action prior
to deploying the software. The goal of acceptance testing is to verify that
the software is ready and can be used by the end-users to perform those functions
and tasks the software was built to do. See Concepts:
Acceptance Testing for additional information.
Copyright
© 1987 - 2001 Rational Software Corporation
|