什么是质量
质量是一组固有特性满足要求的程度”——GB/T19000
固有:是指在某事或某物中本来就有的,尤其是哪种永久的特性。
特性:是指可区分的特征,如:
——物理的(如:机械的、电的、化学的或生物学的特性);
——感官的(如:嗅觉、触觉、味觉、视觉、听觉);
——行为的(如:礼貌、诚实、正直);
——时间的(如:准时性、可靠性、可用性);
——人体工效的(如:生理的特性或有关人身安全的特性);
——功能的(如:飞机的最高速度)。
要求:是指明示的、通常隐含的或必须履行的需求或期望。
如:
元气森林的主要质量有口感(新技术使含气量提升三分之一),健康性(新配方达到0 卡 0 糖 0 脂)
项目质量
项目质量指的是项目满足相关方期望的程度,包括项目的成果、过程和管理等方面,它涵盖了一系列的质量特性,项目合同通常是进行项目质量管理的主要依据。
在架构的领域,质量特性又叫质量属性,如:
- 性能:指 系统的响应能力,如 响应时间,吞吐率。
- 可靠性:在意外或错误使用情况下维持软件系统功能特征。如MTTF、MTBF、MTTR。
MTTF:平均无故障时间,MTBF:平均故障间隔时间,MTTR:平均故障修复时间。 - 可用性:系统正常运行的时刻。如 故障间隔时间。
- 安全性:指 阻止非授权用户使用企业或拒绝服务的能力。如 保密性、完整性、不可抵赖性、可控性。
- 可修改性:以较高性能价格比对系统进行更改。
- 功能性:系统所能完成所期望的工作和能力。
- 可变性:指 体系结构经扩充或变更而成为新系统结构的能力。(可扩展)
- 互操作性:作为系统 组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。
质量管理水平(递增)
1. 让客户发现缺陷。
(代价最大,可能导致返工成本以及商誉受损)
2. 先检测和纠正缺陷,再将可交付成果发送给客户。
(增加评估成本(测试)以及内部失败成本(返工))
3. 通过质量保证检查并纠正过程本身。
(如:自测,CodeReview,单元测试等)
4. 将质量融入规划和设计中。
(如:在系统设计中,增加调用资源时(SQL、接口、缓存…)的性能、量级、调用次数预估;并发场景下加锁或幂等机制;下游系统接口调用超时重试或异常补偿机制;外部接口安全签名机制等)
5. 创建一种关注并致力于实现过程和产品质量的文化。
(团队需要制定质量方针和质量目标)
(1)质量方针,即宗旨与方向,如:
- 以用户需求为导向,提供高质量的软件产品和优质的客户服务。
- 持续优化软件过程,追求卓越的软件质量。
- 遵循行业最佳实践,确保软件的稳定性和安全性。
(2)质量目标,即能够量化的具体要求,如:
- 软件缺陷密度降低到每千行代码 3 个以下。
- 客户满意度达到 95%以上。
- 软件交付准时率达到 90%以上。
- 代码评审覆盖率达到 100%。
- 测试用例覆盖率达到 90%以上。
规划质量管理
识别项目及其可交付成果的质量要求,标准,并书面描述项目符合质量要求,标准的证明。
质量测量指标,如:
- 缺陷率:缺陷数量与总工作量的比率,例如每千行代码的缺陷数。
- 可靠性:产品或服务在规定时间内正常运行的概率,如平均无故障时间。
- 客户满意度:通过调查或评估来衡量客户对项目成果的满意程度。
- 过程符合性:评估项目过程是否符合规定的标准、流程和规范。
- 质量成本:包括预防成本、评估成本、内部失败成本和外部失败成本等。
- 交付准时率:按时完成项目交付的百分比。
- 性能指标:如产品的响应时间、处理能力等性能参数。
- 返工率:需要重新工作或修复的任务占总任务的比例。
- 测试覆盖率:测试用例覆盖的代码或功能的比例。
管理质量
把组织的质量政策用于项目,并将质量管理计划转化为可执行的质量活动。
常有的质量活动,有:自测,CodeReview,需求评审,设计评审,代码静态分析(sonar),单元测试,集成测试(理解为联调),性能测试,自动化测试等,除此之外,还有核对单与根本原因分析(RCA)
1. 核对单是一种用于核对和确认信息的工具,以减少错误和遗漏的可能性。
当切换新旧系统或者业务重构上线时,将大量准备工作列入切换计划,经过评审后就是一种核对单,如:
2. 根本原因分析(RCA)是一种用于识别和解决问题的方法。
(1)定义问题:明确需要分析的问题或事件,确保对问题有清晰的理解。
(2)收集数据:收集与问题相关的所有信息,包括事实、数据、观察结果等。这可以通过调查、访谈、文档审查等方式进行。
(3)建立事件链:按照时间顺序或其他逻辑顺序,将与问题相关的事件和操作罗列出来,形成一个事件链。
(4)确定根本原因:通过对事件链的分析,找出导致问题发生的根本原因。这可能需要使用一些工具和技术,如鱼骨图、5Whys 分析等。
(5)制定解决方案:根据根本原因,制定针对性的解决方案,以消除问题的根源并防止再次发生。
(6)实施解决方案:将制定的解决方案付诸实施,并确保其有效执行。
(7)跟踪和监测:建立跟踪机制,监测解决方案的实施效果,以确认问题 是否已得到彻底解决。
(8)总结经验教训:总结整个分析过程中的经验教训,将其纳入项目的知识库,以便在未来的项目中参考和应用。
当发生线上问题或事故时,使用根本原因分析,如:
控制质量
为了评估绩效,监督和记录质量管理活动的执行结果,确保项目输出完整,正确且满足客户期望。
控制质量过程的目的是在用户验收和最终交付之前测量产品或服务的完整性、合规性和适用性。
到这里就是测试领域了,和管理质量的测试活动不同,管理质量的测试活动更偏重于开发过程中的质量保证,如单元测试,集成测试(理解为联调)等,控制质量的测试个人理解为是提测之后。除了大家熟知的系统测试,回归测试外,控制质量还有评估绩效的功能,如:当我们的代码交给测试同学之后(提测),测试发现BUG并记录在禅道系统中跟踪BUG状态,同时绩效系统每天定时抽取测试数据,评估开发绩效,如:总BUG数,千行BUG率,BUG停留时间、BUG经手次数等。
总结
随着工作的内卷,质量已经变为了一种竞争力。作为开发,不得不更加关注规划质量管理、管理质量的过程,在提测之前控制好质量。