论文摘要
软件测试是保证和提高软件质量的重要工作,软件可靠性是评价软件质量的重要指标。本文首先综述了软件测试方法、软件测试工具及软件可靠性评估模型。为提高软件测试的效果,减少软件测试的盲目性,本文对导致程序出错的部分原因进行了分析,在此基础上建立了软件故障模型,针对建立的故障模型的特点,讨论了故障检测方法及故障检测规则,并在开放源码的编译器orc上实现了部分软件故障的检测;软件可靠性的预测和估计是软件工程所关注的内容之一,要对软件可靠性进行评价,需要根据软件测试的结果,根据测试过程中所得到的测试数据对其进行评价,本文对利用贝叶斯方法进行软件可靠性估计的方法进行了讨论。 本文的创新点和主要贡献在于以下几个方面: 一、软件故障模型的创建。在大量工程软件测试数据的基础上,提出了有工程背景的多种故障模型,包括动态内存故障模型,变量的定值与引用故障模型等。其中动态内存故障模型对可能导致系统老化、系统死机的各种情况进行了分析,为故障的检测、故障的排除提供了依据。同时,用模型指导软件测试工作,可以有效的降低软件测试的盲目性,提高软件测试的可信性。 二、提出了面向故障检测的静态数据流分析方法。静态数据流分析的优点在于通过对程序进行静态分析,可以对程序中的多路径上的数据流状态进行模拟,克服了一次动态运行只能覆盖一条程序路径的缺点,有效的提高数据流分析的效率。通过对以基本块为最小划分单元的程序控制结构中到达各基本块的各种变量的定值信息的计算,可以获得到达程序中每个节点的数据流状态。由于程序结构的复杂性使得到达程序中某一点的路径是不唯一的,这种不唯一性造成了到达某一基本块的定值信息只在程序的某些路径上存在,由此我们提出了将到达某一节点的定值信息划分为MUST和MAY两个类别,从而提高了数据流分析的准确性。 三、基于贝叶斯方法的软件可靠性评估方法。该方法以贝叶斯统计理论为依据,在对随机测试过程分析的基础上建立了基于输入域的测试过程的形式化描述,在此基础上确定了测试分布的总体信息;按照贝叶斯理论,要对软件可靠性进行估计,需要定义软件可靠性的先验分布,该先验分布可以利用贝叶斯假设或共轭原理进行定义。分析发现,在软件顺序测试过程中,采用这两种策略所得到的先验分布是一致的,这从另一种角度印证了先验分布选取的正确性。根据贝叶斯定理,利用先验分布和总体分布,可以得到待估计变量的后验分布,然后根据测试数据可以对可靠性进行估计。