作为一个软件研发人员,经常会被领导问这样的问题:你的软件质量怎么样?让人头痛的是,这个问题非常不好回答,你的答案很难让领导满意。你要是回答“软件没问题”,可能会引来一连串的“为什么”,最终你只能在领导怀疑的目光下败退。
这个问题所以难回答,一个原因是组织没有形成软件质量评估的标准。
为了控制软件质量,我们通常会采用了评审、审查、走查、测试等一系列手段,但是如果用其中任何一个单一的指标来衡量软件的质量,都觉得不够准确。比如,测试用例通过率。使用这个指标来衡量软件质量,是假设设计的测试用例是充分的,能够覆盖软件使用过程中的各种情况,那么软件的测试用例通过率越高,就表明软件可在大多数情况下正常运行,我们就认为软件的质量越高。问题是,这个假设成立吗?又如,缺陷率。软件系统测试的缺陷率为2BUG/kLOC,这个数值在业内算是比较高的,但这就能说明软件的质量高吗?显然,也很难下这样的结论。因为它也存在2个问题:如果测试用例不充分,有遗漏的测试用例,就可能有遗漏的BUG,这个数据就不可信。另一个问题是,即便这个数据可信,你又怎么确定潜在的BUG恰好都已经发现了,并且清除了,没有遗留在软件中呢?
当然,如果不用这些数据定量说明,仅靠感观印象,来评估软件质量就更不可靠。你能说这个软件界面精美漂亮,所以它质量高?你能仅仅因为软件演示一次通过就说它质量高?
要对软件质量进行评估,就要建立一个评估标准。《软件过程管理》一书中建议使用质量分布图。所谓质量分布图或者说缺陷分布图,它是按阶段统计缺陷注入和清除效率的计算结果。如下表所示。
缺陷 | 概设 | 详设 | 编码 | 单元测试 | 集成测试 | 系统测试 | 使用率 |
---|---|---|---|---|---|---|---|
残余数 | 0 | 4 | 13 | 34 | 19 | 13 | 9 |
注入数 | 10 | 21 | 63 | 5 | 2 | 2 | 3 |
清除数 | 6 | 12 | 42 | 20 | 8 | 6 | 12 |
剩余数 | 4 | 13 | 34 | 19 | 13 | 9 | 0 |
清除效率 | 60% | 48% | 55% | 51% | 38% | 40% | 100% |
总效率 | 60% | 58% | 64% | 81% | 87% | 91% | 100% |
审查缺陷 | 6 | 18 | 60 | ||||
开发缺陷 | 6 | 18 | 60 | 80 | 88 | 94 | |
审查效率 | 63.8% |
表中有一个重要指标——审查效率,它是指在开发中通过审查找出的缺陷数占全部被发现的缺陷数的百分比。所以说审查效率可以作为软件质量评估的最佳指标,有以下几个原因:
审查效率作为指标的一个优点是:在开发结束时,可以获得所要求的数据,并且不需要在使用阶段建立缺陷 告系统。
审查效率是评估软件质量的一个相当灵敏的指标——当审查效率提高20%时,所交付产品的质量便提高了3倍。
越早发现缺陷越早清除缺陷,付出的代价越小。审查工作都是在早期开始的,审查发现的缺陷越多,审查效率越高,留给测试发现的缺陷越少,遗留的缺陷也会减少。
下面是一些关于审查效益的例子,从中也可以看出审查对于软件质量的重要性:
Yourdon 告说,他和3个经验丰富的程序员用了45分钟的时间审查了200行的程序,发现了25个错误,其中有5个错误是不可能通过测试发现的。
Freedman 告,在引入审查前,55%的单行维护变更都是错误的,引入审查后,这一错误降低到2%。
最后,建议使用审查效率作为评估软件质量的指标,并且将其作为质量目标纳入质量计划中。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!