这里,我想通过介绍AST如何影响软件质量来解释我所说的软件质量的含义。
首先根据下面两条定义考虑质量问题,然后将它们应用到软件中。
ISO对质量的定义:“产品或服务的功能和特征的总和能满足所表明或暗示的需求的能力。”
质量的另一个定义是:系统按预期(满足所有需求)运行的性质,始终如一地保证要求的系统功能可用,在任何约束(包括压力、并发、安全攻击等情况)下都显示出高可用性,始终达到用户的期望和满足系统用户需求(用户可以是个人或别的系统)。
在这两种定义中,软件质量的本质是软件是不是达到了预期的功能和性能。
也有许多量化软件质量的度量指标,如下所示。
软件缺陷密度(每行源代码或功能点,或任何其他在程序中度量源代码的单位中的缺陷数目)
故障平均时间(MTTF)
重大故障平均时间(MTTCF)
还未发现和未清除的高优先级缺陷的数目
可靠性(在接下来n个时间间隔里不发生故障的可能性)
预测软件质量的一种办法是使用软件可靠性模型。软件可靠性模型通过持续的测试和与被测试软件基准相关的总体缺陷统计数据来预测结果。因此,人们可以利用软件可靠性模型来预测额外的测试对软件质量的影响。
典型的软件可靠性模型的结果可预测一段时间内未发现的软件缺陷数目。人们期望,随着程序测试的不断进行,更多的测试将导致更少的未被发现的缺陷。在图2-1中,根据缺陷发现的日期与SUT的规模和复杂性联合,曲线的斜率是针对每个项目独特的预测。
使用AST可以完成更多测试。特别是,AST具有下列优点:
每次运行一套完整的回归测试,而测试人员不用担心系统的哪个部分应该重新测试 (即使理想情况下,需要进行分析以确定变更影响哪些部分,参考第1章相关讨论)。
提高测试覆盖率。相同时间内,AST测试比手工测试能覆盖更多组合(更多的数据变量和测试场景)和更多路径以及分支。