老李分享:5个衡量软件质量的标准

老李分享:5个衡量软件质量的标准

1. Sourc Lines of Code (SLOC) 
统计代码行数可能是最简单的方法。它能体现软件的规模,为项目的发展和计划提供一些数据支撑。例如,我们每个月统计一次代码的行数,我们就能大体知道项目的发展情况。当然,这不是一个值得信赖的标准,因为有重构以及设计的因素。

SLOC 最好是统计 Source Logical Line of Code (SLLOC) 以获得更准确的信息。Logical code lines 不包含空行,单个括号行以及注释行。你可以通过 Metrics这样的工具很容易的统计 SLLOC。

代码行数不应该被用来衡量开发效率。否则容易造成重复的,不易维护的和不专业的代码。

2. Bugs per code_section/module/time_period 
问题跟踪是保证测试和可维护性的关键步骤。假如所有的问题(bug)都是有跟踪的话,每个代码单元,每个模块或者某个特定时间(day, week, month...)的问题就很容易被统计(例如 Mantis 工具)。当我们有了这些数据以后,问题的根源就可以被尽早发现并处理。

问题数量可以作为衡量开发质量的一个标准,但必须用的很小心。假如过分强调 bug 数量,那么开发和测试的关键就会很紧张。在一个有效率的公司,所有的员工都应该融洽的相处。

为了更好的对代码质量进行评估。Bug 可以分为 low, medium, high 三种级别,因为它们的重要性和修复的成本是不一样的。

3. Code Coverage 
Code coverage 表明了代码被测试的程度。有很多工具可以自动统计这个数据,例如 Cobertura 。

Code coverage 不能说明单元测试的整体质量,但是能说明测试的覆盖面。它可以和其他一些指标一起用来衡量软件的质量。当然,我们也需要经常回顾单元测试代码和集成测试的用例。

4. Design/Development Contraints 
软件开发中有很多设计规则,例如: 
 - 类/方法的长度 
 - 方法/属性的数量 
 - 方法的参数数量 
 - 特殊数值以及字符串的使用量 
 - 注释的比例 
这些规则都是保证代码可读性和可维护性的重要指标。开发团队应该选择一些或者全部的规则来实施(例如 maven pmd plugin )。这将帮助提高软件产品的质量。

5. Cyclomatic Complexity(环路复杂度) 
把环路复杂度单独列出来讲是因为它和其他的设计准侧不太一样。环路复杂度是关于代码实现和执行。它也可以通过工具自动计算,例如 pmd 。

这个数值是独立的代码执行路径数量。例如:

Cyclomatic Complexity = E(edges) - N(nodes) + 2P (exit nodes) 
So, Cyc.Cmp. = 8 - 7 + 2*1 = 3

你也可以看到,从起点到终点,有三条不同的路径。这个值往往是针对方法来计算。根据不同的项目类型,我们可以设定这个值的上限,例如6,8,或者10。

一个指标不能说明整个项目的质量。使用更多的指标,会让你对项目的质量有更全面的了解。

时间: 2024-11-05 11:27:32

老李分享:5个衡量软件质量的标准的相关文章

老李分享:系统可用性评估

老李分享:系统可用性评估 移动互联网时代,似乎大家都在强调架构或服务的高可用,那什么是高可用性呢? 首先,我们来了解下什么是系统的可用性(System Usability),即系统服务不中断运行时间占实际运行时间的比例,所以高可用性就比较好理解了:系统服务不中断运行时间占实际运行时间的占比更大,换句话说符合我们的预期. 其次,系统的可用性由哪些因素决定或受哪些因素影响呢?其实我们可以想象下,有没有系统可以提供长久的不中断服务?有人会回答说:有!真的这么肯定? 其实,对于一个简单的系统,在单位时间

老李分享:Web Services 组件 1

老李分享:Web Services 组件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 在过去的几年里,三大主流技术已经成为构成当今 web service 技术的全球标准.接下来我们来讨论一下这些技术. XML-RPC XML-RPC 是在计算机之间交换信息的最简单的基于 XML 的协议. XML-RPC 是一个简单协议,它使用 XM

老李分享:大数据,数据库,数据仓库之间是什么关系

老李分享:大数据,数据库,数据仓库之间是什么关系 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 首先简单的看一下云计算与大数据的概念. 1)云计算:云计算本质上是一种计算资源集中分布和充分共享的效用计算模式,其中集中是为了计算资源的集约化管理,分布是便于扩展计算能力.集中分布式是针对云服务提供商的,充分共享是针对用户,在云计算中,虽然对

老李分享:《Linux Shell脚本攻略》 要点(四)

老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang./right.txt:1:1 yang man //忽略大小写匹配 [[email protec

老李分享:webservice是什么?

老李分享:webservice是什么? 前言 Web Services 是 Web 应用出于和其他 Web 应用以交互数据为目的的开放式标准(XML.SOAP.HTTP 等).Web Services 可以将你现有的应用程序转换为 Web 应用程序.通过本系列指南中,您将了解到 Web Services 是什么,为什么和如何使用它们.本系列指南将对那些志在学习 Web Services 基础知识并在实践中进行实施的朋友有所帮助.这是一套介绍 Web Services 概念的基本教程,并不要求读者

老李分享:https协议

老李分享:https协议 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏,你会看到如下信息 我们可以看到“https" 是绿色高亮显示,并且前面有一个锁标,表明网页请求是通过 https 协议. HTTPS 是 HTTP 协议的一个版本,在浏览器和服务器之间提供安全的数据传输. 浏览器和服务器是通过 http 协议进行通信,在使用 HTTP 协议时,客户端向服务端提交表单数

老李分享:android手机测试之适配(1)

老李分享:android手机测试之适配(1) Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺寸 使用wrap_contentma

老李分享:webservice是什么?1

老李分享:webservice是什么? 前言 Web Services 是 Web 应用出于和其他 Web 应用以交互数据为目的的开放式标准(XML.SOAP.HTTP 等).Web Services 可以将你现有的应用程序转换为 Web 应用程序.通过本系列指南中,您将了解到 Web Services 是什么,为什么和如何使用它们.本系列指南将对那些志在学习 Web Services 基础知识并在实践中进行实施的朋友有所帮助.这是一套介绍 Web Services 概念的基本教程,并不要求读者

老李分享:loadrunner 的86401错误

老李分享:loadrunner 的86401错误 系统和软件配置: os:windows 2003loadruner版本:LoadRunner11loadrunner:协议:SMTP协议并发数:200 问题描述: 失败27个失败信息:error -86401 Failed to connceted xxx.xxx.xxx.xxx:25 分析过程:固定失败27,排除服务器错误怀疑是客户端自己的问题(虽然正常的几台负载机和有问题的负载机,硬件配置,软件版本都一样,但有问题的一直有问题,正常的一直正常