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

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

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

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

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

原文链接OSChina.NET 编译

责任编辑:林师授 来源: OSCINA
相关推荐

2023-08-25 15:44:16

自动化测试软件开发

2022-08-01 15:43:00

性能指标软件开发

2014-11-21 09:17:14

2020-03-03 11:14:46

技术电脑人生第一份工作

2015-10-10 09:37:12

软件定义技术软件定义

2019-12-09 12:20:12

机器人物联网安全

2022-02-17 10:37:16

自动化开发团队预测

2018-07-27 09:05:31

开源技术 软件

2018-07-24 09:21:39

Dropbox开源文件共享应用

2010-05-22 10:58:41

Care Plus企业服务Juniper

2021-04-26 15:07:05

数字化转型IT技术

2017-12-17 21:58:18

2023-09-07 15:16:06

软件开发测试

2020-02-27 10:11:11

自动化IT安全

2020-07-24 09:52:55

自动化ITCIO

2021-01-27 07:56:04

Python编程语言

2020-12-15 20:40:23

5G工业自动化网络

2023-05-08 15:36:50

模型AI

2020-07-05 23:10:20

网络自动化网络可预测性网络

2021-06-25 14:34:07

自动化数据中心人工智能
点赞
收藏

51CTO技术栈公众号