软件测试 - QA、QC 与测试
软件测试 - 质量保证 (QA)、质量控制 (QC) 与测试辨析
Section titled “软件测试 - 质量保证 (QA)、质量控制 (QC) 与测试辨析”区分质量保证、质量控制与测试
Section titled “区分质量保证、质量控制与测试”质量保证 (QA)、质量控制 (QC) 和测试这些术语经常被互换使用,导致混淆。虽然它们密切相关并都对软件质量做出贡献,但它们代表着不同的概念和活动。理解这些差异是建立有效质量管理实践的关键。
| 方面 | 质量保证 (QA) | 质量控制 (QC) | 测试 (Testing) |
|---|---|---|---|
| 侧重 | 面向过程:旨在通过定义和改进贯穿软件开发生命周期 (SDLC) 的过程、标准和方法来预防缺陷。 | 面向产品:旨在通过验证最终产品是否符合需求来识别产品中的缺陷。 | 面向产品:旨在在软件中发现缺陷/错误/bug 的活动。 |
| 性质 | 主动/积极的:侧重于从一开始就构建质量。是关于“做正确的事情”。 | 被动/反应式的:侧重于在开发后或特定检查期间识别问题。是关于“确保结果是正确的”。 | 侦探性的:一个调查过程,用于揭示缺陷。 |
| 范围 | 涵盖整个 SDLC,包括需求、设计、开发、测试和发布流程。它设定了质量的框架。 | 涉及用于满足质量要求的操作技术和活动。通常包括评审和测试活动。 | QC 内的一项特定活动,侧重于执行软件以评估其行为并发现差异。 |
| 职责 | 通常由专门的 QA 团队或职能负责,但在敏捷环境中,越来越多地被视为整个开发团队的共同职责。 | 通常由测试人员或 QC 团队执行,他们执行测试并验证输出。 | 主要由测试人员、SDET 或开发者(用于单元测试)执行。 |
| 例子 | 定义编码标准、选择工具、进行流程审计、培训团队、建立质量指标。 | 进行代码评审、执行测试用例、根据规范验证交付物。 | 运行单元测试、执行集成测试、执行系统测试场景、进行探索性测试。 |
| 关系 | 一套广泛的活动,确保整体质量管理。QC 是 QA 的一个子集。 | 一套确保产品符合质量标准的活动。测试是 QC 内的主要活动。 | QC 的核心组成部分,提供关于产品质量的数据。 |
现代质量方法:左移 (Shift-Left) 和全团队责任
Section titled “现代质量方法:左移 (Shift-Left) 和全团队责任”现代软件开发,尤其是在敏捷 (Agile) 和 DevOps 环境中,强调“左移 (Shift-Left)”的方法来实现质量。这意味着将与质量相关的活动(包括测试)更早地集成到开发生命周期中。质量不再是末端的一个关卡,而是持续关注的问题。
此外,越来越趋向于“全团队质量责任”或“质量协助 (Quality Assistance)”。在这种模式下,专业的 QA 人员更多地充当教练、使能者和战略家,帮助整个开发团队内建质量,而不是仅仅负责发现缺陷。开发者对其代码的测试承担更多责任(超越单元测试),每个人都致力于构建一种注重质量的文化。
审计 (Audit) 和检查 (Inspection)
Section titled “审计 (Audit) 和检查 (Inspection)”审计 (Audit):审计是一种系统性且独立的检查,旨在确定活动和相关结果是否符合计划安排,以及这些安排是否有效执行并适合实现目标。在软件测试中,审计可能评审是否遵守测试流程、标准或法规要求。根据 IEEE,它是对组织实施的文档化流程的评审。
审计类型包括合规性审计 (Legal Compliance Audits)、内部审计 (Internal Audits)(检查内部流程)和系统审计 (System Audits)(评估质量管理体系等系统的有效性)。
检查 (Inspection):检查是一种正式的评估技术,其中软件工件(例如,需求、设计文档、代码)由一组人(作者以外)详细检查,以检测错误、违反标准和其他问题。代码评审 (Code reviews) 和同行评审 (Peer reviews) 是常见的检查形式。IEEE 1028 提供了软件评审和审计(包括检查)的标准。
正式的检查流程通常包括:计划 (Planning)、概述 (Overview)(培训团队)、准备 (Preparation)(个人评审)、检查会议 (Inspection Meeting)(缺陷记录)、返工 (Rework)(作者修复缺陷)和跟进 (Follow-up)(验证修复)。
测试 (Testing) 与调试 (Debugging)
Section titled “测试 (Testing) 与调试 (Debugging)”测试和调试是不同但相关的活动:
- 测试 (Testing):其主要目标是识别软件中的缺陷、差异或故障。它涉及使用预定义测试用例执行软件或探索性地使用软件,以查看其行为是否按预期。测试揭示问题的症状。测试人员或 QA 工程师通常执行大多数测试活动。
- 调试 (Debugging):其主要目标是找到已知缺陷的根本原因,分析代码并修复它。调试是定位和纠正源代码中错误 (bug) 的过程。开发者主要负责调试。这通常在 bug 通过测试被报告后进行。
总之:测试发现 bug;调试修复 bug。虽然开发者执行单元测试并可能参与其他测试活动,但当发现缺陷时,他们的核心角色是调试并解决底层问题。