论文部分内容阅读
从计算机的诞生开始,人们对程序正确性的追求就一直没有停止过。软件测试正好可以帮助人们确定和保证软件产品的质量,提高使用者对软件产品的信心。但是,软件测试同时也是一项非常困难和复杂的工作。无论从测试时间的花销和测试资源的耗费上都达到了整个软件项目的50%以上。因此,软件测试一直都是软件工程中相当活跃的研究领域,提高软件测试的性能和效率,对于软件工程具有非常重要的价值。从上世纪70年代以来,伴随着软件工程的发展,对系统化的软件测试技术和方法的研究也随之不断地发展。软件测试从最初的静态分析,动态调试等简单的个体查错行为逐渐发展成为形式化、系统化的工程行为。各种形式化的证明与验证技术用于确保程序的正确性,大量的统计方法也被应用于软件测试,以评测软件产品的质量和软件系统的可靠性。随着软件系统规模的日益扩大,以及应用领域的不断拓展,对软件系统的测试也变得更加困难和复杂,传统的人工测试的局限性也越来越明显。软件测试技术的研究需要有革新性的发展。自动化软件测试技术正是在这样的背景下受到了密切的关注,成为近年来软件测试的重要研究方向。自动化软件测试技术可以克服传统测试技术的许多问题。自动化测试所依据的是一套严密的测试法则和评估标准,具有完整的自动测试过程。因此,它可以避免测试人员惯性思维所导致的测试疏漏,也可减少由于手工测试中繁复的重复工作所导致的人为差错。同时,自动测试是严密控制的测试步骤,易于实现错误信息的追踪和场景的再现。另外,自动测试所带来的简便性,高效性无疑都能给测试分析人员提供极大的便利。因此,自动测试技术已成为提高测试效率,保证测试有效性的重要研究内容。软件工程中,针对软件的CMM模型,曾经有对应的TMM测试模型。随着自动测试技术的研究发展,已经为不同的TMM测试级别形成了相应的自动化软件测试等级。自动化的测试管理配置工具,以及各种自动测试方法被应用于软件开发生命周期中的各个阶段,极大地提高了测试的效率,减少了测试资源的开销,节省了测试人员的占用,大大地缩短了测试的周期。如今,自动化测试技术的理论研究和工程应用相结合,正显现出强劲的发展势头,具有重要的理论意义和非常有价值的现实意义。本文工作中主要的创新性研究成果和贡献如下:(1)提出了面向程序结构测试的一体化自动测试框架模型。在实际的软件工程应用中,由于软件测试具有很强的针对性,各种测试活动往往难以制定为统一的标准行为,为满足特定的测试目标,需要有效组织多种不同的测试活动。这使得设计和实现统一的高效的自动测试框架模型变得困难。自动测试框架模型可看作是组织和联系各个测试活动的容器,设计良好的自动测试框架模型,不仅能为各种测试活动提供很好地支持,具有较好的扩展性和兼容性;同时,应该能够适应不同测试目标的需求,尽量发挥不同测试活动的特点和性能。本文所提出的测试框架模型考虑到测试策略的动态性,根据测试策略对测试活动进行调配,有较强的适应性。同时,该模型可尽量提供对不同测试活动的支持,以及对不同自动测试活动的实现和扩展,尤其对自动化测试用例技术的支持,具有较好的可操作性。(2)对自动化测试用例的生成技术进行了深入的研究后,针对不同的测试策略,设计了不同的测试用例自动生成的实现方法。在基于程序功能的测试用例自动生成中,设计和实现了基于程序规则说明和决策表技术的测试用例自动生成方法,从功能覆盖角度指导测试用例的自动生成。该研究中,针对功能测试中缺乏确定和公认的测试充分性判定标准,导致难以保证自动测试的充分性和完备性的问题,使用测试条件决策表技术用于指导测试用例的自动生成。该方法确保了针对功能的测试用例生成的完备性,有效解决了前述的自动测试标准问题。(3)在基于程序结构的测试用例自动生成研究中,设计了使用遗传算法的测试用例自动生成方法。该方法是一种面向目标的自动测试技术,其目标是为了生成能够均匀覆盖程序各条动态执行路径的测试用例。程序的静态控制路径作为参照基础,并以路径信息将测试用例空间进行等价类划分,以等价类中的元素数量设计测试用例的适应度函数。通过动态调测试用例的整适度,可抑制冗余测试用例的生成,同时奖励可触发不易发生路径的测试用例生成。可有效避免由于测试用例空间分布不均匀性所导致的测试冗余或测试不充分情况,有效地提高了测试用例自动生成的效率。(4)研究启发式学习算法在自动测试技术中的应用,针对路径CSP的自动求解设计了改进的前向检测算法。算法结合了边界测试数据选取技术和宽度优先的二叉树搜索技术,可以完成对实数域空间的有限数据集选取,但同时保证去处的数据可能导致解遗漏的几率低于特定的水平。再通过对该有限集合采用宽度优先的二叉树搜索方法,提高了问题的求解速度。软件测试中,为了检测程序中可能存在的不可达指令代码,需要对程序的动态执行路径进行分析,将程序指令的可达性测试表示成关于该指令所在路径的限制满足问题,则自动测试过程就对应了为对路径CSP的自动求解。因此,这种方法可有效解决自动化指令可达性。(5)将有限状态自动机模型应用于建立自动化测试模型。本文应用该模型对TCP协议服务端进行检测,使用状态转移序列的安全路径和临界循环路径以及时钟检测技术,测试网络应用程序的安全性,是一种较为底层的验证模型。在实现测试自动化的过程中,该模型用于建立较高抽象层次的验证模型,以可执行规则说明提供的测试预测信息作为参照,实现自动测试过程中的错误检测和定位。研究表明,有限状态自动机模型这种形式化的方法,可为软件测试提供不同级别的验证支持。