软件不当测试的经济学影响

发表于:2007-06-01来源:作者:点击数: 标签:测试不当经济影响
软件和药品是少有的两种无法根除自身缺陷且允许公开合法出售的产品。人们明知软件肯定存在缺陷,药品肯定存在副作用,但权衡利弊之后仍然购买之,甚至法律对此也网开一面。如软件厂商对其产品通常会做如下公示:“对本软件的任何修改恕不一一通知”,当然负

软件和药品是少有的两种无法根除自身缺陷且允许公开合法出售的产品。人们明知软件肯定存在缺陷,药品肯定存在副作用,但权衡利弊之后仍然购买之,甚至法律对此也网开一面。如软件厂商对其产品通常会做如下公示:“对本软件的任何修改恕不一一通知”,当然负责任的软件厂商会定期/不定期的发放软件补丁。药品厂商也会在药品说明书中描述该药品可能引起的副作用。这种警示方法不仅为法律和普遍的道德观所接受,而且正是法律所要求的做法。而在其它行业,如果产品存在明显的不可确定的缺陷,市场、用户和法律都将作出适度的和更强烈的反映。所以有人说,如果微软公司生产汽车而不是软件,恐怕早已出局了。

软件的缺陷难以根除,但软件的质量是可以改进的。加强软件测试是控制和提高软件质量的一个行之有效办法。目前软件的质量问题几乎都可以归咎为测试阶段没有发现该问题。当然,事实上我们难以想象测试阶段可以发现所有的质量问题。这实际上是一个悖论,委屈了软件测试工程师和软件产商。众所周知,在别的行业,质量检验没有这样复杂,如灯泡质量的检验。如果检验员按照规定的抽样办法去检验灯泡,并判定该批次产品合格,那么消费者、市场就会认可这一检验结果。单个消费者碰巧遇到一个不合格产品,那只是小概率事件或仍处于公认的可接受的范围。没有人去责怪检验员或检验方法。如果商家判为合格的产品超过了公认的可接受范围,那么只有这两种可能:

(1)商家采用了非标准的测试程序,商家将负法律责任;

(2)测试程序本身需要改进,一般情况下,这时肯定不是一个商家的产品有问题而是很多商家的产品会有问题。针对软件产品,目前还没有一种公认的标准测试程序。针对同一类型的产品,不同的人可能会采用大相径庭的测试方法,即使采用同样的测试方法,不同的人还可能得出不同的测试结论,同一人前后两次测试结果也可能不一致。

软件市场呼唤一种公认的标准测试程序和方法用于测试软件质量。一旦有了这样的程序,人们的注意力将集中到如何改进这个程序而不会怪罪具体的测试工程师或软件厂商。如果没有这个程序,一旦软件出现故障,我们就理直气壮的认为测试不当,而软件厂商将首当其冲,测试程序的责任反而微乎其微了。

本文将讨论当前普遍采用的不恰当的测试方法所带来的危害,尤其是经济学意义上的危害。

一、不当测试的表现和后果

软件测试存在缺陷是指软件开发者和用户在测试时花费的成本比更有效的测试方法更高。由此看来,几乎所有的测试都存在缺陷。在本文中,软件测试存在缺陷又称之为不当测试。

1.1 不当测试的表现

测试的不当性体现在如下四个方面:

(1) 集成和互操作性测试

各种应用需集成在一块,以免产生信息孤岛。应用的集成是一个复杂和不确定的过程。集成工作有可能占到系统实现的1/3的成本(Booker,1999)。企业应用集成(EAI)的费用一般占到企业信息技术预算的30%,这个比例将上升到56%(Booker,1999)。据估计,1998年全球信息技术费用约为2700亿美圆,则EAI的费用按30%估算约为810亿美圆。

在集成测试阶段,软件开发者严重依赖互操作性测试。互操作性测试同样非常困难。举例来说,A应用和B应用可以互操作,B应用和C应用也能互操作,但并不能保证A应用和C应用也能互操作(NIST,1997),即互操作性不能相互传递,也不是完全等价的关系。

(2) 测试代码的自动生成

开发合适的测试代码比开发受测产品需要花费更多的时间和精力。该研究领域已成为IT前沿的焦点。我们相信,格式化语言将在测试代码的自动生成中发挥巨大的作用。

(3) 缺乏一种精确的办法以判定产品软件产品的质量等级:合格、不合格、优良、优秀。

软件行业里一个棘手的问题是决定测试何时可以结束、决定测试是否已经足够了。这需要对软件质量的确定性作出更精确的定义。由于对“足够”的定义存在分歧,这个问题越来越严重了。一些数学方法有望在这一领域得到更广泛的应用。

商业软件开发者一般使用下述方法来判定软件元素是否足够完善:

◆ 足够百分比的测试用例成功通过测试;
 ◆ 需执行代码覆盖测试;
 ◆ 软件缺陷被划分成不同类别,从而能分析每个类别里软件缺陷的数目和缺陷的发展趋势。
 ◆ 完成Beta测试后,允许产品上线运行。软件开发者可以分析上线运行的问题的严重性和发展趋势。
 ◆ 在给定的时间段,如果软件缺陷数目稳定并低于约定的“阀值”,则认为该软件已经足够完善了。

(4) 缺乏可行的性能和质量度量标准

开发性能测试程序同样耗资巨大。硬件厂商测试时通常会选择流行的软件环境或大型软件系统。对于软件厂商来说,反之亦然。这样,小而新或不够流行的软件被软件厂商或硬件厂商选择做性能测试的机会就较少。

1.2 不当测试的后果

大家知道,如果测试的方法、工具不科学、不合理,那么测试的结果就不可信,从而会引起严重的后果,如把合格的产品判为不合格,或者把不合格的产品判定为合格。软件测试也一样。不当测试的后果包括四个方面:

◆ 由于质量差导致软件某项或全部功能/性能失败;
 ◆ 增加了软件开发成本;
 ◆ 使软件产品推向市场的时间滞后;
 ◆ 增加了市场交易成本。

1.2.1 软件失败

美国商业部国家标准技术研究所(NIST)的研究表明,近几年来,美国航空业饱受软件缺陷的影响,损失达数十亿美圆(见表1)。最著名的事件是美国火星探测器失踪归因于度量衡的不统一。软件缺陷还使软件制造商蒙受信誉和经济损失。最近,归咎于软件测试不充分的法律诉讼也在增加。

1.2.2 增加软件开发成本

传统上,识别和纠正软件缺陷会花费开发过程一半以上的成本,测试会占到开发人力成本的30%到90%(Beizer, 1990)。越早发现软件缺陷,越能更多的降低成本。表2显示软件缺陷在不同阶段发现时修复该缺陷所需的成本。

1.2.3 市场推广滞后

软件产品投放市场滞后的直接影响是丧失了机会。众所周知,软件产品的利润率通常遵守暴利----高额利润----一般利润----微利----亏损这样的曲线变化。投放时间晚,不仅丧失了赚“大钱”的机会,而且对原有的类似的产品线也会构成威胁。这种损失难以估量。

1.2.4 交易成本增加

由于缺乏标准的测试程序,用户无从比较和评价软件产品质量的好坏,从而导致市场交易成本增加。在这种情况下,软件生产厂商经常警告最终用户应慎重使用各厂商发布的产品性能数据。

二、软件缺陷的经济学影响实证分析

2.1 案例1——汽车和航空业

本案例研究针对美国汽车和航空业的CAD/CAM/CAE(计算机辅助工程)和PDM(产品数据管理)软件。调查和研究工作是由美国商业部国家标准技术研究所(NIST)委托 RTI(Research Triangle Institute)完成的。调研过程中, RTI和10个软件开发商、179位最终用户进行了面谈。调查结果如表3所示。

2.2 案例2——金融服务业

本案例研究针对美国金融服务业的EDI(电子数据交换)和clearinghouse软件。调查和研究工作同样是由美国商业部国家标准技术研究所(NIST)委托 RTL完成的。调研过程中, RTL和4个软件开发商、98位最终用户进行了面谈。调查结果如表4所示。


2.3 软件测试缺陷对国民经济的影响

从上述2个案例可以计算出制造业和服务业每个雇员所承担的软件测试缺陷的成本责任,从而计算出软件测试缺陷对美国经济的成本影响(如表5所示)。

其中软件开发商约承受40%的成本,最终用户承受约60%的成本。总成本约占美国GDP的0.6%。而采用合适的测试方法,可以节约成本占GDP的0.2%。

 

三、软件缺陷的影响的经济学模型

  如前所述,测试的不当性是相对测试的可改进性而言的。所以,一般理解不当测试的成本等同于改进后测试的获利。

  不当测试的经济学影响可以表征为不当测试的获利和改进后测试的获利差,即:


  EW=Σ△DP+Σ△EP

  其中:

  EW表示不当测试的经济学影响;
  Σ△DP表示所有开发商在不同测试环境下的获利差;
  Σ△EP表示所有最终用户在不同测试环境下的获利差;

3.1 软件开发商获利分析

3.1.1 软件开发商成本获利计算方法

  软件开发商的获利是其收入和成本之差。
  收入值等于软件产品的数量和价格的乘积,即:
  TR=pq
  其中,TR表示收入,p表示软件产品价格,q表示软件产品数量。

  软件开发商的成本包括研发(R&D)成本和生产成本。研发成本是产品开发过程(包括测试活动)中一次性消耗的固定成本。生产成本是产品生产、分发和售后服务过程中发生的成本。

  假定在研发过程中需消耗n种资源(X11、…X1n),每种资源的单价分别为W11、….W1n,则研发成本为:

3.1.2 影响软件开发商获利的因素

  研发成本(尤其是测试过程)会严重影响软件质量,如下式所示:
  Q=f(ΣX1i)+e

  其中,Q表示软件质量。f’>0,f”<0

  软件质量对于软件的价格和销售量有非常大的影响,从而直接影响软件生产商的收入。

  研究表明,影响软件质量的边际成本呈指数增长,而产品发布后由于软件质量好减少售后服务的边际收入则增长平缓。换言之,要提高产品质量,将越来越需要付出更大的努力。而不管质量如何,售后服务的工作量未见显著变化。这是因为,售后服务的工作量的多少主要取决于用户的需求,用户能忍耐的程度。另一方面,软件售后服务不象硬件维护,需要到现场的次数少、不需要更换部件、软件故障具有很多共性。

  作为软件开发商,总是在上述因素(收入、边际成本、边际收入等)中寻找一个平衡点,以达到利润最大化的目的。

3.2 最终用户获利分析

  最终用户的收入同样等于其产品的单价乘以产品的数量,即TR=py。

  最终用户的成本包括四个部分:
  (1) 购前成本,即购买软件之前发生的成本,如产品选型分析、招标组织费用等;
  (2) 软件成本,即购买软件的费用;
  (3) 购后成本,即购买软件之后发生的成本,如软件维护;
  (4) 其他和该软件无关的一些费用。

  依前述模型,最终用户的获利可以表达为:

3.3 软件质量对市场价格的影响

  在市场经济下,软件开发商将软件产品价格确定在MR=MC这一点,即边际收入等于边际成本,如图1所示。软件质量提高时,有望增加销售量,这样用于售后服务的边际成本会降低,即MC曲线会下移。由MR=MC确定的的价格会上涨,净收入也会提高。

  当然,最终用户对软件质量存在一个可忍受和可接受的范围。如果软件质量始终处于最终用户不能接受的范围,则上述分析结果不能成立。

3.4 测试工具对成本的影响

  测试工具对成本的影响体现在如下几个方面:

  (1) 改进的测试工具会导致“质量鸿沟”变窄。所谓质量鸿沟是指最终用户能接受的软件质量水平的波动范围。

  (2) 改进的测试工具有助于提高软件质量,从而减少售后服务(发现并纠正软件故障)的成本,并不断推动软件质量的持续提高。

  (3) 测试工具对研发成本的影响取决于最终用户对软件质量的评估结果。总的来说,若不考虑市场的影响,改进的测试工具需要消耗的测试资源和其他成本会减少。

  (4) 改进的测试工具有可能最终促进产生公认的软件质量评估标准,最终用户据此评判软件产品的质量,而不是象现在这样,对于软件质量“王婆卖瓜,自卖自夸”。统一的标准将促进软件生产商增加投资,不断提高软件质量。

3.5 不当测试的时间成本

  如前所述,不当测试延迟了软件产品推向市场的时间,因而需支付时间代价。时间代价主要体现在:

  (1) 后入市场者需要支付更多的“学习”费用。尤其是先入市场者建立了事实标准、掌握了核心技术和知识产权后,后入市场者的“学费”非常高。

  (2) 随着软件产品被越来越多的用户接受,产品的价值得以提升,先入市场者具有很多天然的优势。

  (3) 一般说来,一旦最终用户熟悉老产品、掌握了老产品后,他不见得很容易的改变去使用新的产品,而更愿意流在“贼船”上。

  最近的研究发现,先入市场者能保持十年的优势。

四、结论

  软件缺陷对软件开发商、最终用户有很大影响,并可能给国民经济带来巨大损失。通过改进软件的测试方法,有望弱化软件缺陷的负面影响。

原文转自:http://www.ltesting.net