关键词:质量管理QM(Quality Management)、质量保证QA(Quality Assurance)、质量控制QC(Quality Control)
不管是工作过程还是培训过程中,或者面试或找工作过程中,经常会看到质量控制QC和质量保证QA两个词汇,甚至不少人或组织会将质量保证QA代指测试。本文将基于ISO 9000相关术语的定义,从测试角度来谈谈我对它们的理解。首先给出ISO 9000的定义:
1、质量管理QM指的是在组织质量方面提供指导和控制的协同活动。针对质量的指导和控制通常包括建立质量方针和质量目标、质量计划、质量控制QC、质量保证QA和质量改进。[ISO 9000]
2、质量保证QA属于质量管理的组成部分,其提供了达到质量要求的可信程度。[ISO 9000][GBT 11457]
3、质量控制QC属于质量管理的一部分,其关注在为达到质量要求而采取的技术和活动。[ISO 9000][GBT 11457]
根据上面的定义,可以看出质量管理QM是一个更大的概念,可以将质量保证QA和质量控制QC联系在一起,它们都属于质量管理QM的一部分。
质量保证QA关注在软件产品生成的整个过程,主要验证软件产品开发过程中相关实施过程的完整性、一致性和有效性,确保开发活动和测试活动等遵循正确的过程,为软件产品达到合适的质量级别提供信心。为了实现过程的可重用性和持续改进,组织往往会把过程进行标准化,例如:定义子过程、过程的里程碑点、过程的阶段输入和输出、每个时间点需要完成的工作等。软件产品随着生命周期不断增加和成型,想要修复其在早期引入的缺陷,时间和成本都将成倍增加。而质量保证QA的基本假设是过程质量决定了软件产品质量。当过程正确开展时,确保过程的每个阶段得到了良好的遵循,每个阶段引入的缺陷尽量在本阶段得到发现和修复,最大程度的实现缺陷的阶段遏制能力。同时,在当前阶段发现和修复的缺陷,有助于后续阶段的缺陷预防。另外,通过根本原因分析等技术消除在软件工作产品中引入缺陷的根本原因,或者在适当时候开展回顾会议以总结经验和教训,都有助于过程改进,从而可以在将来更好的实现质量保证。
质量控制QC关注在过程中生成的工作产品,其主要目的是检查工作产品是否达到预期要求。从测试的角度,测试过程是整个软件开发生命周期的一部分,而质量保证QA涉及整个过程的正确执行,因此质量保证QA可以支持正确的测试活动。为了帮助实现软件工作产品质量的不断提高,测试可以采用各种不同的测试策略、测试技术、测试类型、测试活动等,例如:自动化测试与手工测试、黑盒测试技术与白盒测试技术、功能测试与非功能测试、测试设计与测试执行等,以尽早发现被测对象与预期结果之间的不一致,并以缺陷报告方式提交,通过开发人员的定位和修复问题,测试人员的再测试和回归测试,逐步实现工作产品质量的提高。
质量保证QA监督的是软件产品实施的全过程(也包括质量保证QC的过程),因此QA往往会是组织层面的岗位定义。而属于质量控制QC的测试团队,往往会在项目层面的得到定义。质量保证QA与质量控制QC既相互关联,又关注重点不同。为了实现软件项目在时间、成本、范围和质量要求下交付满足客户要求的软件产品,需要质量保证QA和质量控制QC两个团队的相互配合和支持。