软件质量度量维度

简介: 软件质量度量维度

大家好,我是阿萨。 前几期学习了Dod 和技术债务相关内容。今天学习一个质量相关内容,如何度量软件质量好坏。每个人都希望拥有更好质量的东西。没有人喜欢质量差的东西。那如何知道哪个软件质量好,哪个软件质量差呢? 我们先看看软件对我们的影响。一般软件公司里,生产的软件的质量可以决定一些很重要的事情:

  • 公司的收入,质量好,公司收入增加,反之,亦然。
  • 项目或产品的优先级,质量好的软件,相对优先级都会更高一些。
  • 研发团队的升迁,质量好,更容易升迁。
  • 研发团队薪资, 质量好的,工资更高一些。


每个人都知道质量很重要,但是什么是软件质量呢?在本文中,我们将描述软件质量的几个度量维度。我们讨论的前四个方面——可靠性、效率、安全性和可维护性——来自著名的CISQ软件质量模型。我们还将介绍在更现代、敏捷的软件开发环境中涉及的更多质量度量维度。


一、可靠性


可靠性指的是软件产品固有的风险水平,以及它失败的可能性。它还处理了ISO所定义的“稳定性”:当进行更改时,软件中存在回归的可能性有多大。

近年来出现的一个相关术语是“弹性”。这从一个不同的方向看问题,问软件处理不可避免发生的故障的能力是什么。例如,基于容器化微服务的现代应用程序在出现故障时可以轻松自动地重新部署,从而使它们具有很强的弹性。

为什么要测量可靠性?减少和防止可能影响用户和降低用户满意度的严重故障或中断以及错误。如果软件不经常发生故障,那么它就更好,并且在发生故障时很容易从故障中恢复。

如何衡量可靠性?


生产事故——衡量系统可靠性的一个很好的方法是在生产中识别出的高优先级错误的数量。

可靠性测试——常见的可靠性测试类型有负载测试和回归测试,前者检查软件在高负载下的功能,后者检查软件发生更改时引入了多少新缺陷。随着时间的推移,这些测试的汇总结果可以用来衡量软件的弹性。

可靠性评估——由专家进行的深入测试,他们构建一个操作环境,模拟软件将在其中运行的真实环境。在这个模拟环境中,他们测试软件如何在稳定状态下工作,并具有一定的预期增长(例如更多的用户或更高的吞吐量)。

平均故障率——测量每个部署单元或软件用户在每个时间段内的平均故障数。


平均故障间隔时间(MTBF)——用于测量正常运行时间,或软件在下一次重大故障发生之前正常工作的时间。


性能


在CISQ软件质量模型中,也被称为“效率”。通常,影响应用程序性能的最重要的因素是它的源代码是如何编写的,它的软件架构以及该架构中的组件:数据库、web服务器等。可伸缩性也是性能的关键:能够向上和向下扩展的系统可以适应不同级别的所需性能。


性能在算法或事务处理等领域尤其重要,在这些领域中需要非常快速地处理大量数据,即使很小的延迟也可能导致严重的问题。但是今天,性能变得普遍重要,因为web和移动应用程序的用户要求高性能,如果系统不能快速响应,他们很快就会感到沮丧。


为什么要衡量绩效?了解用户体验到的性能水平,以及它如何影响他们对软件的使用。如果软件达到或超过用户期望的性能水平,那么它就是更好的软件。


如何衡量软件性能?


负载测试——用于理解系统在特定负载下的行为,例如,有1,000个并发用户。

压力测试——了解系统容量的上限。

耐力测试-检查系统是否可以在较长时间内处理一定的负载,以及性能何时开始下降。

应用程序性能监视(APM)——这是一种新的软件类别,可以从用户的角度提供详细的性能度量。


安全


在软件质量的上下文中,安全性反映了攻击者由于糟糕的编码实践和架构而破坏软件、中断其活动或获取敏感信息的可能性有多大。安全中的一个核心概念是“漏洞”——可能导致安全问题或漏洞的已知问题。在系统中发现的漏洞的数量和严重程度是其安全级别的重要指标。

为什么要衡量安全性?用户越来越依赖软件来执行与个人生活和业务相关的敏感操作。如果软件不容易受到安全漏洞的影响,那么它就更好。

如何衡量软件安全性?


漏洞数量——可以扫描软件应用程序来识别已知的漏洞。发现的漏洞数量是安全性的一个很好的(消极的)衡量标准。


从时间到解决——从软件中引入漏洞到发布修复或补丁需要多长时间?安全更新的部署——对于部署在用户设备上的软件,有多少用户实际安装了补丁或安全更新?实际安全事件,严重程度和总攻击时间——系统实际被破坏了多少次,破坏对用户的影响有多严重,持续了多长时间?


可维护性和代码质量


软件可维护性是指软件适应其他用途的难易程度,它在不同环境之间的可移植性,以及它是否可以从一个开发团队或从一个产品转移到另一个产品。可维护性与代码质量密切相关。如果代码是高质量的,软件可能更容易维护。

代码质量很难定义,但大多数专家认为高质量的代码使用编码约定,可读性强,文档记录良好,可重用并避免重复,勤奋地处理错误,有效地使用资源,包括单元测试,并符合安全最佳实践。

为什么要度量可维护性和代码质量?这是软件质量的一个方面,对开发软件的组织更重要,但它也间接影响用户。如果软件是可维护的,那么它就更好,因为它将花费更少的时间和成本来适应用户不断变化的需求。具有高质量代码的可维护软件也更有可能提高可靠性、性能和安全性。

如何衡量可维护性和代码质量?


代码行数——对系统的可维护性有影响的一个非常简单的度量。拥有更多代码行的软件往往更难维护,也更容易出现代码质量问题。


静态代码分析——自动检查代码,以识别问题并确保代码符合行业标准。静态分析直接在代码上完成,而不实际执行软件。


软件复杂度度量——有几种方法可以度量软件的复杂程度,比如圈复杂度和n节点复杂度。更复杂的代码可能更难以维护。


发布频率


在敏捷开发环境中,软件的新迭代可以快速交付给用户。今天,许多组织每周、每天、甚至一天几次发布他们的软件的新版本。这被称为持续交付,或其极端形式的持续部署,其中对软件的每个更改都立即交付到生产环境。

软件交付的速度与质量有关,因为软件系统的新版本通常包含可能影响用户的改进。从理论上讲,向用户发布版本的频率越高,用户就能更快地得到更好的软件。
如何衡量软件交付率?


软件发布的数量——这是衡量新软件交付给用户的频率的基本指标。在特定时间段内“完成”的敏捷故事——计算实际交付给用户的“故事”或用户需求的数量,提供了更细粒度的交付速度度量。
使用软件的用户数量——例如,衡量下载或安装新补丁或软件更新的用户数量。


、总结


在成熟的组织中,软件质量的各个方面都有自动和手动测试。定期测试软件的可靠性、性能、安全性和代码质量。这些测试的结果通常是软件质量的一个很好的度量:如果通过所有这些类别的测试的比例更大,那么软件的质量可能更高。



相关文章
|
6天前
|
数据采集 运维 监控
|
6天前
|
敏捷开发 监控 安全
你的项目质量度量指标有哪些?
你的项目质量度量指标有哪些?
138 0
|
8月前
|
测试技术
McCabe度量法
McCabe度量法
145 0
|
测试技术 Docker 容器
自动化质量评估维度
上篇文章讲了下关于终端自动化的一个探索《终端自动化测试探索之路》,今天来聊聊关于自动化质量评估的维度,包括UI和接口。
653 0
|
6天前
|
敏捷开发 自然语言处理 数据可视化
敏捷测试度量指标
敏捷测试度量指标
|
6天前
|
敏捷开发 测试技术 持续交付
质量内建的5个度量维度
质量内建的5个度量维度
聊聊自动化测试的度量指标
在聊自动化测试度量指标前,有必要回到做自动化的初衷上,就是为什么要做自动化测试,要解决什么问题。
|
8月前
|
机器学习/深度学习 算法
评估系统或算法质量的重要指标
准确性(Accuracy):衡量系统或算法输出结果与真实结果之间的接近程度。通常使用分类准确率、回归误差等指标来评估。 精确率(Precision)和召回率(Recall):主要用于评估分类模型的性能。精确率衡量预测为正例的样本中实际为正例的比例,召回率衡量实际为正例的样本中被正确预测为正例的比例。
171 4
|
12月前
|
Web App开发 运维 监控
量化日常工作指标
量化日常工作指标
|
存储
质量的度量与运营思考
管理学大师德鲁克曾说过“如果你无法衡量它,就无法管理它(If you can’t measure it, you can’t manage it)”。可见,要想有效管理某事务,就需要将它全面且有效地度量起来,而要想针对某个方面进行改进,就需要有针对性地运营。 质量度量体系 大家都知道作为测试的主要任务是质量保障,保障线上环境没有故障和缺陷,最终交付给真实用户的质量,即交付质量。那么,质量度量是不是只关注交付质量指标就足够了呢?答案显然是否定的。因为如果只关注交付质量,往往达不到提升交付质量的目的。比如,你每天关注线上交付质量,忙着一个又一个的项目,一段时间过
138 0