5 个常用的软件质量指标

上一篇 / 下一篇  2012-10-15 09:51:15 / 个人分类:杂谈

51Testing软件测试网/Q7^5}0L G~~

  在软件开发中,软件质量是衡量软件是否符合需求、标准的重要体现。除了代码质量外,影响软件整体质量的因素还有很多。因此,要确保软件的整体质量,就需要在各个环节严格控制。51Testing软件测试网(E\;D K.A5G*w2Y\I

51Testing软件测试网.` A*yC8^ zoo o l

  本文列出了衡量软件质量的5个最常用的指标。51Testing软件测试网7Js.`(U q]bg

3Rq@(h:dK1V C)M f^(o0  1、SLOC(Source Lines of Code,源代码行)51Testing软件测试网Z'k\Lj'Bn1t

y+m ux-V&GI*T(G(e0  计算代码行数可能是最简单的衡量指标,主要体现了软件的规模,并为项目增长和规划提供了相关数据。例如,如果每月统计一次代码的行数,就可以绘制一个项目发展概览图。当然,由于存在项目重构或是设计阶段等因素,这种方式并不太可靠,但是可以为项目的发展提供一个视角。

5Eq6|k\051Testing软件测试网u YY{3H2C)P5u3@

  可以只统计逻辑代码行(Source Logical Line of Code,SLLOC),这样可以获得稍准确的信息。逻辑代码行不包含空行、单个括号行和注释行。可以使用 Metrics 工具来统计。

'?-_+Nd%lC?h:b051Testing软件测试网.t b|&uJz a

  代码行数不应该用来评估开发者的效率,否则,可能会产生重复、不可维护的或不专业的代码。

&l$xZK r8o0

sI*t` l#K0  2、每个代码段/模块/时间段中的bug

Jo3Di,X1w~0Zen051Testing软件测试网Vp.H/CK^~Ia

  要想实现更好的测试以及更高的可维护性,bug 跟踪是必不可少的。每个代码段、模块或时间段(天、周、月等)内的 bug 可以很容易通过工具统计出来(如 Mantis)。这样,可以及早发现并及时修复。

|y/J L{051Testing软件测试网\ q4PW!dX A/A%U

  Bug 数可以作为评估开发者效率的指标之一,但必须注意,如果过分强调这种评估方法,软件开发者和测试者可能会成为敌人。在生产企业中,要保证员工彼此之间的凝聚力。51Testing软件测试网!s8R w3G A.bz pS wf

2n XR.B:Msze!q%S0  为了更好的实现评估,可以根据重要性和解决成本将 bug 划分为低、中、高三个级别。51Testing软件测试网(sJ {3{K

51Testing软件测试网~*Q b;Ll M6a)U?x9Gf

  3、代码覆盖率51Testing软件测试网N C H-li

51Testing软件测试网y8rU C5c'T*K-Q JQ

  在单元测试阶段,代码覆盖率常常被拿来作为衡量测试好坏的指标,也用来考核测试任务完成情况。可以使用的工具也有很多,如 Cobertura 等。51Testing软件测试网fMM,T,J J ^ I

~L4uLa Pm0  代码覆盖率并不能代表单元测试的整体质量,但可以提供一些测试覆盖率相关的信息,可以和其他一些测试指标一起来使用。

aJ;~/q O-j7Yn051Testing软件测试网 ejrr*`b

  此外,在查看代码覆盖率时,还需注意单元测试代码、集成测试场景和结果等。51Testing软件测试网 v#G@*lx

x3H(nf4s0  4、设计/开发约束

WW#~(w%KKFHH c0

$VU F}4P$Nf&\8a0  软件开发中有很多设计约束和原则,其中包括:

9?3G"`8r#d0j051Testing软件测试网jjc| K"v/]9Es

  ● 类/方法的长度51Testing软件测试网Oo3UK3i~Y'f

U)~/K/A&v)T0i0  ● 一个类中方法/属性的个数51Testing软件测试网6a$z'|`$Z E[ {

51Testing软件测试网qJyI$\U$\i

  ● 方法/构造函数参数的个数

HOA JK*P0

v:ae(wNN0  ● 代码文件中魔术数字、字符串的使用(魔术数字指直接写在代码中的具体数值,其他人难以理解数字的意义)

.V+~+R0Y*Zv7Dwo051Testing软件测试网}O$`(r2{JP9Y#`h

  ● 注释行比例等51Testing软件测试网F Z&F^6O|bIoH_

1fIa`g8C0  代码的可维护性和可读性是很重要的,开发团队可以选择以上这些原则中的一个或全部,并通过一些自动化工具(如 maven pmd 插件)来遵循这些原则,这将大大提高软件产品的质量。

*IS\4y'P;jx3Z0

4{]2|.EA8D4V$_/kk0  5、圈复杂度(Cyclomatic Complexity)51Testing软件测试网f!apA/C0V

51Testing软件测试网%z,f-K:?6L-o$w8r

  圈复杂度是用来衡量一个模块判定结构的复杂程度,已经成为评估软件质量的一个重要标准,能帮助开发者识别难于测试和维护的模块,在成本、进度和性能之间寻求平衡。圈复杂度可以使用 pmd 工具来自动化计算。

sV!p5rT7Z \9P0

|{-c%QH e3R5^0  圈复杂度数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护。51Testing软件测试网6Oy y9{7f-Wc

51Testing软件测试网G'[e;e4~P

  计算公式为:Cyclomatic Complexity = E - N + 2P

0h#^P:d;v@0

*[)J:O2t$E[&O0  E:边,代表节点间的程序流;

-?:gfa7Hu0

8Jpa hz [N J0  N:节点,程序中代码的最小单元51Testing软件测试网%l$na&Q_h'o

51Testing软件测试网rpHz db0e*~

  P:出口节点51Testing软件测试网9wC8H K+s l0eMh }

'e0vr9[9h FzX;P0

  上图中共 8 条边,7个节点,因此圈复杂度为 8 - 7 + 2*1=3。可以看出,从最左边的节点到最右边的节点有 3 条不同的路径。在项目开发中,可以根据项目类型,来定义上限数((6、8或 10 等)。51Testing软件测试网+I(e,d7boKYy

  以上是最常用的 5 种软件质量度量指标,当然,还可以结合其他的指标,对项目有一个更清晰的认识。51Testing软件测试网3E:_+Fgf9^


TAG:

yangli25的个人空间 引用 删除 yangli25   /   2012-10-15 14:34:38
 

评分:0

我来说两句

Open Toolbar