SQA 组成部分
软件质量保证系统的组成部分
Section titled “软件质量保证系统的组成部分”[软件质量保证(Software Quality Assurance, SQA)] 包括一系列计划的活动,旨在确保软件开发和维护过程持续产生满足已定义需求和标准的高质量产品。它是一个贯穿于[软件开发生命周期(Software Development Life Cycle, SDLC)] 的持续努力。
现代 SQA,通常被称为[质量工程(Quality Engineering, QE)],强调缺陷预防和从一开始就构建质量,而不是仅仅依赖于开发后的检查。它涉及定义、实施、监控和持续改进流程。
核心 SQA 活动包括:
- 流程定义与实施:建立清晰、文档化的工作流程和标准(例如,编码标准、评审流程、测试方法、[持续集成/持续部署(CI/CD)] 流水线)。
- 流程监控与审计:检查对已定义流程的遵守情况,并识别偏差或需要改进的领域。
- 培训与知识共享:为团队配备必要的技能和对质量实践与工具的理解。
- 反馈循环与持续改进:分析数据(度量指标、审计结果、回顾)以优化流程。
SQA 经常涵盖的流程包括:
- 需求工程(Requirements Engineering,定义与管理)
- 软件设计与架构(Software Design and Architecture)
- 编码与实现(Coding and Implementation)
- 测试(Testing,所有级别:单元测试、集成测试、系统测试、验收测试、性能测试、安全测试)
- 配置管理与版本控制(Configuration Management and Version Control)
- 构建与部署(Build and Deployment,CI/CD)
- 项目管理(Project Management,包括风险管理,Risk Management)
- 估算与规划(Estimation and Planning)
SQA 系统组成部分的分类
Section titled “SQA 系统组成部分的分类”一个全面的 SQA 系统集成了各种组成部分,可以将其归为几类:
1. 项目前期组成部分
Section titled “1. 项目前期组成部分”在开发开始前确保坚实基础的活动。旨在明确期望、评估可行性并进行质量规划。
- 合同评审(Contract Review) / 需求分析(Requirements Analysis):确保需求清晰、完整、可测试,并确保利益相关者之间的相互理解。
- 可行性研究(Feasibility Study):评估技术和资源的可行性。
- 风险评估(Risk Assessment):尽早识别潜在的质量风险。
- 开发和质量规划(Development and Quality Planning):定义项目生命周期、方法论、工具、进度、预算、资源以及具体的质量目标和活动(例如,所需的评审、测试类型、验收标准)。
2. 项目生命周期质量评估组成部分
Section titled “2. 项目生命周期质量评估组成部分”在开发和维护期间执行的活动,用于评估和改进产品质量。
- 评审(Reviews):正式和非正式的检查(例如,需求评审、设计评审、代码评审、架构评审)。
- 测试(Testing):包括各种级别和类型:单元测试(Unit Testing)、集成测试(Integration Testing)、系统测试(System Testing)、验收测试(Acceptance Testing)、探索性测试(Exploratory Testing)、性能测试(Performance Testing)、安全测试(Security Testing,[静态应用安全测试(SAST)]、[动态应用安全测试(DAST)])、可用性测试(Usability Testing)。
- 自动化质量门禁(Automated Quality Gates):集成到 CI/CD 流水线中的检查(例如,自动化测试执行、静态分析检查、安全扫描)。
- 专家意见 / 咨询:就复杂的质量挑战寻求专业建议。
3. 基础设施错误预防和改进组成部分
Section titled “3. 基础设施错误预防和改进组成部分”组织层面的活动,旨在预防错误,并基于集体经验培养持续改进的文化。
- 规程和工作说明书制定(Procedure and Work Instruction Development):记录最佳实践和标准流程。
- 模板和检查表(Templates and Checklists):提供标准化工具来指导活动。
- 知识管理(Knowledge Management):捕获和分享经验教训、最佳实践和常见陷阱。
- [根本原因分析(Root Cause Analysis, RCA)]:调查缺陷和流程故障以防止再次发生。
- 引入和评估提升质量的新工具和技术。
4. 软件质量管理组成部分
Section titled “4. 软件质量管理组成部分”侧重于控制质量工作并确保与项目和组织目标保持一致的管理活动。
- 项目质量监控(Project Quality Monitoring):使用度量指标和仪表盘跟踪与质量计划的进展。
- 风险管理(Risk Management):持续识别、评估和减轻与质量相关的风险。
- 配置管理(Configuration Management):控制对软件工件的更改。
- 分包商管理(Subcontractor Management):确保第三方供应商符合质量标准。
5. 标准化、认证和评估组成部分
Section titled “5. 标准化、认证和评估组成部分”利用外部标准和模型来构建和评估 SQA 系统。
- 采用质量管理标准(Quality Management Standards):例如,[ISO 9001](质量管理体系)。
- 采用流程改进模型(Process Improvement Models):例如,[能力成熟度模型集成(CMMI)]、敏捷成熟度模型。
- 采用产品质量标准(Product Quality Standards):例如,[ISO/IEC 25010(SQuaRE - 系统和软件质量要求与评估)]。
- 采用安全标准(Security Standards):例如,[OWASP] 指南、ISO 27001。
- 内部和外部审计(Internal and External Audits):评估对照所选标准或模型的合规性和有效性。
6. 人力组成部分(SQA 组织)
Section titled “6. 人力组成部分(SQA 组织)”参与实施和支持 SQA 的人员和结构。
- 管理层的承诺和领导力(Management Commitment and Leadership,所有级别)。
- SQA / QE 专业人员(Professionals)和测试人员(Testers)。
- 承担质量职责的开发团队成员(Development Team Members)。
- 专职的 SQA 部门(Units)或团队(Teams)(在某些组织中)。
- 跨职能质量委员会(Cross-functional Quality Committees)或[实践社区(Communities of Practice, CoPs)]。
- SQA 培训和意识计划(Training and Awareness Programs)。
聚焦项目前期组成部分
Section titled “聚焦项目前期组成部分”这些初始步骤对于确保项目成功至关重要。
合同评审 / 需求分析
Section titled “合同评审 / 需求分析”在承诺参与项目(外部合同或内部倡议)之前,进行彻底的评审至关重要。这包括:
- 确保需求清晰、无歧义、完整、一致且可验证。
- 确认范围、交付物和验收标准的一致性。
- 评审进度、预算和资源需求的估算是否可行。
- 评估开发团队的能力和实力。
- 评估潜在风险(技术、资源、外部依赖)。
- 澄清利益相关者的义务和假设。
开发计划和质量计划
Section titled “开发计划和质量计划”项目获批后,会制定或完善详细计划。这些文档指导执行过程。
开发计划(Development Plan)通常涵盖:
- 项目范围和目标。
- 详细的进度(schedules)和里程碑(milestones)。
- 所需资源(Resources,人员、硬件、软件)。
- 风险管理计划(Risk management plan)。
- 项目组织(Project organization,团队结构、角色、职责)。
- 选定的开发方法论(development methodology,例如,Scrum、看板 Kanban、瀑布 Waterfall)、工具和环境。
- 软件复用或与现有系统集成的计划。
质量计划(Quality Plan)则具体概述:
- 项目的具体、可衡量的质量目标(quality goals)(例如,目标缺陷密度 defect density、性能基准 performance benchmarks、测试覆盖率百分比 test coverage percentage)。
- 需要遵循的已定义的质量标准和实践(quality standards and practices)。
- 计划的质量活动(quality activities)时间表(例如,评审 reviews、测试类型 types of testing、审计 audits)。
- 关键项目阶段的进入和退出标准(entry and exit criteria)(包括质量门禁 quality gates)。
- 质量相关任务的角色和职责(roles and responsibilities)。
- 将用于质量保证(quality assurance)的工具(tools)(例如,测试管理 test management、静态分析 static analysis、自动化框架 automation frameworks)。
- 为监控质量(monitoring quality)而收集和报告的度量指标(Metrics)。