Introduction
This principle emphasizes that, to achieve quality, it must be addressed throughout the project
lifecycle. An iterative process is particularly adapted to achieving quality since it offers many
measurement and correction opportunities.
|
|
Benefits
|
-
Higher quality
-
Earlier insight into progress and quality
|
Pattern
|
-
Ensure team ownership of quality for the product.
-
Test early and continuously in step with integration of demonstrable capabilities.
-
Incrementally build test automation.
|
Anti-Patterns
|
-
To peer-review all artifacts and complete all unit testing before integration
testing.
-
To conduct in-depth peer-review of all intermediate artifacts, which is counter
productive since it delays application testing and hence identification of major
issues.
-
To complete all unit testing before doing integration testing, again delaying
identification of major issues
|
|
Discussion
Improving quality is not simply "meeting requirements," or producing a product that meets user needs and expectations.
Rather, quality also includes identifying the measures and criteria that demonstrate its achievement, as well as the
implementation of a process to ensure that the product has achieved the desired degree of quality, and that this can be
repeated and managed.
Ensuring high quality requires more than the participation of the testing team; it requires that the entire team
owns quality. It involves all team members and all parts of the lifecycle:
-
Analysts are responsible for making sure that requirements are testable, and that we specify
clear requirements for the tests to be performed.
-
Developers need to design applications with testing in mind, and must be responsible for
testing their code.
-
Managers needs to ensure that the right test plans are in place, and that the right resources
are in place for building the testware and performing required tests.
-
Testers are the quality experts. They guide the rest of the team in understanding software
quality issues, and they are responsible all product testing (including functional, system, and
performance).
When we experience a quality issue, every team member should be willing to chip in to address the issue.
One of the major benefits of Iterative Development is that it enables a test early and continuously
approach, as illustrated below. By the time we reach the end of a project, and since the most important capabilities
are implemented early on, the most essential software may will have been up and running for months, and it is
therefore likely it will have been tested for months. It is no surprise that most projects adopting
iterative development claim that an increase in quality is a primary tangible result of the improved process.
Testing Is Initiated Early and Expanded Upon in Each Iteration
Iterative development enables early testing. Software developed in each iteration is tested as it is built.
Regression testing ensures that new defects are not introduced as new iterations add functionality. Reference: Supporting Material: Quality Management.
As we incrementally build our application, we should also incrementally build test automation to detect
defects early, while minimizing up-front investments. As we design our system, we consider how it should be tested.
Making the right design decisions can greatly improve our ability to automate testing. We may also be able to generate
test code directly from the design models. This saves time, provides incentives for early testing, and increases the
quality of testing by minimizing the number of bugs in the test software. Automated testing has been a key area of
focus for, among others, the agile community, where the aim is to automate testing of all code, and where tests are
written before the code is written (test-first design.)
|