程序测试论文-曹阳

程序测试论文-曹阳

导读:本文包含了程序测试论文开题报告文献综述及选题提纲参考文献,主要关键词:程序测试输入的自动生成,模糊测试,动态符号执行

程序测试论文文献综述

曹阳[1](2019)在《程序测试输入的自动生成技术框架及其优化实现》一文中研究指出在软件开发过程中,软件缺陷始终威胁着软件的安全性以及可靠性,并且随着软件规模越发庞大、程序设计越发复杂,这一问题也将变得越发严重。而正因为如此,“测试”作为业界中的主要有效应对手段,也就显得尤为重要。其中,相比较于通过人工方式生成测试输入,“程序测试输入自动生成”在成本方面有着无可比拟的优越性,并且已经被业界广泛投入使用。目前,具备程序测试输入自动生成能力的测试技术种类繁多,包括随机测试、蜕变测试等等。而在所有相关测试技术之中,又以“模糊测试(Fuzzing Testing)”以及“动态符号执行(Dynamic Symbolic Execution)”最为典型、高效,同时彼此之间风格迥异。但是,如何生成高质量的测试输入子集以及如何快速获取目标测试输入,从而最终高效达成程序测试目标,一直都是阻碍程序测试输入自动生成进一步发展的主要难题。截至目前为止,在程序测试输入自动生成研究领域中,已经涌现出了大量的相关技术综述以及技术改进,所有这些相关工作都极大的促进了程序测试输入自动生成的发展。然而可惜的是,直到今天,程序测试输入自动生成依然存在大量问题亟待解决。我们渴望能够在本质上有所突破,从而彻底解决相关问题。但是与此同时,我们也逐渐意识到:如果想要达成这一目标,当下这种在传统理论框架下单纯进行技术改进,已经是远远不够了。所以,我们需要一个全新的、统一的视角,帮助我们理解现有相关工作的特点、优势、劣势,并且以此作为基础,便于我们提出新的程序测试输入自动生成技术。为此,我们开展了如下的主要研究工作:1.我们尝试从搜索空间的角度来理解程序测试输入自动生成,并且以此作为基础,提出了一个基于“邻居关系定义(Neighborhood Definition)”N、“邻居选择策略(Selection Strategy)”以及“初始测试输入集合(Bootstrap Test Inputs)”H0的统一技术框架,记为<N,S,H0>。这样一个统一技术框架可以包罗目前所有已知的相关技术(包括模糊测试、动态符号执行以及两者技术融合),同时也为我们提供了一个全新的、统一的视角,可以重新省视目前所有相关工作的特点、优势、劣势。2.基于这样一个统一技术框架<N,S,H0>,我们从定性分析的角度出发,通过开展一份迷你技术调研(调研了模糊测试、动态符号执行以及两者技术融合的29份具有代表性的相关工作),梳理了相关工作的历史发展脉络,与此同时,基于<N,S,H0>,我们以一个全新的、统一的视角,分析、总结了所有这些相关工作的特点、优势、劣势,并且从中挖掘了具有潜力的未来研究方向。3.基于这样一个统一技术框架<N,S,H0>,我们从定量分析的角度出发,开展了一份实证研究。在实证研究中,我们使用GNU CoreUtils作为被测程序,使用AFLfast作为模糊测试工具的代表,使用KLEE作为动态符号执行工具的代表。分析了模糊测试以及动态符号执行在现实程序上的代码覆盖表现。同时,基于所统计到的全部142处代码覆盖失败案例,我们总结了“模糊测试/动态符号执行”的代码覆盖失败原因,并且发现:“模拟不充分”占比26%/49%,“算法局限性”占比64%/40%。借此,我们考察了这两项技术间的局限性以及互补性,验证了迷你技术调研中的相关定性结论。4.基于定性分析以及定量分析,我们针对实证研究过程中所发现的AFL中搜索策略的饥饿问题,提出了动态削减低效变异操作的策略,以及基于代码覆盖差异的局部深度优先搜索算法。随后,我们在AFL的基础上进行了相关改进,实现了全新的AFLSU。通过实验,我们发现:AFLSU有效的缓解了饥饿问题,并且在代码覆盖行数方面,相比较于AFL以及AFLfast,AFLSU分别最高提高了40.35%以及36.66%,平均提高了 17.27%以及12.86%。(本文来源于《南京大学》期刊2019-05-22)

黄丽敏[2](2019)在《美国化学协会提议放宽GF-6程序测试的某些限值》一文中研究指出2019年1月美国化学协会(ACC)提议了一项计划,可使ILSAC GF-6规格油品最早在2020年7月1日认证,但几项台架测试的限值较汽车生产商提出的目标值更为宽松。若该提议获批,添加剂公司有信心在2019年7月1日前完成技术验证,考虑到技术验证期后还有1年的等待期,则ILSAC GF-6规格认证有可能在2020年7月1日进行油品授权,若可将1年的等待期缩短至9个月,则ILSAC GF-6规格认证时间可提前至2020年4月1日(ILSAC原计划时间)。(本文来源于《石油炼制与化工》期刊2019年04期)

郑炜,冯晨,吴潇雪,黄月明,方靓芸[3](2017)在《运用变异测试的并行程序测试用例最小化算法》一文中研究指出在并行程序测试中,测试输入和线程交互时序是影响并行错误检测的两个关键因素。以缩减并行错误检测的输入空间为目标,给出一种基于变异测试的测试用例最小化算法。首先对并行程序进行研究,选取与并行错误密切相关的9个变异算子,并以此为基础为待测程序生成多种变异体;采用JPF作为线程调度工具来执行测试用例,根据变异评分与平均时间成本对测试用例进行排序,在优化后的测试用例集中选取检测能力不重复的测试用例,从而得到面向并行错误检测的最小测试用例集。实验结果证明,该方法能有效减小测试用例集的规模,并大幅缩短运行时间,从而提高了并行程序的测试效率。(本文来源于《计算机科学》期刊2017年11期)

王鹏[4](2017)在《探讨计算机驱动程序测试模块开发》一文中研究指出在计算机系统中,计算机的驱动程序是计算机极其重要的一个组成部分。操作系统、硬件和代码都是驱动程序所包含的内容,它们之间的各个部分能够相互影响相互作用,并且加深了驱动程序内结构的复杂性。并且,如果其中的任一一个元素发生变化以后,驱动程序都需要重新构造。在各类的系统之中驱动代码也是极其重要的并且所占的比例也很高。然而对于操作系统中的错误来说,极大部分的主要错误都是因为设备的驱动程序,所以驱动程序必须要按照操作和规范要求来运行,并且需要结合硬件的条件来进行操作和管理。(本文来源于《计算机产品与流通》期刊2017年10期)

李刚,于磊,侯韶凡,张兴隆[5](2017)在《一种改进的面向对象程序测试数据生成方法》一文中研究指出现有基于搜索的面向对象程序测试数据生成方法缺乏对参数列表的更新,导致测试数据生成效率不高。在传统基于遗传算法的面向对象程序测试数据生成方法的基础上,引入粒子群算法对参数列表进行更新,实现了方法序列和参数列表的共同更新。测试结果表明,所提方法能大幅提高面向对象程序测试数据生成的成功率及生成效率。(本文来源于《信息工程大学学报》期刊2017年04期)

王砺磊,曾霞,林望,陈鑫,杨争峰[6](2017)在《ATCase:一个基于多项式约束求解的数值程序测试用例自动生成工具》一文中研究指出现有的基于符号执行的测试用例自动生成技术存在不足之处:由于精度限制和非线性约束求解的复杂性,符号执行在遇到复杂的非线性浮点约束时效果并不理想.针对这一现状,给出了一个基于多项式约束求解和区间验证的测试用例生成算法.对于复杂非线性约束难以求解的问题,采用基于低秩矩量矩阵恢复的多项式系统求解方法,该方法对于含有等式和不等式的多项式系统,相较于其他方法求解速度更快,更适合大规模问题的求解;对于浮点约束求解不准确的问题,采用基于区间分析的验证算法来计算包含精确实解的区间,基于该区间给出测试用例,可以避免浮点计算的不准确和异常.结合该算法和符号执行工具KLEE-FP实现了一个测试用例自动生成工具ATCase(automatically generate test case),它能够分析数值程序中的路径并自动生成满足路径约束的测试用例.在两个开源软件库中的2两个复杂的真实程序上运行的实验结果表明ATCase相比KLEE-FP所使用的STP求解器,能快速生成具有更高覆盖率的测试用例,特别是在处理相对复杂的非线性约束时,优势更加明显.(本文来源于《系统科学与数学》期刊2017年07期)

李春光,周晓红,董龙明[7](2017)在《符号执行火控系统诸元解算程序测试用例生成技术》一文中研究指出火控系统作为各种武器装备的中枢和大脑,控制着武器系统的运转,其有效性直接关系着射击的成败甚至武器系统的综合效能。诸元解算程序是将各种输入条件依据弹道模型经过多次迭代转换为射击诸元,由于其复杂性,当前软件测试用例只是在几个关键点上进行校验,很难覆盖程序所有分支和路径,存在着测试不充分。针对这个问题,提出了一种基于符号执行的用例自动生成技术,结合解弹道方程组约束条件和程序分支控制变量使用符号执行框架内能够得到覆盖所有可能的执行路径,从而保证测试的充分性。(本文来源于《火力与指挥控制》期刊2017年07期)

李婧[8](2017)在《基于线程调度顺序控制的多线程程序测试》一文中研究指出随着多核技术越来越普及,多线程程序的编程也越来越流行。但是多线程程序的正确性问题已经严重影响软件可靠性,且现有的测试技术不能很好地满足多线程程序的需求。本文重点研究多线程程序中最常见的一种bug,即数据竞争,提出一种基于线程调度顺序控制的测试方法。该方法混合静态方法和动态方法,能够有效地找到多线程程序中存在的数据竞争,且能够区分出哪些数据竞争是有害的,需要程序员优先修复。实验结果显示,对于数据竞争的触发概率,本文的方法使其平均从0.53%提高到79.2%,且本文所引入的运行时开销平均只有80%,与相关方法所引入370%的开销相比更优。(本文来源于《计算机与现代化》期刊2017年06期)

颉佳宇[9](2017)在《基于变体的并发程序测试及其实验研究》一文中研究指出可达性测试方法具有在给定输入下生成并执行所有可行同步序列且不需要记录任何历史信息等诸多优势。基于拆分的可达性测试方法,通过生成细粒度的同步交织序列,解决了可达性测试因生成的测试用例集不够充分而不能有效探测并发程序中同步错误等问题。但现有的基于拆分的可达性测试方法仍然无法生成不同锁对象上同步事件之间的充分交织,不能有效探测并发程序中因使用错误的锁对象保护共享变量而导致的同步错误。为此,本文提出一种基于锁对象的拆分方法。该方法首先通过静态分析技术分析相关代码,找出没有被相同锁对象保护的共享变量,然后选取相同的锁对象对这些共享变量的访问代码进行拆分,生成不同管程对象上的同步事件的交织序列,从而暴露出并发程序中因使用错误的锁对象保护共享变量而导致的同步错误。为了提高拆分效率,本文提出了拆分点识别及排序算法,通过比较拆分点上下文中访问没有被相同锁对象保护的共享变量的次数确定拆分点的优先顺序。同时根据相关方法访问共享变量的次数确定相关方法拆分的有限顺序。在上述工作的基础上,本文设计并实现了基于锁对象拆分策略的可达性测试工具LockSplitRichTest探测并发错误,并选取了 9个具有代表性的并发程序开展实验研究,通过实验与原可达性测试工具(RichTest)、基于拆分策略的可达性测试工具SplitRichTest以及基于错误模式的并发错误预测工具(Pecan)进行比较,验证了基于锁对象的拆分方法的有效性。实验结果表明,LockSplitRichTest可有效提高探测并发程序同步错误探测能力。RichTest的同步错误探测率为46.27%,SplitRichTest的同步错误探测率为78.61%,LockSplitRichTest的同步错误探测率为95.52%,PECAN的同步错误探测率为47.26%。最后通过Apache中pool实例验证了 LockSplitRichTest工具的实用性。(本文来源于《东南大学》期刊2017-06-19)

王金鑫[10](2017)在《基于相似度的消息传递并行程序测试》一文中研究指出消息传递并行程序拥有简单的开发方式、实现的便捷性,以及优秀的兼容性能,是当前应用最广泛的并行程序之一。消息传递并行程序包含多个进程,这些进程并行执行,协同完成一个任务,使得基于该类程序的问题求解具有高效性。与串行程序相比,该类程序要复杂的多,进程间通过消息传递完成通信,使得执行过程具有不确定性,同时可能伴随着数据竞争、资源冲突,以及死锁等新问题的出现。因此,消息传递并行程序的可靠性要求更高,对其进行测试显得尤其重要。为测试程序,需要确定待测试的目标,可以是一或多个语句、分支、路径,或者其它代码片断。已有学者指出,基于语句、分支等其他的许多软件测试问题都可以转化为路径覆盖测试数据生成问题。因此,寻找覆盖路径的测试数据是非常重要的。消息传递并行程序通常包含多个进程调度序列。针对路径覆盖的测试数据生成问题,本文首先研究从程序中选择可高效生成期望测试数据调度序列的方法,以提高测试效率;但随着程序复杂度的提高,需要测试的路径也急剧增多,如果逐一寻找覆盖这些路径的测试数据,那么,需要多次运行程序,才能生成相应的测试数据。如果多条路径对应选择的调度序列相同,相应的测试数据生成问题,可建模为多目标优化问题,以减少程序运行的次数,从而提高测试数据生成的效率。但是,当路径的数量很多时,将导致建模的优化问题包含过多的目标函数,大大增加问题求解的难度。鉴于此,本文提出一种适用的路径分组方法,将复杂的多目标优化问题分解为多个简单的子优化问题,从而进一步提高测试数据生成的效率;待测试的路径分组后,本文最后给出详细的测试数据问题的求解过程。文章主要包括如下3个方面:(1)针对消息传递并行程序的路径覆盖准则,提出测试数据生成的调度序列选择方法。不同调度序列下覆盖路径测试数据生成的难度存在很大差别。调度序列选择不当,将大大限制测试效率的提高。所提方法旨在针对待覆盖的路径,选择一个性能优越且可行的调度序列,以高效的生成期望的测试数据。首先,在程序的输入空间中基于拉丁超立方采样,生成程序输入集合;然后,以每一采样值在每一调度序列下执行程序,得到覆盖路径与目标路径的相似度,并基于此排序调度序列;最后,基于静态分析,寻找性能优越且可行的调度序列。所提方法充分考虑调度序列对消息传递并行程序执行的影响,为该类程序的测试提供了行之有效的途径。(2)同一调度序列下,待覆盖路径的数量很多时,通过对上述路径合理分组,将测试数据生成问题建模为多个简单的子优化问题,从而提高路径覆盖测试数据生成的效率。考虑到已有方法得到的路径分组,组内路径之间的相似度偏低,路径覆盖测试数据的生成会受到限制。为克服上述缺陷,本文提出一种新的路径分组方法,该方法将组内已有的目标路径均视为基准路径,并基于与这些基准路径的相似度,将剩余的待覆盖路径分组,以提高组内所有目标路径的相似度,从而提高相应的测试数据生成的效率。此外,基于进程直接涉及的程序输入,设定进程子路径相似度的权值,并基于这些子路径的相似度及其权值,计算路径间的相似度。(3)基于上述研究内容,给出测试数据生成的实现过程。该实现过程的核心是遗传算法。作为一种受自然界生物进化启发,产生的基于种群的全局概率搜索方法,遗传算法具有自学习性和自适应性等优点。首先,将测试数据生成问题转化为优化问题,然后,采用遗传算法求解上述优化问题,以生成期望的测试数据。本文提出的方法,不仅提高了基于路径覆盖的消息传递并行程序的测试效率,还扩大了遗传算法的应用范围,具有非常重要的理论意义和实用价值。(本文来源于《中国矿业大学》期刊2017-06-01)

程序测试论文开题报告

(1)论文研究背景及目的

此处内容要求:

首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。

写法范例:

2019年1月美国化学协会(ACC)提议了一项计划,可使ILSAC GF-6规格油品最早在2020年7月1日认证,但几项台架测试的限值较汽车生产商提出的目标值更为宽松。若该提议获批,添加剂公司有信心在2019年7月1日前完成技术验证,考虑到技术验证期后还有1年的等待期,则ILSAC GF-6规格认证有可能在2020年7月1日进行油品授权,若可将1年的等待期缩短至9个月,则ILSAC GF-6规格认证时间可提前至2020年4月1日(ILSAC原计划时间)。

(2)本文研究方法

调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。

观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。

实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。

文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。

实证研究法:依据现有的科学理论和实践的需要提出设计。

定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。

定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。

跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。

功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。

模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。

程序测试论文参考文献

[1].曹阳.程序测试输入的自动生成技术框架及其优化实现[D].南京大学.2019

[2].黄丽敏.美国化学协会提议放宽GF-6程序测试的某些限值[J].石油炼制与化工.2019

[3].郑炜,冯晨,吴潇雪,黄月明,方靓芸.运用变异测试的并行程序测试用例最小化算法[J].计算机科学.2017

[4].王鹏.探讨计算机驱动程序测试模块开发[J].计算机产品与流通.2017

[5].李刚,于磊,侯韶凡,张兴隆.一种改进的面向对象程序测试数据生成方法[J].信息工程大学学报.2017

[6].王砺磊,曾霞,林望,陈鑫,杨争峰.ATCase:一个基于多项式约束求解的数值程序测试用例自动生成工具[J].系统科学与数学.2017

[7].李春光,周晓红,董龙明.符号执行火控系统诸元解算程序测试用例生成技术[J].火力与指挥控制.2017

[8].李婧.基于线程调度顺序控制的多线程程序测试[J].计算机与现代化.2017

[9].颉佳宇.基于变体的并发程序测试及其实验研究[D].东南大学.2017

[10].王金鑫.基于相似度的消息传递并行程序测试[D].中国矿业大学.2017

标签:;  ;  ;  

程序测试论文-曹阳
下载Doc文档

猜你喜欢