测试投资回报率

常常,我们会听到老板或者老总等领导说,你们测试团队的贡献率或是价值在哪?软件

系统的稳定性如何?下面我将根据这两个问题,作出一些解答。

1.测试投资回报率

企业为了获得利润,需花费大量的资金进行测试。在质量方面的投资会产生利润,例如

提高产品质量会提高公司的声誉,使产品交付之后的维护成本减少,避免用户的抱怨。测试是一种带有风险性的管理活动,减少企业在未来因为产品质量低劣而花费不必要的成本。

缺陷探测率:

DDP=Bugtester/(Bugtester+Bugcustomer)


1客户发现bug数统计

月份

客户发现的bug

6

7

7

0

8

2

9

3

10

0

11

3

12

1

合计

16

数据是从20136月份开始统计

2测试人员发现bug数统计

由谁创建

总计

未解决

设计如此

重复Bug

外部原因

已解决

无法重现

延期处理

不予解决

转为需求

有效率

MM

700

7

38

14

35

419

31

2

27

127

78.29%

GG

1325

11

47

26

55

788

33

16

39

310

84.08%

合计

2025

18

85

40

90

1207

64

18

66

437

82.07%

数据统计时间:201311日到20131231日,其中有效率的计算公式=(已解决+延期处理+转为需求)/总计*100%


属于质量预防方面的一致性成本只考虑软件测试的投资,把发布之前和之后发现及修改

的错误堪称非一致性成本,根据表1和表2,发现的错误为2041个,故障成本已知,测试过程的估算如下:

各阶段花费在发现及修改错误的成本假设如下:

在开发过程单元测试阶段,软件开发人员发现及修改一个错误需要50元;

建立独立的测试进行集成和系统测试,测试人员发现错误,开发人员修改后,测试人员再确认,一个错误需要300元;

在产品发布后,由客户发现,报告技术支持人员、相关开发人员修改,测试组再进行回归测试,一个错误需要2000元。

1种情况,开发单位未建立独立测试队伍,有开发人员进行测试,发现680个错误,而产品发布后客户发现错误1361,只存在故障成本构成的总成本为50*680+2000*1361=2756000元,缺陷探测率为33.32%

2种情况,开发单位建立了独立测试队伍,进行手工测试。投资预算人员费用为100000元,测试环境使用费为8000元,测试投资(一致性成本)为108000元,除了开发过程中开发人员发现并修改680个(假设开发人员只能发现1/3的问题)错误外,测试过程中测试人员发现错误1345个,而产品发布后客户发现16个错误。总质量成本下降到50*680+300*1345+16*2000+108000=577500元(如表3所示),手工测试总质量成本节约了2756000-577500=2178500元,即为利润。投资回报率(ROI)2017.13%,缺陷探测率为99.22%

ROI = (原无独立测试质量成本i-独立测试质量成本j)/测试投资*100%

     = 2756000-577500/108000*100%

         = 2017.13%

DDP=Bugtester/(Bugtester+Bugcustomer)*100%=(680+1345)/2041*100%=99.22%

表3 测试投资回报分析


质量成本项

测试成本项

开发测试

手工测试

一致成本

测试投资

测试人工费


100000

环境使用费


8000

测试工具费



测试总投资


108000

非一致性成本

开发测试

发现错误数

680

680

每个错误成本

50

50

内部(开发)故障成本

34000

34000

独立测试

发现错误数


1345

每个错误成本


300

内部(测试)故障成本


403500

客户支持

发现错误数

1361

16

每个错误成本

2000

2000

外部故障成本

2722000

32000

质量成本

一致性成本


108000

非一致性成本

2756000

469500

总质量成本

2756000

577500

ROI

投资回报率

N/A

2017.13%

DDP

缺陷探测率

34.30%

99.22%


2.系统可靠性分析

平均每千行代码bug数

后台代码总共342480行(由于前台代码较难统计,据开发人员估计是后台代码的3倍),系统总代码数是1369920,属于一个大规模系统,平均每千行代码约为2个bug。

平均无故障时间MTTF

若设T是软件总的运行时间,M是软件在这段时间内的故障次数。

内部平均无故障时间MTTF=T/M=365*24/2041=4.29小时;

外部平均无故障时间MTTF= T/M =(365-151)*24/16=321小时=13.375天。根据考察资料得知,航天科技一些精密系统平均无故障时间720小时对应90分的可信度,参考这个,相当于我们系统的可信度大约为40分。

下面用Shooman模型对平均无故障时间MTTF进行分析:

对一个长度为342480行代码的系统进行测试,根据记录下来的数据如下:

①测试开始,发现错误个数为0(假设为0,2012年测试出bug不计入统计);

②经过了151天的测试,累计改正1137个错误,此时,MTTF=3.19小时;

③又经过214天的测试,累计改正2041个错误,此时,MTTF=4.29小时;

由Shooman公式:   MTTF=1/K(ET/LT-ET(t)/LT

其中,K是一个经验常数,美国一些统计数字表明,K的典型值是200;ET 是测试之前程序中原有的故障总数;LT 是程序长度(机器指令条数或简单汇编语句条数);t是测试(包括排错)的时间;EC(t) 是在0~t期间内检出并排除的故障总数。

公式的基本假定是:

    单位(程序)长度中的故障数ET∕LT近似为常数,它不因测试与排错而改变。 统计数字表明,通常ET∕LT 值的变化范围在0.5×10-2~2×10-2之间;故障检出率正比于程序中残留故障数,而MTTF与程序中残留故障数成正比;故障不可能完全检出,但一经检出立即得到改正。

   由已知条件②、③可解出K=31.22 ,ET  = 4598 。系统中仍可能残留4598-2041=2557个问题。

   评估系统稳定性还有哪些方法、模型、参数呢?希望经验人士多给意见。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章