2013年测试工作总结
常常,我们会听到老板或者老总等领导说,你们测试团队的贡献率或是价值在哪?软件系统的稳定性如何?下面我将根据这两个问题,作出一些解答。
1. 测试投资回报率
企业为了获得利润,需花费大量的资金进行测试。在质量方面的投资会产生利润,例如提高产品质量会提高公司的声誉,使产品交付之后的维护成本减少,避免用户的抱怨。测试是一种带有风险性的管理活动,减少企业在未来因为产品质量低劣而花费不必要的成本。
缺陷探测率:
DDP=Bugtester/(Bugtester+Bugcustomer)
表1 客户发现bug数统计
月份 | 客户发现的bug数 |
6 | 7 |
7 | 0 |
8 | 2 |
9 | 3 |
10 | 0 |
11 | 3 |
12 | 1 |
合计 | 16 |
数据是从2013年6月份开始统计
表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% |
数据统计时间:2013年1月1日到2013年12月31日,其中有效率的计算公式=(已解决+延期处理+转为需求)/总计*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个问题。
评估系统稳定性还有哪些方法、模型、参数呢?希望经验人士多给意见。
【参考文献】
《软件评测师教程》