引言
本文的目的是概述大多数项目中使用的主要质量指标。这些质量指标通常分为以下三个领域:质量保证过程的指标、生产中事故管理的指标、衡量质量文化的指标。同时,可能还存在其他特定于特定项目、产品或质量目标的质量指标。
质量保证过程的指标
质量指标可以分为衡量功能性和/或非功能性测试覆盖率的指标,衡量基于检测到的缺陷及其状态、优先级和重要性的质量指标,以及其他与修复此类缺陷的时间和整体用户满意度相关的指标。以下分类是最常见和重要的指标的列表。
测试覆盖率:可以根据测试类型使用不同的标准进行衡量。这些指标可以洞察团队和产品内测试的发展情况,并了解在代码行数和用户故事方面的覆盖情况。此外,自动化水平指示了整体质量活动的改进,并减少了认证时间。(a) 在单元测试中,关键是衡量遵循已建立的质量门控,以确保代码在最原子级别上正确运行并符合单元测试准则。验收测试通过考虑每个用户故事可用的测试用例数量来评估覆盖率。(b) 它们通常按测试类型(如冒烟测试、回归测试、集成测试)、优先级以及是否为手动或自动化测试进行组织。这些测试涵盖了从UI层的端到端场景以及从后端的API测试场景。
测试执行时间:此指标衡量验证用户故事所需的时间,考虑到执行的测试数量和类型,以及在发现缺陷的情况下重新运行测试所需的时间。随着手动测试需求增加,投入用于确保质量和在生产中交付功能的时间也会增加。应该尽量优化自动化测试与手动测试的时间,并在开发周期的开始或整个过程中尽早执行测试。
代码复杂度:可以使用不同的指标来衡量代码质量,包括代码行数、最佳实践和开发技术以及圈复杂度等。静态代码分析工具用于获取此信息,以便识别软件质量问题,如漏洞和“坏味道”等。其中一些知名的工具有Sonarqube、Checkmarx、PMD、Codacy和Deep Source等。
缺陷比率:此指标根据发现的缺陷数量以及根据其环境、优先级、严重程度和状态进行分类来衡量软件质量,重点关注关键缺陷或在生产中检测到的缺陷。较低数量的关键缺陷表示较高的软件质量和更快解决问题的能力。根据此指标,如果存在大量关键缺陷,可以实施“零缺陷”政策,即一旦发现关键缺陷,必须立即解决。
用户满意度指数:此指标衡量用户对系统的满意程度。较高的满意度指数表示软件符合用户的期望。可以使用不同的方法来衡量用户满意度指数,例如调查、投诉、应用商店评估、可用性测试以及用户检测到的关键缺陷的百分比。使用工具来监控和了解用户行为以细化或计划可以增强用户体验从而提高用户满意度的任务是很重要的,例如Google Analytics、Google Optimize或Hotjar。
技术债务:此指标衡量与软件质量或与此过程相关的任何其他活动相关的待处理活动的数量。这些活动包括回顾生产中功能的待覆盖范围、增加自动化测试覆盖范围、执行维护、重构、优化和手动流程的自动化、检查测试、减少“不稳定的测试”和改进报告质量等。跟踪技术债务很重要,因为它可能减缓软件开发的速度,并增加缺陷和系统故障的可能性。
代码审查:通过跟踪代码审查期间发现的问题数量,团队可以了解代码库的整体健康状况。较多的问题数量可能表示潜在的质量问题需要关注。此外,对已识别问题的严重程度进行分类使团队能够优先处理和解决关键问题。为了有效跟踪代码审查反馈,团队可以使用工具或平台来促进审查过程并以结构化方式捕获反馈。这有助于有效地管理问题、跟进行动并监控进展。
非功能性测试覆盖率:根据项目和产品的不同,可以建立质量指标来衡量此类测试的状态和发展情况,其合规性以及在项目中的采用程度。可以提及的指标包括:
- 无障碍测试:通过衡量与WCAG准则的一致性来评估无障碍性的达成程度,WCAG是最常遵循的无障碍标准。这些测试评估达到的无障碍程度,利用从1到3的评估等级。然而,重要的是要认识到特定国家可能会引入自己的准则以供考虑。例如,美国有Section 508,欧洲联盟遵循欧洲标准EN 301 549,ARIA则作为WCAG的补充资源。
- 安全性测试:通过衡量在系统中发现的漏洞的数量、严重程度和类型来评估安全性。
- 性能测试:通过衡量系统及其组件的整体性能以及每个组件的资源消耗,以优化其扩展性和/或降低基础设施成本,并调查和衡量与系统并发处理相关的错误。
生产中的事故管理指标
有多种指标用于衡量生产环境中事故解决过程的有效性。这些指标相互关联,生成了一个特定的工作流程,用于处理事故,并同时测量每个阶段所需的时间并与预期结果进行比较。为了确保您的服务和应用程序始终保持一致可靠的性能,重点关注并优化以下指标是非常重要的:
故障检测平均时间:这是发现需要关注的问题所需的时间。通过最小化故障检测平均时间,您可以迅速了解潜在问题并采取必要措施及时解决。
故障确认平均时间:衡量警报触发行动(例如发出服务工单)所需的平均时间。较低的故障确认平均时间表示IT运营团队快速响应,确保问题得到立即确认。
响应平均时间:表示在确认服务工单后开始处理所需的平均时间。较短的响应平均时间意味着更快的响应时间和更积极主动的问题解决方法。
修复平均时间:该指标衡量从问题检测到解决基础问题的时间。较低的修复平均时间表示高效的故障排除和修复,减少停机时间。
解决平均时间:反映了完全解决问题并进行彻底测试以确保关联系统正常运行所需的时间。较低的解决平均时间确保问题得到有效解决,减少事故再次发生的可能性。
恢复平均时间:衡量将关联系统恢复到正常运行所需的时间。最小化恢复平均时间有助于快速恢复中断,并恢复正常的服务水平。
通过积极监控和优化这些指标,您可以提高服务和应用程序的健康状况、可用性和可靠性。因此,您可以更有效地实现您的任务目标,并确保用户体验积极顺畅。
衡量质量文化的指标
有几个关键指标可用,包括成熟度水平、上手时间、生产环境再故障以及DevOps和持续改进实践的采用情况。这些指标为组织的成熟水平和保持质量标准的能力提供了宝贵的洞察。
成熟度水平:该指标通过成熟度级别计划来衡量团队在采用和实施质量流程方面的进展。这些级别从初始到优化不等,表明团队遵守既定的旨在促进持续改进的质量关键绩效指标。通过根据成熟度水平对团队进行分布和概述,该指标提供了对团队进展的洞察。成熟度水平可以在项目开始时确定,或者在项目在测试方面发展或业务影响影响交付目标和质量时进行调整。
上手时间:该指标衡量团队成员熟悉与产品质量相关的概念和流程所需的时间,包括培训材料、文档和会议。较短的入职时间表示建立质量文化所需的指导、支持和培训具有坚实的基础,这对于建立质量文化至关重要。
生产环境中的再故障:该指标衡量分析生产环境中事故根本原因的有效性。它确保在功能、基础设施或质量测试层面采取纠正措施,以防止再次发生。该过程涉及解决测试覆盖不足或特定测试类型的问题,对于保持产品质量至关重要。
DevOps和持续改进实践的采用情况:该指标衡量组织采用DevOps实践的程度以及持续改进的水平。它提供了自动化与手动过程的比例、持续集成的水平、发布到生产环境的频率(考虑到团队的独立发布或联合发布)以及监控和可观察性的水平。持续改进对于保持高水平的产品质量和提高开发流程的效率至关重要。
SLA、SLI和SLO
为确保满足既定的质量标准和服务水平,建立和使用SLA、SLI和SLO等工具是常见的做法,旨在设定明确的目标并专注于持续改进。
服务水平协议(SLA):它是一份合同,规定将提供的服务和必须满足的质量标准,为服务提供商和客户之间建立清晰的期望。
服务水平指标(SLI):它是用于衡量服务与SLA中定义标准的符合性的指标,从质量和服务水平的角度衡量服务的性能。通常使用实时监控和跟踪工具。
服务水平目标(SLO):它们用于确保满足SLA中定义的质量标准。SLO是使用SLI作为参考来确定的。
结论
总之,使用质量指标使企业能够提高软件产品的质量,增加用户满意度并降低开发成本。通过在整个软件开发生命周期中仔细监控这些指标,团队可以找出改进的方向,衡量向质量目标的进展,并根据数据做出决策。对于软件开发团队来说,识别与其特定项目、产品或质量目标相关的质量指标,并将其无缝集成到质量管理流程中,是至关重要的。