REQUIREMENTS BASED
TESTING
|
REQUIREMENTS BASED
TESTING: DELIVER WHAT YOU PROMISED
By
Dan Friedmann
Software applications should delight their users.
This can mean many things. In general, software that does its intended job -
completely, reliably, efficiently and easily - should delight the user and the
provider of the service. There are many steps in building delightful software.
This article focuses on one of those steps: requirements based testing.
Requirements based testing involves verifying
that the software meets the application's requirements. Each requirement has a
set of tests demonstrating the successful implementation of that requirement.
A premise of requirements based testing is that
the requirements are complete and accurate. Clearly, if the requirements are
incorrect or incomplete, the software will not perform the intended job
appropriately. For purposes of this article, it is postulated that the
requirements are indeed complete and correct.
There are a variety of testing approaches and
steps. A sample of these includes black box (user), white box (functional),
unit, integration, system, performance, load, fail-over, and coverage testing.
While each has value in helping ensure quality during the development process,
perhaps none is as important as requirements based testing for verifying that
the software is providing the required functionality defined during the product
conceptualization process.
Demonstrate the Software Meets the Requirements
There have been studies that indicate that a
measurable percentage of reported problems with software involve "errors of
omission". That is, the software delivered failed to include the required
functionality. While some errors of omission are the result of missed
requirements, often times they result from a failure of the developer to
implement these requirements. Requirements based testing is intended to preclude
the latter class of error.
Expanding slightly on the basic approach to
requirements based testing is the goal to construct a series of tests that will
demonstrate the implementation of the specified requirements. Each requirement
has an associated set of tests and all requirements based tests demonstrate the
implementation of a specific requirement. This verifies that the implementation
was complete with respect to the requirements.
Similarly, no requirements based test case should
exist that does not demonstrate the correct implementation of a requirement. If
there exists functionality tested that is not mapped to a requirement, the
development team probably has built capabilities not called for by the
requirements. All too often, development budgets and schedules are sapped by the
inclusion of features that are not required or expected.
Crafting Requirements Based Tests
Properly constructed requirements based tests are
developed directly from the requirements document prior to the start of
development activity. If there is a quality assurance organization that will be
responsible for test execution, a representative of that organization should be
involved in the construction of the requirements based tests. Virtually every
development effort encounters changing requirements. Part of the change control
model should be the modification of the requirements based tests as the
requirements change.
There are numerous commercial tools that allow
complete requirements tracking. Any search engine will provide access to
numerous requirements traceability tools.
These tools allow a project team to link all lifecycle documents (including
code) back to specific requirements and to see which lifecycle documents support
each requirement.
In the final analysis, requirements based testing
demonstrates that the development team built what was asked for by the
requirements and no more. Successfully performed, requirements based testing
helps to deliver good software which leads to a delighted customer.
The original version of this article was written
in 2001 for Crosshair (www.xhair.com),
a developer of managed and customized extranet security service platforms.