目录
一、软件质量定义
软件质量就是软件与明确地和隐含地定义的需求相一致的程度,更具体地说,软件质量是软件符合明确地叙述的功能和性能需求、文档中明确描述的开发标准以及所有专业开发的软件都应具有的隐含特征的程度。
二、软件质量保证概述
软件质量保证(Software Qualiy Assurance,SQA)是指为保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动。软件质量保证的目的是使软件过程对于管理人员来说是可见的。软件质量保证过程关注软件产品生成的整个过程,验证软件产品开发过程中相关实施过程的完整性、一致性、有效性,确保开发活动和测试活动等遵循正确的过程,为软件产品达到合适的质量级别提供保证。
三、软件质量保证活动
软件质量保证常见的活动有准备SOA计划、参与但不负责开发项目的软件过程描述、评审、审计、处理偏差并文档化、记录不规范并上报、协调变更管理等。
SQA各类活动的主要内容如下:
(1)准备SQA计划。制订项目计划时制订 SQA计划,规定开发、质量保证人员需要执行的质量保证活动。
(2)参与开发项目的软件过程描述(而非负责开发项目的软件过程描述)。开发小组确定项目的软件过程,SQA小组则进行开发过程评审,确保过程符合业界、企业所制定的标准,符合项目计划等。
(3)评审。评审各项软件工程活动,验证是否符合定义的软件过程。SQA 小组应识别、记录、跟踪偏差,并核实是否已经改正。
(4)审计。审计软件工作产品,验证是否符合已定义的软件过程的对应部分。
(5)处理偏差并文档化。依据规程处理偏差,并确保偏差已经文档化。
(6)记录不规范并上报。记录所有不符合规范的内容,并报告给高层管理部门。
(7)协调变更管理。协调变更控制和变更管理,并帮助收集和分析软件度量信息。
四、软件质量保证活动解析
1. 准备 SQA 计划
主要内容
- 在项目启动阶段,SQA 小组需制定详细的 SQA 计划。
- 明确开发团队和质量保证人员执行的质量保证活动,涵盖活动时间安排、资源分配、检查点和交付物等。
目的
- 确保项目从起始就遵循既定质量标准和流程。
- 提供清晰路线图,指引项目质量保证工作。
举例说明
某公司开发电商平台软件,SQA 小组初期制定计划:
- 每周进行一次代码审查;
- 每两周评审需求文档;
- 测试阶段覆盖所有核心功能模块。
该计划让开发与测试团队明确质量检查的时间与方式。
2. 参与但不负责开发项目的软件过程描述
主要内容
- 开发小组定义项目具体软件开发过程(如需求分析、设计、编码、测试等) 。
- SQA 小组参与评审,确保过程符合行业标准、企业规范及项目计划要求,仅起监督和验证作用,不直接参与过程定义。
目的
- 防止开发过程出现不符合标准或偏离计划的情况。
- 保证开发过程透明且可追溯。
举例说明
开发小组为医疗软件项目定义两周迭代周期的敏捷开发流程,SQA 小组评审时发现未明确迭代结束验收标准,建议补充标准并引用 ISO 9001 标准,完善流程。
3. 评审
主要内容
- SQA 小组定期评审软件工程活动,包括需求分析、设计、编码、测试等环节。
- 检查活动是否符合已定义的软件过程,发现偏差则记录、跟踪并推动纠正,直至问题解决。
目的
- 及早发现并纠正问题,避免问题扩大化。
- 确保所有活动在规定框架内开展。
举例说明
某银行系统开发项目中,SQA 小组评审设计文档,发现数据库设计方案未含数据加密机制,违反企业信息安全政策,要求开发团队修改并跟踪进度。
4. 审计
主要内容
- 审计即审查软件工作产品(如需求文档、设计文档、代码、测试报告等)。
- SQA 小组检查工作产品是否符合已定义软件过程对应部分,审计可正式或非正式,通常依据检查表进行。
目的
- 确保工作产品质量和一致性。
- 验证开发团队按既定过程生成正确输出。
举例说明
某 ERP 系统项目中,SQA 小组审计测试报告,发现缺少关键模块测试结果,通知测试团队补充并重新提交审计。
5. 处理偏差并文档化
主要内容
- 评审或审计中,实际操作与定义软件过程不符即视为偏差。
- SQA 小组按既定规程处理偏差(如提改进建议、要求重新执行活动),并详细记录、归档偏差及处理过程。
目的
- 规范偏差处理流程,确保问题妥善解决。
- 留存历史记录,便于后续分析改进。
举例说明
某移动应用开发项目,SQA 小组发现开发团队代码提交前未进行代码评审,记录偏差,要求补做评审并记录事件作为培训案例。
6. 记录不规范并上报
主要内容
- 发现不符合规范内容(如违反标准、未按计划执行等),SQA 小组需记录。
- 整理信息成报告,提交高层管理部门,报告含问题描述、影响范围及解决方案建议。
目的
- 提高透明度,让高层了解项目质量问题。
- 推动管理层采取措施解决问题。
举例说明
某航空管理系统项目,SQA 小组发现测试团队未按计划完成性能测试,记录问题并提交报告,指出可能导致系统上线响应慢,建议延长测试时间或增加资源,获高层批准。
7. 协调变更管理
主要内容
- SQA 小组参与变更控制和管理活动。
- 项目需求、设计等变更时,评估变更对质量的影响,协助收集分析软件度量信息(如缺陷率、测试覆盖率等),为决策提供支持。
目的
- 确保变更不影响产品质量。
- 提供数据支持,助团队了解项目质量状态。
举例说明
某电商系统项目,客户要求新增 “优惠券功能”,SQA 小组评估发现需调整数据库结构,建议变更后增加一轮回归测试,并通过分析缺陷率数据确认风险可控。
五、在项目各个阶段的应用
计划阶段
- 制定质量计划:根据项目的目标和需求,确定质量目标、质量标准和质量控制方法,制定详细的质量保证计划,明确 SQA 活动的流程、角色和职责。
- 评审项目计划:对软件开发计划进行评审,确保计划中包含了足够的质量控制措施和里程碑,保证项目的进度、资源分配等合理,能够满足质量要求。
需求分析阶段
- 需求评审:对软件需求规格说明书进行严格评审,检查需求的完整性、一致性、可行性和可测试性,确保需求能够准确反映用户的期望和业务需求,避免需求模糊或矛盾导致的质量问题。
- 参与需求定义:SQA 人员参与需求定义过程,与开发人员、用户等相关方进行沟通,从质量角度提出建议和意见,帮助完善需求定义,确保需求的质量。
设计阶段
- 设计评审:对软件设计文档进行评审,包括总体设计和详细设计,检查设计是否符合需求规格,是否遵循相关的设计原则和标准,评估设计的合理性、可维护性和可扩展性,及时发现设计中的缺陷和风险。
- 审查设计规范:确保设计团队遵循统一的设计规范和标准,提高软件的一致性和可理解性,便于后续的开发、测试和维护工作。
编码阶段
- 代码审查:通过人工或工具对代码进行审查,检查代码是否符合编码规范,是否存在逻辑错误、语法错误、安全漏洞等,同时评估代码的可读性、可维护性和效率,促进代码质量的提高。
- 代码质量分析:运用代码质量分析工具,对代码进行静态分析,检测代码的复杂度、耦合度等指标,识别潜在的质量问题区域,为开发人员提供改进方向。
测试阶段
- 测试计划评审:对测试计划进行评审,确保测试计划覆盖了所有的需求和功能,测试策略、测试用例设计合理,测试资源分配充足,能够有效地发现软件中的缺陷。
- 测试执行监督:监督测试执行过程,确保测试按照测试计划和测试用例进行,及时记录和跟踪测试结果,对发现的缺陷进行管理和跟踪,确保缺陷得到及时修复。
- 测试报告审查:审查测试报告,评估软件的质量状况,判断软件是否达到了发布的标准,为决策提供依据。
上线及维护阶段
- 上线前检查:在软件上线前,对软件的部署环境、配置等进行检查,确保软件能够在生产环境中稳定运行,同时检查相关的文档是否齐全,如用户手册、安装手册等。
- 维护与改进:收集用户在使用过程中反馈的问题和意见,对软件进行维护和改进,同时分析软件运行过程中的质量数据,总结经验教训,为后续项目提供参考,不断提高软件的质量和可靠性。
六、总结
软件质量不能由SQA 完全负责,还应该包括软件工程师、项目管理者、客户、销售人员和SQA成员等。SQA应从客户的角度看待软件,帮助研发高质量的产品。
软件质量保证着眼软件开发活动中的过程、步骤及产物,通过预防和改进过程来提高软作质量。而软件测试不关心过程,关注过程的产物(软件、文档等),通过运行、走查程序,找到问题。