软件系统上线后,从客户感知的角度来判断,就是客户在使用中遇到的缺陷数量越多,客户体验越差,产品质量越差。上线之后发现的缺陷数量主要取决于四个因素:
- 产品的规模;
- 产品本身的质量好坏;
- 测试本身的有效性;
- 客户的使用频次;
假如客户充分使用了产品,我们可以用上线后一段时间内发现的缺陷密度来衡量产品的好坏:
缺陷密度=发现的缺陷个数/产品的规模
缺陷密度等于0是我们最理想的质量结果。
产品的规模必须是客观度量出来的,业内一般采用功能点的方法来采集此数据,如果没有采用功能点,而采用代码行的方法度量软件规模是不客观的,因为有的软件中有很多重复代码、无效代码,而且现在很多公司采用了低代码开发平台,程序中有大量自动生成的代码。
如果没有采用功能点的方法度量软件的规模,也可以用开发工作量代替软件的规模,此时需要统计开发方投入在软件开发上实际花费的工作量。如果是软件外包开发的,则外包方不会提供真实的开发成本给发包方,此时可以用合同价格作为分母,作为软件规模的代理。
综上所述,在使用缺陷密度度量软件交付产品质量时:
首选:上线后发现的缺陷个数/交付软件的功能点个数;
次选:上线后发现的缺陷个数/软件开发工作量;
三选:上线后发现的缺陷个数/软件合同额;
四选:上线后发现的缺陷个数/交付的代码行数。
我们考虑如下场景:
对于规模都是1000个功能点的两个软件A和B,如果A软件中隐藏的缺陷有100个,在交付之前发现了95个,在交付后1个月内,客户发现了3个缺陷,交付后2年内客户累积发现了5个缺陷;B软件中隐藏的缺陷有50个,在交付之前发现了45个,在交付后1个月内,客户发现了2个缺陷,交付后2年内客户也累积发现了5个缺陷,我们用不同的指标度量质量,则结论不同:
客户累积发现的缺陷密度:软件A与B都是每千功能点5个缺陷;
客户短期内发现的缺陷密度:软件A是3个缺陷,软件B是2个缺陷;
注入的缺陷密度:软件A是每千功能点100个缺陷,软件B是每千功能点50个缺陷;
缺陷逃逸率:软件A是5%,软件B是10%;
基于上述数据,我们可以发现:
从客户感受而言,软件B要好于软件A;
从开发质量而言,软件A比软件B要差;
从交付质量而言,软件A与软件B是相同的;
从测试质量而言,软件A要比软件B要好!