Judy Shen
在实际质量工作中,经常会碰到一个问题,即质量保证(Quality Assurance)和质量控制(Quality Control)关系比较容易混淆。QA和QC由于都属于质量管理的范畴,同时在工作中由于二者的工作存在部分交叉、共同的工作内容,因此在项目成员中容易造成职责上的混淆。为了让项目组成员了解二者的区别,并协调一致地开展工作、共同提高软件质量,笔者结合多年的测试经验对这两种角色的关系进行了研究和阐述。
QA和QC各司其职,相辅相成,统一于质量管理(Quality Management)。拿一部汽车来做比喻吧,质量控制(QC)就是所有那些告诉你汽车当前运动状态的仪器仪表;质量保证(QA)包括各类标准,是告诉你所有部件操作方法的用户手册;而质量管理(QM)则是你要追求的目标,比如希望能平安、高速地驾驶汽车。可以看出,为了实现质量管理的目标,质量保证和质量控制都是不可或缺的部分。
了解了QA和QC的重要性后,我们需要详细了解一下QA和QC的具体区别,如表一所示:
| QA | QC |
全 称 | Quality Assurance(质量保证) | Quality Control (质量控制) |
角 色 | QA工程师 | 测试工程师、评审员 |
定 义 | 为了确保软件开发过程和结果符合预期的结果,依照过程和计划采取的一系列活动及其结果评价。 | 为了发现软件产品的错误、缺陷而进行工作的过程。 |
目 的 | 减少并纠正实际的软件开发过程和软件开发结果与预期的软件开发过程和软件开发结果的不符合情况。 | 为了寻找错误、缺陷,并尽可能的为修复错误提供更多的信息。 |
职 责 | 监控公司质量保证体系的运行状况,审计项目的实际执行情况和公司规范之间的差异,并出具改进建议和统计分析报告。 是过程、产品质量审计者。 | 对每一个阶段或者关键点的产出物(工件)进行检测,评估产出物是否符合预计的质量要求。关注各阶段的评审和测试缺陷。 是产品质量检查者。 |
表一 QA与QC基础信息对照表
在了解了QA和QC的不同之处后,那问题来了:QA和QC该如何在项目各阶段中既关注职能领域、又共同为项目的质量目标协调、一致地开展工作呢?根据不同的项目阶段,笔者将二者的工作内容和工作产品进行了划分,如表二所示。在实际项目中,QA或QC工作人员,可以依据项目所处阶段,快速清楚本阶段的工作内容和产出物。
类别 项目阶段 | QA | QC | ||
工作内容 | 工作产品 | 工作内容 | 工作产品 | |
项目启动 | 定义产品质量指标 参与项目规划的评审 | 产品质量指标
|
|
|
项目计划 | 编制QA计划 过程审计 | 项目QA计划 QA阶段工作报告 | 测试计划管理 参加评审 | 测试计划 |
需求分析 | 阶段交付物审计 过程审计 | QA阶段工作报告 | 分析测试需求 参加评审 | 测试需求 |
设 计 | 阶段交付物审计 过程审计 | QA阶段工作报告 | 设计测试用例 参加评审 可能的话参与部分设计 | 测试用例 |
编 码 | 阶段交付物审计 过程审计 | QA阶段工作报告 | 单元测试 集成测试 参加评审 | 缺陷报告 测试报告 |
测 试 | 阶段交付物审计 过程审计 | QA阶段工作报告 | 集成测试 系统测试 性能测试 回归测试 测试管理工作 用户手册验证 | 测试脚本 缺陷报告 测试报告 用户手册验证报告 |
实 施 | 产品质量状态评估 过程审计 项目交付审计 | 产品质量评估报告 QA阶段工作报告 | 内部接收测试 验收测试 | 缺陷报告 测试报告 |
表二 QA与QC各个阶段工作内容及工作产品对照表
质量保证(QA)与质量控制(QC)的关系,一直以来都比较让人困惑。本文主要是将二者在实际工作中,如何有效完成各自的使命进行了阐述。当然了,在不同公司,可能有不同的适用情况,所以,本文介绍的内容,仅仅只是个例子,供抛砖引玉用。
虽然不同公司有不同的情况,但是原则都是一样的。QA是从过程和标准来控制开发过程,从而达到提高软件质量的目的。而QC则是通过测试、评审等验证、确认手段来发现软件中的缺陷,并确保该缺陷得到解决,从而达到提高软件质量的目的。