Software Project Management and Documentation

Chapter 8
Software Quality Management and Testing Governance

Diploma in Software Engineering
Software Project Management and Documentation   •   Diploma

Software Quality Management and Testing Governance

Introduction

Software quality management is the coordinated planning, assurance, control, measurement, and improvement of software quality. It is broader than testing. Testing provides evidence about product behaviour, while quality management establishes the processes, standards, responsibilities, and decisions that make reliable delivery possible.

In a software project, quality is not an activity performed only by testers near the end of development. It is a management and engineering responsibility that begins with requirements and continues through design, coding, testing, deployment, operation, and maintenance. Poor quality can produce financial loss, security incidents, regulatory penalties, reputational damage, and harm to users. Effective governance therefore connects quality objectives with project scope, schedule, cost, risk, architecture, and stakeholder needs.

This chapter explains how to plan quality assurance and quality control, define standards and metrics, coordinate testing levels, manage defects, conduct reviews, and use continuous improvement and technical-debt practices.

Learning Objectives

After studying this chapter, you should be able to:

  • distinguish quality assurance, quality control, testing, verification, and validation;
  • prepare a practical software quality management plan;
  • define standards, quality criteria, metrics, and acceptance thresholds;
  • coordinate unit, integration, system, acceptance, regression, performance, and security testing;
  • design an effective defect-management process;
  • apply reviews, inspections, audits, and retrospectives;
  • explain technical debt and manage it as a measurable project risk;
  • evaluate quality evidence and make responsible release decisions.

1. Foundations of Software Quality

1.1 What is software quality?

Software quality is the degree to which a software product and its development process satisfy stated and implied requirements. Stated requirements include functions, interfaces, performance targets, and legal obligations. Implied requirements include usability, maintainability, safety, security, and reliability expectations that users reasonably associate with the product.

A useful quality model groups product quality into characteristics such as:

Quality characteristicTypical questionExample evidence
Functional suitabilityDoes the system provide required functions?Acceptance tests
Performance efficiencyDoes it respond and scale adequately?Load-test results
CompatibilityDoes it work with other systems?Interface tests
UsabilityCan intended users use it effectively?Usability evaluations
ReliabilityDoes it operate consistently?Failure and recovery data
SecurityDoes it protect information and operations?Security tests and reviews
MaintainabilityCan it be changed safely and economically?Code review and complexity data
PortabilityCan it operate in required environments?Platform tests

These characteristics often conflict. Stronger security controls may affect usability; rapid delivery may increase technical debt; extensive testing may increase short-term cost while reducing operational risk. Quality management is therefore a process of making explicit, evidence-based trade-offs rather than attempting to maximise every characteristic without regard to constraints.

1.2 Quality assurance, quality control, and testing

Quality assurance (QA) is the planned and systematic set of activities used to provide confidence that processes are suitable and are being followed. Examples include defining a development standard, auditing compliance, training staff, and improving the workflow.

Quality control (QC) consists of activities used to identify whether deliverables conform to requirements. Examples include testing, inspections, static analysis, demonstrations, and measurements.

Testing is the controlled evaluation of software, specifications, or related artefacts to find defects and provide information for decisions. Testing cannot prove that software contains no defects. It can reveal failures under selected conditions and increase justified confidence.

Verification asks, “Are we building the product correctly?” It examines conformance to specifications, designs, and standards. Validation asks, “Are we building the correct product?” It examines whether the product meets user and business needs.

A mature project uses both prevention and detection. Prevention reduces the probability of introducing defects; detection identifies defects before they cause harm. Neither is sufficient alone.

2. Quality Management Planning

A quality management plan explains how quality will be defined, achieved, measured, reviewed, and governed. It should be proportionate to project risk and complexity. A small internal tool does not require the same documentation as medical, financial, aviation, or safety-critical software, but every project needs explicit quality expectations.

A practical plan contains:

  1. Quality objectives: measurable outcomes such as “no open critical defects at release” or “95% of priority workflows complete within two seconds under defined load.”
  2. Applicable standards: organisational coding standards, security policies, contractual requirements, accessibility rules, and relevant regulatory obligations.
  3. Roles and independence: responsibilities for developers, testers, product owners, quality managers, security specialists, and release authorities.
  4. Lifecycle controls: required reviews, test stages, approval points, and evidence repositories.
  5. Entry and exit criteria: conditions for starting and completing a quality activity.
  6. Tools and environments: test-management, defect-tracking, continuous-integration, static-analysis, and monitoring tools.
  7. Metrics and reporting: definitions, collection frequency, owners, thresholds, and escalation procedures.
  8. Defect and change control: classification, prioritisation, triage, retesting, closure, and handling of rejected or deferred defects.
  9. Risk-based testing strategy: concentration of effort on features where failure is most probable or most harmful.
  10. Improvement arrangements: retrospectives, root-cause analysis, lessons learned, and technical-debt management.

Quality criteria and acceptance thresholds

A quality criterion states what must be true. An acceptance threshold states the measurable boundary for a decision. For example, “the system must be reliable” is too vague. “The payment service must complete 99% of valid transactions successfully during the defined test period” is more actionable, provided the measurement method and operating conditions are documented.

Thresholds should identify the population, measurement method, environment, time period, and decision rule. A performance result from a developer laptop should not be treated as evidence for a production-scale service. Similarly, code coverage is not equivalent to defect-free software: coverage indicates which code was exercised, not whether assertions adequately tested the behaviour.

3. Standards, Metrics, and Evidence

3.1 Standards and procedures

Standards create consistency and make expectations auditable. A project may define standards for naming, branching, commit messages, architecture decisions, secure coding, documentation, test design, review conduct, and release approval. Procedures explain how standards are applied. Templates reduce omission risk, but they must not become meaningless paperwork.

A good standard is clear, relevant, testable, and proportionate. Exceptions should be documented with a reason, risk assessment, approver, and expiry or review date.

3.2 Useful quality metrics

Metrics support decisions only when their definitions and limitations are understood. Common measures include:

  • Defect density: number of confirmed defects divided by a defined size measure, such as thousands of lines of code or function points. The size unit must be stated because comparisons across different units are invalid.
  • Defect removal efficiency: the proportion of defects found before release among all defects eventually known for the same scope.
  • Test pass rate: passed tests divided by executed tests, with blocked, skipped, and inconclusive tests reported separately.
  • Requirement coverage: requirements linked to test cases and test results. This is not the same as code coverage.
  • Code coverage: the proportion of selected code elements exercised by tests, such as statements, branches, or conditions.
  • Defect ageing: the time defects remain unresolved, often examined by severity and priority.
  • Reopen rate: the proportion of closed defects later returned to an unresolved state.
  • Mean time to restore: average time required to restore service after an operational failure.

For a set of executed tests, the basic pass rate is:

Pass rate = (Number of passed tests ÷ Number of executed tests) × 100%

The formula assumes that “executed” is explicitly defined and that passed and failed outcomes are classified consistently. If 92 tests pass and 8 fail, the pass rate is (92 ÷ 100) × 100% = 92%. It does not mean that 92% of requirements are satisfied.

Defect removal efficiency can be represented as:

DRE = Defects removed before release ÷ (Defects removed before release + Defects found after release) × 100%

DRE is meaningful only when the same product scope, defect definition, and observation period are used. A high value can be misleading if post-release defects are under-reported.

Metrics can cause harmful behaviour. Teams may optimise pass rates by excluding difficult tests, reduce reported defects by changing definitions, or pursue coverage numbers without improving test quality. Metrics should therefore be interpreted in context and combined with qualitative evidence.

3.3 Quality records and traceability

Traceability links business requirements to design elements, code, tests, defects, and release decisions. It supports impact analysis, audits, regression selection, and accountability. A traceability matrix may include requirement identifier, risk, acceptance criteria, test cases, latest result, unresolved defects, and approval status.

Traceability should be automated where possible, but it should not become an administrative substitute for understanding. Links must be maintained when requirements or designs change.

4. Testing Governance and Test Levels

Testing governance defines who decides what will be tested, how evidence is evaluated, and who may approve release. It provides consistency across teams while allowing appropriate technical judgement.

4.1 Test levels

Unit testing examines a small component, function, class, or module in isolation. Dependencies are often replaced by stubs, mocks, or fakes. Unit tests are fast and useful for logic, boundary conditions, and error handling, but they cannot reveal all integration problems.

Integration testing examines interactions between components, services, databases, devices, or external interfaces. It may reveal incompatible data formats, timing problems, authentication errors, and transaction failures.

System testing evaluates the integrated system against functional and non-functional requirements in an environment resembling intended use. It includes end-to-end workflows and may include performance, security, recovery, compatibility, and usability testing.

Acceptance testing determines whether the product is acceptable to the customer, business owner, or authorised representative. User acceptance testing is not merely a repetition of system testing; it focuses on operational suitability and business outcomes.

4.2 Test types and strategies

Functional testing checks what the system does. Non-functional testing examines qualities such as performance, security, accessibility, reliability, and maintainability. Regression testing checks that changes have not damaged previously working behaviour. Smoke testing provides a quick check that a build is sufficiently stable for deeper testing. Exploratory testing combines learning, test design, and execution, and is valuable when requirements are incomplete or risks are poorly understood.

The testing approach should be risk-based. A risk can be considered through the combination of likelihood and impact, but the categories and scoring method must be defined by the organisation. High-risk features deserve stronger analysis, independent review, broader test coverage, and explicit release evidence.

4.3 The test pyramid and automation

A balanced automated test suite usually contains many fast unit tests, fewer integration tests, and a smaller number of end-to-end tests. End-to-end tests provide valuable confidence but are slower, more fragile, and more expensive to diagnose. The pyramid is a heuristic, not a law: system architecture and risk may justify a different distribution.

Automation is most valuable for repeatable, frequent, deterministic checks, especially in continuous integration. It does not eliminate the need for human judgement, exploratory testing, usability evaluation, security analysis, or review of ambiguous requirements.

4.4 Entry and exit criteria

Entry criteria may require an approved build, a prepared environment, available test data, and stable requirements. Exit criteria may require completion of planned tests, no unresolved critical defects, acceptable results for mandatory quality attributes, and documented residual risks.

A test team should report blocked tests separately from failed tests. A blocked test provides no evidence of pass or fail. Release decisions should consider incomplete testing rather than silently treating it as success.

5. Defect Management

A defect is a flaw in a work product that may cause it to fail to meet a requirement or reasonable expectation. A failure is an observable incorrect behaviour when software executes. An error is a human action or decision that produces an incorrect result. Distinguishing these terms supports root-cause analysis.

A disciplined defect workflow commonly includes:

  1. Detection and recording: document environment, build, steps, expected result, actual result, evidence, and reproducibility.
  2. Triage: confirm whether the report is valid, duplicate, environment-related, or requiring clarification.
  3. Classification: assign severity, priority, component, source, and state.
  4. Assignment: allocate ownership to an appropriate person or team.
  5. Correction: change the relevant artefact and record the cause.
  6. Verification: retest the correction and perform relevant regression tests.
  7. Closure or rejection: close with evidence, or document why the report is rejected, deferred, or accepted as a known limitation.

Severity describes technical or business impact. Priority describes urgency. A defect may have high severity but lower priority if it affects a rarely used function with a workaround; conversely, a low-severity spelling error in a legally required notice may have high priority.

Defect triage should be regular and cross-functional. Product, development, testing, operations, security, and business representatives may all be needed to assess consequences. Defects should not be hidden by informal agreements or deleted merely because they are inconvenient.

Root-cause analysis asks why a defect was introduced and why existing controls failed to detect it. Techniques include the five whys, causal diagrams, process analysis, and examination of escaped defects. The aim is not blame. It is to improve requirements, design, coding, review, testing, training, or tooling.

6. Reviews, Inspections, and Audits

Reviews are examinations of work products or decisions before later-stage problems become expensive. A peer review may examine requirements, architecture, code, test cases, deployment scripts, or documentation. An inspection is a more formal review with defined roles, preparation, defect logging, and follow-up. An audit evaluates compliance with standards, contractual obligations, or governance controls.

Effective reviews have a clear scope, suitable participants, prepared artefacts, and recorded outcomes. Reviewers should examine the product rather than criticise the author. Checklists help identify common omissions, but reviewers must remain alert to unusual risks.

A code review should consider correctness, security, error handling, testability, maintainability, performance implications, and consistency with architecture. Approval should not be based only on style when the change affects safety, privacy, data integrity, or operational resilience.

Independence is useful for high-risk decisions. The person who created an artefact may be unable to provide sufficient challenge, although self-review remains valuable before peer review. Independence must be balanced with domain knowledge and timely delivery.

7. Continuous Improvement and Technical Debt

Continuous improvement uses evidence from defects, incidents, reviews, delivery data, and stakeholder feedback to improve the system of work. A retrospective should identify what happened, why it happened, what should continue, what should change, and who will perform each action. Improvement actions need owners, deadlines, and follow-up; otherwise retrospectives become ceremonial.

Technical debt is the future cost created when a short-term implementation decision increases later effort, risk, or limitation. Examples include duplicated code, obsolete dependencies, weak automated tests, undocumented interfaces, temporary workarounds, and architecture that cannot scale with expected demand.

Technical debt is not simply “bad code.” A deliberate shortcut may be reasonable if its cost, risk, and repayment plan are understood. Unrecorded or accidental debt is more dangerous because it remains invisible.

A debt register should record:

  • description and location;
  • cause and affected quality attributes;
  • estimated impact and urgency;
  • dependencies and risk of postponement;
  • proposed repayment work;
  • owner, target date, and status.

Teams can manage debt by allocating capacity during normal iterations, including debt work in refactoring tasks, improving automated tests, updating dependencies, and preventing new debt through definition-of-done criteria. Debt should be discussed with business stakeholders because repayment competes with new features and therefore requires prioritisation.

A useful governance principle is that quality work should be visible in the product backlog, release plan, risk register, and project reporting. Hidden quality work is easily postponed until it becomes an emergency.

8. Release Governance and Professional Responsibility

A release decision should be based on evidence, not on a single metric or the absence of recently reported defects. A release readiness review may consider test results, unresolved defects, security findings, performance evidence, operational readiness, data migration, rollback capability, documentation, support arrangements, and residual risks.

A risk-based exception may be accepted when the responsible authority understands the impact and records mitigation, constraints, and an owner. “Known issue” is not itself an adequate justification for release.

Quality governance also has ethical and legal dimensions. Teams must protect personal and confidential data in test environments, obtain appropriate consent for user studies, control access to test results, and avoid using production data without lawful authorisation and suitable protection. Accessibility should be considered as a quality obligation, not an optional enhancement. Security vulnerabilities must be escalated responsibly and not concealed to protect schedule or reputation.

AI-assisted coding and test generation can increase productivity, but generated code and tests require human review. AI may reproduce insecure patterns, misunderstand requirements, expose confidential information through unsuitable services, or create tests that confirm implementation details without checking user value. Organisations should define approved tools, data-handling rules, review responsibilities, and evidence requirements.

9. Illustrative Case: Community Clinic Appointment System

Background

A small software team is developing an appointment system for community clinics. Patients can search for services, book appointments, receive reminders, and cancel bookings. The system integrates with a clinic scheduling service and stores personal information.

Problem

An early release passed most functional tests, but pilot users reported duplicate bookings and missed reminders. The project had no explicit quality plan, no integration test environment, and no owner for unresolved defects. The team also measured only the percentage of tests passed.

Analysis

The duplicate bookings resulted from a race condition between two booking requests. Unit tests covered the booking rule in isolation but did not exercise concurrent requests against the real database. Missed reminders were caused by an interface-format mismatch between the appointment service and the messaging service. A high pass rate had concealed the absence of integration evidence. Privacy risk was also identified because production-like patient data had been copied into a shared test environment without adequate access controls.

Approach and solution

The project introduced a quality management plan with the following controls:

  • requirements were linked to acceptance tests and risks;
  • booking and reminder interfaces received integration and contract tests;
  • concurrency tests were added for appointment creation;
  • critical defects required triage within one working day;
  • release required no open critical defects and documented residual risks;
  • test data was anonymised and access-controlled;
  • code review became mandatory for database and security changes;
  • a defect register and technical-debt register were reviewed weekly.

The team used a deployment pipeline that ran unit and integration tests for every change, followed by system and exploratory testing for release candidates. Product representatives performed acceptance testing using realistic workflows.

Outcome

The second pilot detected the race condition before public release and identified a second interface problem through contract testing. The release was delayed briefly while the defects were corrected. Although the project did not achieve a perfect test-pass rate, it had substantially stronger evidence for critical workflows and clearer responsibility for residual risk.

Learning points

The case demonstrates that quality is a system of practices rather than a test percentage. Integration boundaries require specific evidence, concurrency risks require appropriate test design, privacy controls apply to test data, and release governance must consider risk, not merely schedule pressure.

Challenges and Limitations

Quality management cannot remove all uncertainty. Requirements may be ambiguous, users may behave unexpectedly, environments may differ from test systems, and some failures occur only under rare combinations of timing and data. Testing budgets and schedules are limited, so prioritisation is unavoidable.

Metrics may be inaccurate when data is incomplete or definitions change. Code coverage may encourage shallow tests. Reviews may become superficial under deadline pressure. Independent quality functions may improve challenge but can also create hand-offs if they are separated from delivery teams. Automation can reduce repetition but can produce false confidence when tests are brittle or poorly designed.

The appropriate response is not to seek a single perfect process. It is to make assumptions visible, focus effort on risk, collect trustworthy evidence, learn from failures, and adjust controls as the system and its operating context change.

Best-Practice Checklist

  • Define quality in measurable, user-relevant terms.
  • Plan quality activities at project initiation, not after coding.
  • Apply prevention, reviews, testing, monitoring, and learning together.
  • Use risk to determine test depth and independence.
  • Separate severity from priority in defect decisions.
  • Track blocked tests and residual risks explicitly.
  • Treat security, privacy, accessibility, and maintainability as quality concerns.
  • Use metrics with definitions, owners, thresholds, and context.
  • Automate repeatable checks while retaining exploratory and human evaluation.
  • Record and prioritise technical debt rather than hiding it.
  • Make release decisions traceable and authorised.

Chapter Summary

Software quality management coordinates quality planning, assurance, control, measurement, governance, and improvement. Quality assurance focuses on process confidence; quality control examines deliverables; testing provides evidence but cannot prove the absence of defects. A quality management plan defines objectives, standards, roles, criteria, tools, metrics, defect practices, and improvement activities.

Testing governance coordinates unit, integration, system, and acceptance testing, together with functional, non-functional, regression, exploratory, security, and performance testing. Risk-based testing directs stronger evidence toward features with high likelihood or impact of failure. Defect management requires reliable records, triage, severity and priority decisions, correction, verification, and root-cause analysis.

Reviews and audits prevent or detect problems early, while retrospectives and technical-debt registers support continuous improvement. Metrics such as pass rate and defect removal efficiency are useful only when definitions, assumptions, scope, and limitations are clear. Ethical and professional governance requires protection of data, accessibility, responsible security practice, transparent release decisions, and human oversight of AI-assisted development. Effective quality is therefore a shared, evidence-based responsibility across the software lifecycle.

Key Terms

Quality assurance: Planned activities that provide confidence in the suitability and consistent application of processes.

Quality control: Activities that examine deliverables for conformity to requirements.

Software testing: Evaluation of software or related artefacts to find defects and provide evidence.

Verification: Determining whether a product is being built according to specifications.

Validation: Determining whether the product meets user and business needs.

Quality criterion: A defined condition that a product or process must satisfy.

Acceptance threshold: A measurable boundary used to support a decision.

Traceability: The ability to link requirements, designs, code, tests, defects, and decisions.

Unit testing: Testing of a small software component in isolation.

Integration testing: Testing of interactions among components or external systems.

System testing: Testing of the complete integrated system against requirements.

Acceptance testing: Evaluation by an authorised customer or business representative.

Regression testing: Testing performed to detect unintended effects of changes.

Defect: A flaw that may cause an artefact to fail a requirement or expectation.

Severity: The technical or business impact of a defect.

Priority: The urgency with which a defect should be addressed.

Inspection: A formal, structured review of a work product.

Technical debt: Future cost or risk created by decisions that make later change more difficult.

Defect removal efficiency: The proportion of known defects removed before release.

Residual risk: Risk remaining after planned controls and responses have been applied.

Review Questions

Short Answer Questions

  1. Distinguish quality assurance from quality control.
  2. What is the difference between verification and validation?
  3. Why should severity and priority be recorded separately for defects?
  4. State two limitations of code coverage as a quality metric.
  5. What information should a technical-debt register contain?

Long Answer Questions

  1. Explain the contents and purpose of a software quality management plan.
  2. Compare unit, integration, system, and acceptance testing, including the risks each level addresses.
  3. Describe a complete defect-management workflow and explain the purpose of triage.
  4. Explain how reviews, audits, and retrospectives contribute to software quality.
  5. Discuss how quality metrics can support decisions and also create harmful incentives.

Analytical / Application Questions

  1. A project reports a 98% test-pass rate but has not tested its payment gateway integration. Analyse whether the project has sufficient release evidence and propose additional controls.
  2. A high-severity defect affects a rarely used administrative report, while a low-severity defect appears on the public home page. Explain how severity and priority might differ and recommend a triage approach.
  3. A team repeatedly postpones dependency updates and refactoring to deliver features. Prepare a technical-debt management approach that identifies risks, assigns ownership, and integrates repayment into delivery planning.

Multiple Choice Questions with Answers

Question 1

Which activity is primarily an example of quality assurance?

A. Executing a regression test suite

B. Defining and auditing the coding standard

C. Recording a failed test result

D. Retesting a corrected defect

Correct Answer: B. Defining and auditing the coding standard

Question 2

What does validation primarily ask?

A. Are coding conventions followed?

B. Are all branches covered?

C. Are we building the correct product for user needs?

D. Has every defect been removed?

Correct Answer: C. Are we building the correct product for user needs?

Question 3

A team executes 120 tests, of which 108 pass. What is the pass rate?

A. 80%

B. 88%

C. 90%

D. 92%

Correct Answer: C. 90%

Question 4

Which testing level focuses most directly on interactions between a service and an external messaging system?

A. Unit testing

B. Integration testing

C. Acceptance testing

D. Code review

Correct Answer: B. Integration testing

Question 5

What does high code coverage not prove by itself?

A. That some code was exercised

B. That tests were executed in a specified environment

C. That the software is free of defects

D. That coverage was measured using a defined criterion

Correct Answer: C. That the software is free of defects

Question 6

Which statement correctly distinguishes severity from priority?

A. Severity describes impact, while priority describes urgency

B. Severity describes urgency, while priority describes impact

C. They always have identical values

D. Severity applies only to security defects

Correct Answer: A. Severity describes impact, while priority describes urgency

Question 7

What is the principal purpose of defect triage?

A. To delete all old defect reports

B. To confirm, classify, prioritise, and assign defects

C. To replace all system testing with unit testing

D. To guarantee that no defects remain

Correct Answer: B. To confirm, classify, prioritise, and assign defects

Question 8

Which condition is most suitable as a release exit criterion?

A. Every possible test has passed

B. No unresolved critical defects and residual risks are documented

C. The project has used the maximum available budget

D. All defects are permanently impossible

Correct Answer: B. No unresolved critical defects and residual risks are documented

Question 9

Which item is an example of technical debt?

A. An approved user requirement

B. A documented release decision

C. An obsolete dependency postponed repeatedly despite known risk

D. A completed acceptance test

Correct Answer: C. An obsolete dependency postponed repeatedly despite known risk

Question 10

Why should production data generally not be copied directly into shared test environments?

A. It makes unit tests run too quickly

B. It can create privacy and access-control risks

C. It prevents all integration testing

D. It guarantees inaccurate test results

Correct Answer: B. It can create privacy and access-control risks

Software Project Management and Documentation
Chapter 8 of 15