|
知识路径: > 测试技术的分类 > 可靠性测试 >
|
相关知识点:49个
|
|
|
|
|
软件可靠性评价是软件可靠性活动的重要组成部分,既适用于软件开发过程,也可针对最终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否可以终止测试并发布软件,同时还可以预计软件要达到相应的可靠性水平所需要的时间和工作量,评价提交软件时的软件可靠性水平。对于最终软件产品,软件可靠性评价结合可靠性验证测试,确认软件的执行与需求的一致性,确定最终软件产品所达到的可靠性水平。
|
|
|
这一节阐述的软件可靠性评价工作是指选用或建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间收集的软件失效数据进行处理,并评估和预测软件可靠性的过程。这个过程包含3个方面:
|
|
|
|
|
|
|
在前面我们讨论了软件的可靠性模型以及一个举例,一些可靠性研究者试图寻找一个最好的模型,能适用于所有的软件系统,但这样的工作是徒劳的。因为对于不同的软件系统,出于不同的可靠性分析目的,模型的适用性是不一样的。但究竟怎样来为可靠性评价选用不同的模型,却又是一个不小的难题。
|
|
|
针对可靠性模型的构成以及我们使用模型来进行可靠性评价的目的,可以从以下几个方面进行比较和选择。
|
|
|
|
模型假设是可靠性模型的基础,模型假设要符合软件系统的现有状况,或与假设冲突的因素在软件系统中应该是可忽略的。例如,有的模型假定检测或发现的软件缺陷是立即排除掉的,而且排除时间忽略不计,如果现有的软件系统对于严重程度类较低的软件缺陷不进行立即排错,那么这个模型显然是不适用的。
|
|
|
往往一个模型的假设有许多条,我们需要在选用模型的时候对每一条假设进行细致的分析,评估现有的软件系统中不符合假设的因素对可靠性评价的影响如何,以确定模型是否适合软件系统的可靠性评价工作。
|
|
|
|
预测的能力与质量是指模型根据现在和历史的可靠性数据,预测将来的可靠性和失效概率的能力,以及预测结果的准确程度。显然模型预测的能力与质量是比较难于评价的,但任何一个模型只有在实践中加以实验和不断改善,才能得到认可。所以,我们在满足其他条件的前提下,应尽量选用比较成熟、应用较广的模型作为分析模型。
|
|
|
|
我们使用模型进行可靠性评价的最终目的,是想得到软件系统当前的可靠性定量数据,和预测一定时间后的可靠性数据,我们可以根据可靠性测试目的来确定哪些模型的输出值满足可靠性评价需求。一般说来,最重要的几个需要精确估计的可靠性定量指标包括如下内容。
|
|
|
|
|
|
|
|
|
|
. 模型需要的数据在软件系统中应该易于收集,而且收集需要投入的成本不能超过可靠性计划的预算。
|
|
|
. 模型应该简单易懂,进行可靠性分析的软件测试人员不会花费太多的时间去研究专业的数学理论,他们只需要知道哪些假设适用,需要收集哪些数据,能够得到哪些分析结果就可以了。
|
|
|
. 模型应该便于使用,最好能用工具实现数据的输入。也就是说,测试人员除了输入可靠性数据外,不需要深入模型内部进行一些额外的工作。
|
|
|
尽管这样,由于可靠性研究理论在软件工程领域发展的限制,可供选择的可靠性模型极其有限,这已在相当大的程度上制约了可靠性测试的开展。
|
|
|
|
面向缺陷的可靠性测试产生的测试数据经过分析后,可以得到非常有价值的可靠性数据,是可靠性评价所用数据的一个重要来源,这部分数据取决于定义的运行剖面和选取的测试用例集。可靠性数据主要是指软件失效数据,是软件可靠性评价的基础,主要是在软件测试、实施阶段收集的,在软件工程的需求、设计和开发阶段的可靠性活动,也会产生影响较大的其他可靠性数据,因此,可靠性数据的收集工作是贯穿于整个软件生命周期的。
|
|
|
由于软件开发过程中的特殊复杂性及许多潜在因素的影响,可靠性数据收集工作会极为困难,目前,关于数据的收集工作,存在许多有待解决的问题。
|
|
|
. 可靠性数据的规范不统一。对软件进行度量的定义混乱不清。例如,时间、缺陷、失效、模型结构等的定义,就相当含糊,缺乏统一的标准。这样就使得在进行软件可靠性数据的收集时,目标不明确,甚至无从下手。
|
|
|
. 数据收集工作的连续性不能保证。可靠性数据的收集是连续的长期的过程,而且需要投入一定的资金、人力、时间,往往这些投入会在软件的开发计划中被忽略,以至于不能保证可靠性数据收集工作的正常进行。
|
|
|
. 缺乏有效的数据收集手段。进行数据收集同样需要方便实用的工具,然而除了在可靠性测试方面有了一些可用的数据收集工具外,其他方面的工具还十分缺乏。
|
|
|
. 数据的完整性不能保证。即使可靠性活动计划作得再周密,收集到的数据仍有可能是不完全的,而且遗漏的数据往往会影响到可靠性评价的结果。
|
|
|
. 数据质量和准确性不能保证。不完全的排错及诊断,使收集的数据中含有不少虚假的成分,它们不能正确反映软件的真实状况。使用不准确的可靠性数据进行的可靠性评价,误差有可能会比利用可靠性模型进行预测产生的误差大一个数量级,这说明数据质量的重要性。
|
|
|
为了给软件可靠性评价提供一套准确、有效的可靠性数据,有必要在软件工程中重视软件可靠性数据的收集工作,采取一些措施尽量解决上述问题。在现有条件下,可行的一些办法如下。
|
|
|
. 及早确定所采用的可靠性模型,以确定需要收集的可靠性数据,并明确定义可靠性数据规范中的一些术语和记录方法,如时间、失效、失效严重程度类的定义,制定标准的可靠性数据记录和统计表格等。
|
|
|
. 制定可实施性较强的可靠性数据收集计划,指定专人负责,抽取部分开发人员、质量保证人员、测试人员、用户业务人员参加,按照统一的规范收集记录可靠性数据。
|
|
|
. 重视软件测试特别是可靠性测试产生的测试数据的整理和分析,因为这部分数据是用模拟软件实际运行环境的方法,模拟用户实际操作的测试用例测试软件系统产生的数据,对软件可靠性评价和预测有较高的实用价值。
|
|
|
. 充分利用数据库来完成可靠性数据的存储和统计分析。一方面减少数据管理的混乱,一方面提高数据处理的效率。
|
|
|
|
软件可靠性的评估和预测的主要目的,是为了评估软件系统的可靠性状况和预测将来一段时间的可靠性水平。下面是一些常见的需要利用软件可靠性评价进行解答的问题。
|
|
|
. 判断是否达到了可靠性目标,是否达到了软件付诸使用的条件,是否达到了中止测试的条件。
|
|
|
. 如未能达到,要再投入多少时间、多少人力和多少资金,达到可靠性目标或投入使用。
|
|
|
. 在软件系统投入实际运行一年或若干时间后,经过维护、升级、修改,软件能否达到交付或部分交付用户使用的可靠性水平。
|
|
|
目前有不少支持软件可靠性估计的软件工具,我们只要将收集的失效数据分类并录入,选择合适的可靠性模型就可以获得软件可靠性的评价结果。
|
|
|
然而,对于那些可靠性要求很高的系统,必须进行很多测试才能预计出高置信度的可靠性结果,即便如此,仍然可能没有任何失效发生。没有失效就无法估计可靠性,不能认为程序的可靠性是1.0。除非我们已经进行了完全的测试,否则程序不失效我们就无法做出估计,而完全的测试几乎总是不可能的。如果在测试期间没有失效发生,我们可以简单地假设测试是基于二项式分布的,这样就可以对可靠性作保守估计,也可以凭经验,根据无故障运行的测试用例的数量,在一定的置信度水平上,估计可靠性的等级。
|
|
|
软件可靠性评价技术和方法主要依据选用的软件可靠性模型,其来源于统计理论。软件可靠性评估和预测以软件可靠性模型分析为主,但也要在模型之外运用一些统计技术和手段对可靠性数据进行分析,作为可靠性模型的补充、完善和修正。这些辅助方法如下。
|
|
|
|
运行图形处理软件失效数据,可以直观地帮助我们进行分析。图形指标如下。
|
|
|
|
|
|
|
对于失效数据图形进行一定的数字化分析,能发现和揭示出数据中的异常。对可靠性分析有用的如下。
|
|
|
|
|
|
这种分析方法常可以发现因排错引入新的缺陷、数据收集的质量问题及时间域的错误定义等问题。
|
|
|
|