毕业答辩 面向对象软件的单元测试用例生成方法 院系:软件学院 专业:软件工程 答辩人:屈媛媛 指导老师:洪 玫
1 研究背景及意义 2 论文主要工作 3 研究方法 目录 4 计量分析结果 Contents 5 文献综述结果 6 讨论 7 总结
软件测试是保证软件质量的有效手段,单元测试是测试过程的基础。 研究背景及意义 计量分析结果 论文主要工作 1.1研究背景 研究方法 软件测试是保证软件质量的有效手段,单元测试是测试过程的基础。 测试用例的生成方法给自动化单元测试提供了可能。 由于面向对象软件的封装、继承、多态性,其单元测试是针对类和类中方法的测试。 针对传统软件的单元测试用例生成方法可能不完全使用于面向对象软件。 双击添加标题文字
论文主要关注针对面向对象测试用例生成方法,通过整理分析历年来专家学者对该方面的研究,回答了以下两个问题: 研究背景及意义 计量分析结果 论文主要工作 1.2研究意义 研究方法 论文主要关注针对面向对象测试用例生成方法,通过整理分析历年来专家学者对该方面的研究,回答了以下两个问题: (1)面向对象软件的测试用例生成有哪些方法?对比分析了这些方法各自的优缺点。 (2)有哪些自动生成针对面向对象软件的单元测试的工具?
2论文主要工作 计量分析结果 研究背景及意义 论文主要工作 研究方法 按研究问题将 文献分类 初步阅读 文献计量统 计分析 筛选、整理文 确定研究课题 了解课题背景 知识基础 学习文献综述 方法 按研究问题将 文献分类 研究热点和趋 势归纳 学习文献计量方 法和相关工具 检索文献 筛选、整理文 献 文献计量统 计分析 初步阅读 分类归纳 抽象(测试用例 生成)方法 整理(测试用 例生成)工具 方法对比评价
研究背景及意义 计量分析结果 论文主要工作 3.1研究方法 研究方法 文献综述方法 文献计量方法
输入文字 3.2文献数据来源 IEEE Digital Library 国际会议 CNKI 国内外论文(报告)等 万方 学位论文库 数据库 研究背景及意义 计量分析结果 论文主要工作 3.2文献数据来源 研究方法 输入文字 IEEE Digital Library CNKI 万方 学位论文库 国际会议 国内外论文(报告)等 会议 数据库 Google Google Scholar, IE EXplore 期刊 EI SCI 搜索引擎
3.3文献检索及筛选原则 关键词、摘要 最终,确定111篇文献作为研究对象。 5页以上 国际会议、EI、SCI期刊、博士论文 研究背景及意义 计量分析结果 论文主要工作 3.3文献检索及筛选原则 研究方法 相关性 关键词、摘要 文献篇 幅 最终,确定111篇文献作为研究对象。 5页以上 国际会议、EI、SCI期刊、博士论文 检索年 限 2003年1月—2013年12月 文献级 别
文献主要集中在2011年-2012年,说明学术界在这两年间对该问题关注度较高。 研究背景及意义 论文主要工作 计量分析结果 4.1文献年代分布 研究方法 文献主要集中在2011年-2012年,说明学术界在这两年间对该问题关注度较高。
4.2文献类型分布 计量分析结果 研究背景及意义 论文主要工作 研究方法 文献集中在会议论文,其中以国际会议论文居多,这与检索和筛选时预定的文献级别标准是相符的。 建议饼图重制 感觉有些别扭
通过对文献被引用量统计,给出引用量在100以上的文献。图示的几篇文献对该课题参考价值较大。 研究背景及意义 论文主要工作 计量分析结果 4.3高被引文献 研究方法 通过对文献被引用量统计,给出引用量在100以上的文献。图示的几篇文献对该课题参考价值较大。
4.4高产作者统计 计量分析结果 研究背景及意义 论文主要工作 研究方法 在选出的111篇文献对应286位作者中,发文量超过5篇的作者共有4位。,说明他们对该领域研究较为深入,其发表的文献具有一定指导意义。这四位作者分别是Xie Tao(8篇),Fraser, G.(7篇) Tillmann, NikolaiArcuri, A. (6篇),Tillmann, Nikolai(5篇)。
研究背景及意义 论文主要工作 计量分析结果 4.5研究热点 研究方法 论文采用关键词词频法、共词分析方法来揭示该领域的研究热点。为此借助了文献统计工具EndNote和文献分析工具Refvize。累计关键词共590个,篇均关键词约5.3个。由图可以看出,从图中可以看出test case generation 最高,跟论文研究的课题一致,也契合了检索策略。
4.5研究热点 计量分析结果 研究背景及意义 论文主要工作 研究方法 借助Refvize文献分析工具,得出关键词共现现频率图(左),方格颜色越深表明词汇共现频率越高。 generation case object-oriented 与genetic coverage program 等共现频次较高,class case generate 与object-oriented program 共现频次较高,说明热点集中在面向对象软件中的类测试、用例生成方法和测试覆盖上。 建议调整下文字边框 洒家实在搞不定了
面向对象的测试用例实质是一组方法调用序列。 文献综述结果 5.文献综述结果 讨论 总结 致谢 测试用例生成方法 符号执行 方法 随机方法 进化搜索 寻优方法 面向对象的测试用例实质是一组方法调用序列。 面向对象的测试用例
文献综述结果 5.1随机方法 讨论 总结 致谢 该方法基本思想是在程序输入空间内进行随机的选取,将选取的样本作为测试输入,与相应的测试输出结合即测试用例。通过执行大量的随机测试用例,让程序错误自己暴露出来。随机生成单元测试用例,不需要分析程代码的逻辑、动态结构、函数内部调用这些复杂的程序约束条件,仅分析程序的输入参数结构类型,为输入参数构造随机的测试用例。 纯随机方法具有一定的盲目性,目前很多学者都针对纯随机方法做出了一些改进,产生了一些衍生的随机方法,如带反馈的随机、有指导的随机(静态分析、动态分析指导)、规避了传统的纯随机算法的一些缺陷。 随机创建 新序列 扩展序列 执行序列 删除冗余 序列 序列分类 是否超过 时间限制 结果输出 未超过 带反馈的随机方法框架 超过
符号执行方法用符号代替实际值模拟程序执行,从而实现对程序的源代码的分析,是一种静态形式化技术,符号执行与约束求解结合能用于自动生成测试用例。 文献综述结果 5.2符号执行方法 讨论 总结 致谢 符号执行方法用符号代替实际值模拟程序执行,从而实现对程序的源代码的分析,是一种静态形式化技术,符号执行与约束求解结合能用于自动生成测试用例。 符号执行方法用于生成测试用例的过程中需要先将程序经过词法、语法分析转化为中间语言,用控制流图描述中间语言,符号执行的思想是从控制流图的入口处用符号值代替具体的输入值来模拟程序符号化的执行过程。 一个完整的执行框架包括将源程序转化为中间语言的机制、路径遍历算法和约束求解器。遍历控制流图,产生每条路径的约束表达式运用约束求解工具进行求解,能够生成每条路径可满足的解数据集合。 源程序 程序分析 器 符号执行 符号表示 实际值 路径条件 约束求解 测试数据 符号执行方法过程 超过 未超过
在将源程序转化成控制流图时,常会用到程序解析工具,图示为使用Soot解析工具,再利用符号执行生成测试用例。 文献综述结果 5.2符号执行方法 讨论 总结 致谢 使用Soot解析工具 在将源程序转化成控制流图时,常会用到程序解析工具,图示为使用Soot解析工具,再利用符号执行生成测试用例。 超过 未超过
动态符号执行通过检测程序具体的执行轨迹来获取额外的信息,用该信息指导符号执行。 约束求解器 随机选择 文献综述结果 5.2符号执行方法 讨论 总结 致谢 输入 动态符号执行 动态符号执行通过检测程序具体的执行轨迹来获取额外的信息,用该信息指导符号执行。 约束求解器 超过 随机选择 要求解的约束 执行代码时收集到的约束 未超过 选择分支
目前已有一 些发方法实现了将模型检测工具,并基于符号执行方法来分析程序,从而生成测试用例。 文献综述结果 5.2符号执行方法 讨论 总结 致谢 模型检测工具 在探索符号执行树时,常利用模型检测工具 目前已有一 些发方法实现了将模型检测工具,并基于符号执行方法来分析程序,从而生成测试用例。 Java Path Finder是一个常用来探测符号执行树的模型检测工具。
谢涛等人提出的MseqGen方法使用了符号执行结合随机方法生成测试用例。 文献综述结果 5.2符号执行方法 讨论 总结 致谢 符号执行结合随机方法 谢涛等人提出的MseqGen方法使用了符号执行结合随机方法生成测试用例。 使用符号执行方法转化从代码库中提取的方法序列,即泛化序列,最后将这些单个的序列随机组合在一起,新的方法调用序列易于构造理想的状态对象。
1 2 3 遗传算法 强类型的遗传规划 分布估计算法 5.3搜索寻优方法 文献综述结果 5.3搜索寻优方法 讨论 总结 致谢 如何找到能够覆盖代码某一分支的测试输入涉及可达性问题,因此测试界关注如何在合理的时间内找到一组覆盖路径的最优的测试输入 1 遗传算法 背景 搜索寻优 方法 近年来,学者使用搜索寻优方法用于测试用例生成主要采用的几种进化算法如下: 2 强类型的遗传规划 主要方法 搜索寻优是一种动态方法 从输入域中先选取一些数据,运行程序,分析程序的运行结果,结合进化算法来产生新的测试输入。 3 分布估计算法 基本思想
文献综述结果 5.3搜索寻优方法 讨论 总结 致谢 进化 算法 框架
结合JML、JUnit、遗传算法的自动单元测试框架 文献综述结果 5.3搜索寻优方法 讨论 总结 致谢 结合JML、JUnit、遗传算法的自动单元测试框架 有学者认为:一个完整的测试用例需要包括测试数据和测试谕示,所以提出了利用JML详细设计,基于遗传算法生成完整的测试用例,该用例能直接用于JUnit平台。
目前有学者提出这两种方法结合生成测试用例,其思想是利用符号执行信息指导搜索寻优产生测试用例方法中适应度函数的构造,以指导进化过程。 文献综述结果 5.3搜索寻优方法 讨论 总结 致谢 搜索寻优方法 结合符号执行 目前有学者提出这两种方法结合生成测试用例,其思想是利用符号执行信息指导搜索寻优产生测试用例方法中适应度函数的构造,以指导进化过程。 谢涛等人提出的EVACON方法框架如下图:
文献综述结果 5.4 测试用例生成工具 讨论 总结 致谢
使用符号执行方法生成针对大型现实软件的测试用例还需要解决以下几个基本问题: 文献综述结果 6.讨论 讨论 总结 致谢 随机方法 符号执行方法 进化寻优方法 开销较小 简单易行的结构限制, 迅速生成大量的测试数据 快速发现程序的缺陷 无需代码分析 测试用例质量不高 使用符号执行方法生成针对大型现实软件的测试用例还需要解决以下几个基本问题: 1.路径爆炸 2.路径分歧 3.复杂的约束条件 主要有以下几个方面需要解决: 1.参数的选择 2.播种策略(Seeding Strategy) 3.长度膨胀 研究趋势: 关注方法的有机结合:随机&符号执行,符号执行&进化寻优
总结了该领域内主流的几类生成方法:随机方法、符号执行方法、进化搜索寻优方法。 文献综述结果 7.总结 讨论 总结 致谢 文献计量分析。 总结了该领域内主流的几类生成方法:随机方法、符号执行方法、进化搜索寻优方法。 对比分析了这些方法各自的优劣,需要解决的问题。 整理了测试用例自动生成工具。 给出了研究热点和未来发展趋势。
答辩人 屈媛媛 谢谢观看 指导老师 洪玫