基于测试用例的软件可靠性分析

发表于:2015-01-06来源:uml.org.cn作者:李宝林 李志蜀 陈点击数: 标签:测试用例
软件可靠性问题是软件测试中的重要难题之一,由于程序语言的复杂性以及被测程序的多样性,一直没有一个好的可靠性模型来评价它。鉴于此,提出了一个有关黑盒测试的可靠性分析

  摘要:软件可靠性问题是软件测试中的重要难题之一,由于程序语言的复杂性以及被测程序的多样性,一直没有一个好的可靠性模型来评价它。鉴于此,提出了一个有关黑盒测试的可靠性分析模型,模型在结合等价类和边界值划分的基础上充分考虑软件复杂性、缺陷后果严重性和信息不足等因素等原因,根据矩阵和数理统计的知识得出相关的可靠性模型,并使用EM算法对该模型的置信下限做出了相应的理论证明。实验表明,该模型在实用性和可靠性方面都取得了较大的进展。

  关键词:测试准则;EM算法;测试用例复杂性;软件可靠性模型

  中图分类号: TP311

  文献标识码:A

  0引言?

  随着软件应用的日益广泛及重要性的不断增强,人们对软件质量的要求也越来越高。可靠性作为衡量软件质量的重要特性,其定量评估和预测已成为人们关注和研究的焦点。软件可靠性模型作为可靠性评测的核心和关键,可用于软件生命周期的不同阶段,定量地估计和预测软件可靠性行为。一个好的可靠性模型可以准确评估和预测软件可靠性行为,这对于软件资源分配、软件市场决策有着重要的意义。??

  软件可靠性模型这一领域的研究在 20 世纪 70 年代获得较大发展后,很多可靠性模型已经投入使用。可以说,软件可靠性模型已从研究阶段发展到了工程阶段。但是,面对软件自身及其开发过程日益复杂的情形,它仍然呈现出其自身的不足。 首先,在软件可靠性建模方面,传统的软件可靠性模型主要是从时间域和输入域两个方面来考虑软件缺陷发生的概率或缺陷总数,很少从缺陷自身的因素论述;其次,在软件可靠性建模过程中,基本上是根据测试结果直接来推导模型,很少关注软件测试的设计过程;最后,在适应性方面也存在着一定的缺陷。 ?

  鉴于此,要想建立比较适用的软件可靠性模型,必须改变传统可靠性建模思路,采用新的观点、方法和新的数学工具来研究软件故障过程。论文将测试用例的设计融入到软件可靠性建模过程中去,在充分考虑软件缺陷影响因子和复杂性等因素基础上,采取合适的数学处理方法构建出一个基于测试用例的软件可靠性模型,并结合EM算法对该模型的可靠性作了验证。该模型不但考虑了失效出现的概率,还考虑了失效后可能产生后果的严重性。?

  论文主要工作如下:(1)根据等价类、边界值等方法来设计测试用例模型;(2)在一定假设的基础上,通过观测数据推导出测试用例的可靠性并得出相应的软件可靠性;(3)利用EM算法对软件可靠性进行相应的检验。?

  1测试用例模型的构建?

  测试用例的设计是软件测试过程中最为关键的一个环节,一个软件测试成功与否与其测试用例设计成功与否有很大的关系。所谓测试用例,也就是为特定目标开发的测试输入、执行条件和预期结果的集合。也可以说是对软件运行过程中所有可能存在的目标、运动、行动、环境和结果的描述,这些特定目标可以是验证一个特定的程序路径或核实是否符合特定需求。而测试活动要建立必要的前提条件,提供测试用例输入、观察输出,然后将这些输入和输出进行比较,以确定测试是否通过测试某个程序路径或何时满足软件规定的要求。简言之,测试用例就是设定输入数据,运行被测试函数,然后判断实际输出是否符合预期结果。?

  通常造成软件缺陷的主要原因有:(1)软件设计文档规范不一;(2)测试用例设计过程中引入了人为的错误;(3)测试执行后,复杂的决策条件、循环和分支的覆盖率目标并没有达到等。而一个完整的测试应该包含正面测试(Positive Testing,PT)和负面测试(Negative Testing,NT)。正面测试是验证程序应该执行的工作,而负面测试是验证程序不应该执行的工作。只有面面俱到,才能保证测试的充分性。要想保证测试用例设计质量,必须遵循四个原则:(1)测试准则,每个测试用例应当有一组有限可枚举的待测目标的判定准则;(2)测试用例输入域的划分和输入点集的提取;(3)测试目标的复杂性问题,应尽量化复杂为简单;(4)对测试用例进行测试的力度,就是在特定输入条件下进行测试的细分程度和测试的次数。在黑盒测试中,不可能采取穷举式测试。只能选取输入域中有代表性样本点来运行程序,然后通过程序运行的结果(成功率或失效率)来推断出软件可靠性。综上可知,一个好的测试用例既要有完善的输入域也要有代表性的输入点集。?

原文转自:http://www.uml.org.cn/Test/200903242.asp