论文部分内容阅读
随着计算机技术的日益成熟,硬件成本的迅速降低,各种结构复杂、功能强大的计算机系统被广泛应用到航空航天、交通运输、核电能源和医疗卫生等安全关键领域。一旦这些系统失效,将造成人类生命财产的重大损失或者环境的严重破坏,软件质量日益成为被关注的焦点。针对如何确保软件开发质量问题,虽然已经提出了许多技术和方法,但迄今为止,软件质量主要还是要靠软件测试来保证。软件测试在软件质量保障中扮演着重要的角色:一方面,软件测试可以定位并排除错误,切实地提高软件的可靠性水平;另一方面,通过软件测试,可以获得对软件当前可靠性水平的评估和验证。软件测试是软件开发过程中一个十分重要并且成本昂贵的过程。如何减少软件测试成本,提高测试效率及软件质量评估的准确性的研究具有十分重要的意义。
目前,软件测试过程的优化已经成为测试技术研究的一个主要方向,选择好的测试用例集不仅能减少软件测试的工作量,降低软件测试的成本,而且在不会降低软件测试质量的前提下,提高软件开发的速度,从而使系统及早投入使用,参与市场竞争。因此如何精选少量的测试用例,对系统进行有效的测试,是软件测试研究中的关键课题。本文从提高软件测试效率和软件质量评估准确性两个方面入手,以整个测试过程为对象研究了测试数据的最优选择策略,针对划分测试和统计测试进行了系统深入的研究,主要包括以下内容:
(1)研究了整个测试过程中测试数据的选择策略,在待测软件某些参数已知的条件下,以最小化平均测试费用为目标的软件测试优化问题。将软件测试过程处理成Markov决策过程,提出了软件测试的Markov决策模型,运用交叉熵方法,通过一种学习策略获得软件测试的最优测试剖面,用于优化软件测试,为软件测试提供有益的线索和参考。
(2)从决策论的角度系统研究了划分测试用例选择的风险决策与带约束的决策优化问题。在深入剖析T.Y.Chen等基于经典决策理论提出的划分测试用例选择方案基础上,充分利用测试者对待测软件导致错误输入分布信息了解的基础上,采用定性分析和定量分析相结合的方法基于风险决策提出一种测试用例选择模型,给出测试用例选择的二项式系数准则.针对测试资源受约束时划分测试用例合理分配的优化问题考虑了两类带约束的测试用例选择优化问题证明了带约束的测试用例最优分配问题是一个NPC问题,给出了动态规划求解方法,从理论上证明了该方法是最优的。针对动态规划求解方法只适合子域数较小的情形提出了一种启发式求解方法,并通过蒙特卡罗方法将该方法与其它常见的测试用例分配策略进行分析比较,用实验数据验证了该方法能合理利用有限测试资源,有效地提高缺陷检测能力。
(3)分析了已有的基于统计测试的Markov使用模型对软件可靠性评估方法的缺点和不足,提出了一种有效的估计方法。该方法利用重要抽样技术在保证估计的无偏性条件下,以估计方差最小为目的,分别从零方差抽样分布表达式与可靠性估计方差的表达式两个角度,通过启发式迭代过程调整各个状态之间的转移概率来修正测试剖面。从理论上证明了利用修正测试剖而测试估计的可靠性是方差为零的无偏估计。最后给出了软件可靠性估计的最优测试剖面生成的启发式迭代算法,并与其它可靠性估计方法进行比较。
(4)分析了统计测试方法在安全关键软件测试中的不足,基于费用的Markov链使用模型提出了一种具有导向性的快速有效的加速统计测试方法。主要考虑了两类测试剖面确定问题:测试资源受约束的加速统计测试测试剖面确定及均衡失效风险与测试费用的加速统计测试剖面的确定。提出了一种启发式求解方法,并通过蒙特卡罗方法用实验数据验证了该方法能充分利用有限测试资源,加速统计测试.