I’m getting tired of discovering projects that focus on “quality assurance” as if its entire breadth where encompassed in simple regression testing conducted after a product is supposedly ready for release.
Managing software quality is not simply creating a test program during a late-phase testing period. In fact, addressing quality assurance in this way is too little, too late. This far into the software life cycle, defects have become an intrinsic part of the architecture.
Quality begins with examining project goals early on, assessing the quality of requirements gathering and business goals, and developing an execution plan that addresses system architecture as well as specific feature-level testing.
This is a process that begins even before engineering becomes involved in product development.
Quality assurance, as a department, needs to be an independent organization from the development group. It must become involved in the early planning phases of every project. The influence of the quality assurance team covers the entire spectrum of the software life cycle:
- Customer goals and business goals are managed by the quality control process, making sure that the goals of the project are aligned with the same.
- The development case is reviewed early by quality assurance, making sure that development goals fit in with overall architecture and planning goals.
- Planning for acceptance testing begins early and delivers clear-cut, specific acceptance criteria that guide the project from the beginning.
- Acceptance tests become the basis for the development case and, therefore, the roadmap to which development executes.
- Test planning begins at the same time as development execution — this means that the first operational unit of code is tested early, and often.
- As the product life cycle is taken into account, changes to architecture are discussed and accommodated throughout the team. This leads to platform testing, advanced configuration management and delivery planning — again, early in the life cycle.
- Configuration management, platform testing and platform certification become early concerns that are addressed before release.
- By controlling the entire life cycle, quality assurance lowers overall defects and makes sure that customers experience a minimum of problems.
- Quality assurance remains involved after release, for example, providing a key role in diagnosing customer-facing defects, preparing reproductions, and managing the defect resolution process. This assures that bugs are fixed once and enter into regression testing thereafter.
This life cycle oriented approach addresses quality early and continuously, leading to higher quality software and lower defect counts. Contributing to the overall quality of software becomes an essential role. Likewise, with quality assurance being addressed externally, development can focus on its core competency: Implementation.