- Definition and scope: Software quality is the degree to which a software product satisfies stated and implied needs under specified conditions. It includes conformance to requirements, absence of critical defects, and fitness for purpose. Quality is not just a testing step; it begins with requirement analysis and continues through design, coding, and operations, influencing every phase of the software development lifecycle.
- Key dimensions: The ISO/IEC 25010 standard defines eight quality characteristics, including functional suitability, performance efficiency, compatibility, usability, reliability, security, maintainability, and portability. These dimensions help testers focus on what matters most to stakeholders. Each characteristic breaks down into subcharacteristics, such as time behavior under performance or confidentiality under security, creating a shared vocabulary for cross-functional teams.
- Cost of quality: The cost of quality comprises all expenses incurred to ensure good quality plus the costs incurred when quality fails. Prevention costs include training, design review, and process improvement. Appraisal costs cover testing and inspection. Internal failure costs arise from defects caught before release, while external failure costs impact customers. Investing in prevention reduces total cost by catching issues early.
- Internal versus external quality: Internal quality refers to the attributes visible to developers and testers, such as code complexity, coupling, and test coverage. External quality is what end users experience: response time, error rates, and ease of use. Both are interdependent; weak internal quality often leads to poor external quality. A quality strategy must address both, using code reviews and refactoring for internal quality and user acceptance testing for external quality.
- Quality attributes and priorities: Not all quality attributes carry equal weight for every system. A banking application prioritizes security and reliability, while a marketing website values usability and performance. QA teams must collaborate with stakeholders to define quality criteria for each release. These criteria become the basis for test design, risk analysis, and go or no-go release decisions, aligning development effort with business value.
- Quality planning: Quality planning establishes the processes, standards, and resources needed to achieve quality objectives. It produces a quality management plan that outlines activities, responsibilities, and schedules for verification and validation. A good plan anticipates risks and determines how to measure success. It also defines entry and exit criteria for each test phase, ensuring teams know when to stop testing.
- Quality assurance vs quality control: Quality assurance is proactive, focusing on process improvement and preventing defects through activities like audits and standards compliance. Quality control is reactive, identifying defects through inspection and testing. QA sets the framework and rules; QC executes checks against that framework. Both are essential; QA reduces the likelihood of faults, while QC detects the faults that occur, providing feedback to improve processes.
- Continual improvement: Quality is not a fixed target but a dynamic goal that evolves with user needs and technology. Techniques like the Plan-Do-Check-Act cycle enable teams to refine their QA practices iteratively. Retrospectives analyze quality data to identify improvement areas, such as reducing escape defects or shortening test execution time. A culture of continuous improvement transforms quality from a compliance activity to a strategic advantage, fostering innovation and resilience.
def compute_defect_density(total_defects, code_size):
if code_size == 0:
return 0
return total_defects / code_sizeDefect density is a common quality metric. It helps teams compare defect rates across modules or releases.
- Software quality spans functional and non-functional attributes defined in ISO 25010.
- Prevention investment lowers total cost of quality compared to finding defects late.
- Quality assurance improves processes; quality control verifies the product.
- Prioritizing quality attributes aligned with business goals drives effective test planning.
- Continual improvement cycles adapt QA practices to deliver sustained value.