基于限制性选择与程序信息的变概率自适应随机测试方法
发布时间:2020-10-19 18:59
随着当今信息化程度的加强,软件的规模也越来越大。但是软件的质量问题一直都是人们关注的焦点问题。而随着对软件测试的投入越来越大,软件测试的成本也越来越高。如何高效地自动化测试是软件测试者必须要考虑的问题。随机测试是一种在自动化测试中应用广泛的方法。但随机测试也有着相当的不足,近年来很多学者都不断的对随机测试进行研究并进行改进,T.Y.Chen等人提出了自适应随机测试方法(Adaptive Random Testing,ART)并取得较好的效果。自适应随机测试方法的主要思想是将生成的测试用例动态的均匀分布在输入域之中。本文分析了基于概率密度函数的自适应随机测试,该类自适应随机测试算法是目前效果最好的自适应随机测试算法之一。基于概率密度函数的自适应随机测试首先根据已有测试用例生成概率密度函数,然后通过该概率密度函数生成下一个测试用例。本文分析了两种概率密度函数的自适应随机测试。一种是限制性选择的ART算法(Restricted Random Testing,RRT),另一种是基于剖面的ART算法(Adaptive Random Testing through Test Profile,ART_(TP))。本文在分析了两种基于概率密度函数的自适应随机测试方法之后,针对这两种算法的缺点和不足进行改进并在对提出的改进算法进行了实验。最后实现了一个测试原型系统来对本文中所提方法进行验证。本文主要完成的工作阐述如下:1.针对RRT算法时间消耗过大的问题,提出了改进的限制性变概率选择随机测试算法(Restricted Random Testing by Largest Available Zone,RRT_(LAZ))。RRT_(LAZ)的主要思想是在已执行测试用例周围生成排除区域和可选区域,然后通过算法计算出所有可选区域,最后寻找最大的可选区域进行测试用例的生成。同时算法考虑了多维输入域的情况并给出两种具体的解决方案。最后通过对模拟程序和真实程序进行测试,测试结果表明,本文提出的RRT_(LAZ)算法能够有效地减少RRT的时间开销并且能够使用较少的测试用例发现较多的错误。2.分析了ART_(TP)算法的执行过程并对ART_(TP)算法中用于生成测试用例的概率密度函数进行改进。相比于原概率密度函数,利用改进后的概率密度函数可以使用更少的测试用例发现错误。同时针对自适应随机测试算法没有结合程序的动态信息进行改进的缺点,提出了基于覆盖率和基于路径的变概率ART算法(Probability Adaptive Random Testing with Dynamic Program Information,PART-DPI)。通过对覆盖率和路径信息的整合,使得变概率的ART在选择测试用例时更有针对性,能够满足更高的覆盖率和覆盖更多的路径。实验结果也表明,基于程序动态信息的变概率ART能够比原有的变概率ART算法要更有效。3.设计并实现了一个变概率ART测试原型系统(Probability ART Prototype Testing System,PART_PTS)。该原型系统包含了参数分析模块、模拟数据模块、插桩模块、变异模块、执行模块以及结果分析模块。通过实验可以发现该系统有较好的可行性以及较高的扩展性。
【学位单位】:江苏大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP311.53
【部分图文】:
们已经介绍各种类型的覆盖率信息。本文中首先考虑信息的获取需要对源代码进行插桩。为了能够统计出插桩规则。对程序运行结束后对相关的信息进行输出。本文选取入。设计的统计类包括 Init()、Count()、Result()函数表 4.1 统计类主要函数功能表称 功能 () 初始化类中的数据nt () 统计所需的覆盖率信息lt () 输出覆盖率的结果信息有一些成员变量,包括 BranchJudge 用来统计分支个部分的信息。
名称 功能Init () 初始化类中的数据Count () 统计所需的覆盖率信息Result () 输出覆盖率的结果信息计类还有一些成员变量,包括 BranchJudge 用来统计分支个数以及的哪一部分的信息。图 4.5 插桩前的代码
X=X+1False结束图 4.7 示例程序流程图则如下:选择语句前加装插桩语句。设计的变量包括该插桩所及节点是否经过 Visited。选择语句退出前加装插桩语句。节点信息和规则 1 相体实例分析对路径的获取过程。假设程序的流程图如步是要求出所有的路径。首先我们可以得到 CFG 的中示。其中序号表示某一个节点,节点有相关的信息。
【参考文献】
本文编号:2847596
【学位单位】:江苏大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP311.53
【部分图文】:
们已经介绍各种类型的覆盖率信息。本文中首先考虑信息的获取需要对源代码进行插桩。为了能够统计出插桩规则。对程序运行结束后对相关的信息进行输出。本文选取入。设计的统计类包括 Init()、Count()、Result()函数表 4.1 统计类主要函数功能表称 功能 () 初始化类中的数据nt () 统计所需的覆盖率信息lt () 输出覆盖率的结果信息有一些成员变量,包括 BranchJudge 用来统计分支个部分的信息。
名称 功能Init () 初始化类中的数据Count () 统计所需的覆盖率信息Result () 输出覆盖率的结果信息计类还有一些成员变量,包括 BranchJudge 用来统计分支个数以及的哪一部分的信息。图 4.5 插桩前的代码
X=X+1False结束图 4.7 示例程序流程图则如下:选择语句前加装插桩语句。设计的变量包括该插桩所及节点是否经过 Visited。选择语句退出前加装插桩语句。节点信息和规则 1 相体实例分析对路径的获取过程。假设程序的流程图如步是要求出所有的路径。首先我们可以得到 CFG 的中示。其中序号表示某一个节点,节点有相关的信息。
【参考文献】
相关期刊论文 前2条
1 CHEN Tsong Yueh;KUO Fei-Ching;TOWEY Dave;ZHOU Zhi Quan;;A revisit of three studies related to random testing[J];Science China(Information Sciences);2015年05期
2 方木云,赵保华,屈玉贵;在测试用例不放回时比较随机测试和分割测试[J];软件学报;2001年11期
相关硕士学位论文 前1条
1 王卫锋;FSCS自适应随机测试算法的边界效应及运行效率研究[D];华东师范大学;2010年
本文编号:2847596
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2847596.html