单元测试用例自动生成分析与设计

单元测试用例自动生成分析与设计

论文摘要

软件测试是保障软件质量的重要手段。传统的手工测试存在效率低,耗费人力、时间资源大,无法有效量化管理等缺点,自动化测试在软件测试中所占比重日益增加。测试自动化就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。测试数据自动生成问题是软件测试自动化中的一个基本问题。能够高效自动生成满足测试需要的测试用例,是提高软件测试工作效率的重要手段。面向路径的测试数据自动生成问题可以描述为:给定一个程序P和一条路径W,设P的输入域为D,求输入x,使得P以x为输入运行时所经过的路径为W。求解该问题可以转化为一个约束系统构建和求解的问题。构建约束系统的主要困难在于分析、化简路径上的各种语句成分和数据类型,尽可能将条件谓词表示成为输入变量的函数。而求解约束系统的主要困难在于路径上的非线性约束。已经证明不存在通用有效的方法求解非线性约束系统。Neelam Gupta等人提出了迭代松弛法自动求解该问题,该方法通过分析路径上各语句之间的静态、动态数据依赖关系,构造程序切片和数据依赖集,用线性算术表示对谓词函数进行线性化,用数值计算的方法去求解该问题。由于该方法需要了解语句之间的静态数据依赖关系,因此该方法仅能用于白盒测试。本文从三个方面对迭代松弛法进行改进,省略了构造谓词切片和数据依赖集的过程,选取主要路径,使用函数的导数来代替均差。改进后的方法无需分析路径上各语句之间的静态、动态数据依赖关系,因此可以应用于黑盒测试。改进后的方法比原方法构造线性约束系统的能力更强,效率更高。本文提出了一个面向路径测试数据自动生成的框架,该框架以改进后的迭代松弛法为核心算法,对于路径上谓词函数均为线性函数的情况,该框架迭代一次即可找到路径的解,或者保证路径不可行。对于路径上谓词函数含有非线性函数的情况,该框架需要迭代多次,或者找到路径的解,或者增加该路径不可行的信心。本文开发了一个以面向路径测试数据自动生成框架为蓝图的原型工具(PTDAG)。该工具采用面向对象的思想进行开发,采用Java语言进行编程,定义了一种简单的语言J用于实验,利用JavaCC为J语言自动生成词法分析器和语法分析器,利用MATLAB为线性约束系统求解。初步实验结果表明本文所提出的面向路径测试数据自动生成框架是正确和有效的。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 背景
  • 1.1.1 软件测试发展的历程
  • 1.1.2 软件测试的现状
  • 1.2 软件测试的前沿理论
  • 1.2.1 测试驱动开发
  • 1.2.2 测试自动化
  • 1.2.3 面向对象软件测试
  • 1.2.4 基于模型的软件测试
  • 1.2.5 软件测试的发展趋势
  • 1.3 测试用例自动生成
  • 1.3.1 随机测试数据生成
  • 1.3.2 面向功能的测试数据生成
  • 1.3.3 面向路径的测试数据生成
  • 1.4 问题的提出
  • 1.5 存在的问题
  • 1.6 目标与主要工作
  • 第二章 迭代松弛法
  • 2.1 迭代松弛法简介
  • 2.1.1 定义
  • 2.1.2 松弛技术
  • 2.1.3 谓词切片
  • 2.1.4 输入依赖集
  • 2.1.5 导出谓词函数的线性算术表示
  • 2.1.6 谓词残量
  • 2.1.7 优化输入
  • 2.2 迭代松弛法的算法描述
  • 2.3 迭代松弛法的讨论
  • 2.3.1 关于数据类型的讨论
  • 2.3.2 关于语句的讨论
  • 2.3.3 关于函数的讨论
  • 第三章 迭代松弛法的改进
  • 3.1 迭代松弛法的改进
  • 3.1.1 改进1:省略构造谓词切片和数据依赖集
  • 3.1.2 改进2:选取主要路径
  • 3.1.3 改进3:用函数的导数去代替均差
  • 3.2 改进后迭代松弛法的算法描述
  • 3.3 实例
  • 3.3.1 实例1
  • 3.3.2 实例2
  • 第四章 面向路径测试数据自动生成框架设计
  • 4.1 面向路径测试数据自动生成框架设计
  • 4.2 面向路径测试数据自动生成框架的应用
  • 第五章 PTDAG系统原型开发
  • 5.1 UML及Java简介
  • 5.1.1 UML简介
  • 5.1.2 Java简介
  • 5.2 系统的分析与设计
  • 5.2.1 模型语言J简介
  • 5.2.2 用例图的设计
  • 5.2.3 顺序图的设计
  • 5.2.4 系统界面的设计
  • 5.3 系统的实现
  • 5.3.1 词法分析器、语法分析器的实现
  • 5.3.2 约束构造器的实现
  • 5.3.3 约束求解器的实现
  • 5.3.4 图形用户界面的实现
  • 第六章 实验
  • 6.1 线性路径
  • 6.1.1 线性可行路径
  • 6.1.2 线性不可行路径
  • 6.2 非线性路径
  • 6.2.1 不带数学函数的简单非线性路径
  • 6.2.2 带数学函数的非线性路径
  • 6.2.3 含反例路径的非线性路径
  • 6.2.4 非线性不可行路径
  • 6.3 小结
  • 第七章 结束语
  • 7.1 主要贡献
  • 7.2 下一步的工作
  • 参考文献
  • 附录1 主程序主要代码
  • 附录2 建立线性约束系统主要代码
  • 致谢
  • 攻读学位期间发表的学术论文目录
  • 相关论文文献

    标签:;  ;  ;  ;  ;  

    单元测试用例自动生成分析与设计
    下载Doc文档

    猜你喜欢