Skip to content

质量保证

软件质量保证 (Software Quality Assurance, SQA) 包括质量体系内为提供产品或服务将满足质量要求而实施的计划性和系统性活动。经典的 IEEE 定义指出:

“为提供足够的信心,确保一个项目或产品符合既定的技术要求而采取的所有必要行动的计划性和系统性模式。旨在评估产品开发或制造过程的一系列活动。”

现代解读通常将此观点扩展至质量工程 (Quality Engineering, QE),强调一种积极主动的方法,专注于在整个软件开发生命周期 (Software Development Life Cycle, SDLC) 中内建质量,而不是主要在事后进行检查。质量工程涉及团队中的每个人,并利用自动化和过程改进。

SQA/QE 活动的核心目标旨在确保对过程和产品的信心:

软件开发期间(过程导向与产品导向)

Section titled “软件开发期间(过程导向与产品导向)”
  • 确保软件满足功能性需求和非功能性需求(例如,性能、安全性、可用性)。
  • 验证是否符合开发标准、指南和最佳实践。
  • 提供信心,确保项目在遵守进度和预算约束的同时保持质量。
  • 在生命周期早期识别并减轻与质量相关的风险。
  • 促进开发过程和实践的持续改进。
  • 通过需求分析、设计评审和静态代码分析等活动预防缺陷。
  • 通过有效的测试策略(手动测试和自动化测试)尽早发现缺陷。

软件维护期间(过程导向与产品导向)

Section titled “软件维护期间(过程导向与产品导向)”
  • 确保维护活动(Bug 修复、功能增强)满足功能和质量要求。
  • 验证变更不会引入回归问题 (regressions)(意料之外的副作用)。
  • 随着时间推移保持或改进现有软件的质量属性。
  • 在进度和预算约束内管理维护活动。
  • 持续改进维护过程以提高效率和有效性(例如,减少修复时间,提高修复质量)。

一个有效的质量保证框架涉及跨不同角色的协作以及可能的专门机构。参与者通常包括:

  • 高层管理:制定质量方针,提供资源,培育质量文化。
  • 部门/中层管理:在其职责范围内实施质量过程,监控绩效。
  • 项目经理/Scrum Master/团队负责人:确保质量实践融入项目执行,促进团队的质量责任感。
  • 开发人员:编写高质量代码(清晰、可测试、安全),执行单元测试 (Unit Testing),参与代码评审 (Code Reviews)。
  • 业务分析师/产品负责人 (Product Owners):定义清晰、可测试的需求和验收标准。
  • 设计师/架构师:创建健壮、可维护和可扩展的设计。

质量专业人员(质量保证/质量工程工程师、测试人员)

Section titled “质量专业人员(质量保证/质量工程工程师、测试人员)”
  • 制定测试策略和计划。
  • 设计、实施和执行测试(手动和自动化)。
  • 构建和维护测试自动化框架。
  • 执行专门测试(例如,性能、安全性、可用性)。
  • 分析测试结果并报告缺陷。
  • 在团队中充当质量倡导者和指导者。
  • 为过程改进措施做出贡献。

在现代敏捷 (Agile) 和 DevOps 环境中,强烈强调质量的“全团队方法”或“共同责任”。专门的质量保证专业人员通常融入开发团队中,充当赋能者、专家和自动化专家,而不是作为一个独立把关实体。SQA 部门 (SQA Units)、委员会或实践社区 (Communities of Practice) 等组织结构也可能存在,以支持标准化、知识共享和整体过程治理。