软件质量经济学
上QQ阅读APP看书,第一时间看更新

2.8.5 案例B:质量良好

在这个案例中,假定软件工程师花费15个小时编写测试用例,10个小时运行它们,5个小时来修复1个bug(唯一的bug):合计30个小时。

由于没有其他任务并且软件工程师工作了一整周,项目花费了40个小时。本周总成本依然是2500美元,所以单位缺陷成本激增至2500美元。这是因为编写和运行测试用例的成本没有弹性,就像是固定成本。

如果不计入那闲散的10个小时,为实际测试和修改bug保留30个小时,那么单位缺陷成本将是2273.50美元,花在了1个bug上。

基于众多公司的众多项目,我们可以总结出一个普遍的规则,即当质量提升后,单位缺陷成本将会急剧增加。原因是编写和运行测试用例是固定成本。这是制造经济学中一个著名的定律:

“如果一个制造周期的固定成本比例很高,生产的部件个数减少,那么单位部件成本将会上涨。”

因为应用程序会经过一个完整的测试周期,包括单元测试、功能测试、回归测试、性能测试、系统测试和验收测试,所以编写和运行测试用例所需的时间几乎不变。然而,发现的缺陷个数却在不断地减少。

表2-25展示了测试周期里准备、执行和修复这3种成本要素的近似成本,这里对所有的活动都使用了相同的成本,即每小时75.75美元。

注意,当单位缺陷成本随着缺陷数量下降而稳固地增长时,单位功能点测试成本符合制造经济学的假设,并稳固地降低。同时也要注意,单位功能点测试成本可以相加以表示总测试成本。不能将多个测试阶段的单位缺陷成本数据相加,虽然可以计算其平均值。

表2-25中最有趣的是,单位缺陷成本随着缺陷数量的下降而稳固地增长,即使表2-25为每个测试阶段使用了5个小时的固定值来修复缺陷。也就是说,当只考虑修复时,表2-25中的每个缺陷都有一个固定成本为378.25美元。

实际上,所有这3列都使用的固定值,案例中唯一真正的变量是发现的缺陷个数。当然在现实生活中,准备、执行和修复都是可变的。但使其固定不变,更容易说明主要观点:单位缺陷成本随着缺陷个数的减少而增加

由于单位缺陷成本随着缺陷个数的减少而增加的主要原因是存在与测试用例准备和执行相关的固定成本,可能有人就会认为可以剔除这些成本,而只保留缺陷修复成本。这样做会改变表面结果并且把错误降至最低,可是又会引入3个新问题:

1)去除合计超过总COQ(质量成本)50%的质量成本要素,使得质量经济学研究丧失了精密度和准确度;

2)去除准备和执行成本会导致无法计算出COQ,因为COQ的计算需要所有的质量要素;

3)去除准备和执行成本会导致不能将测试和正式审查进行比较,因为审查会记录准备和执行,以及缺陷修复。

第3个案例研究处理零缺陷。虽然没有发现bug或缺陷,但并不意味着没有成本花费。