测试函数输出数据溢出的方法、终端设备及存储介质技术

技术编号:21377830 阅读:34 留言:0更新日期:2019-06-15 13:26
本发明专利技术适用于程序测试技术领域,提供了一种测试函数输出数据溢出的方法、终端设备及存储介质,其中,上述方法包括:随机生成第一对比数据和第二对比数据;将第一对比数据写入预设的第一对比内存空间,将第二对比数据写入预设的第二对比内存空间;调用并执行目标函数;读取第一测试数据和第二测试数据;当第一测试数据与第一对比数据不相同,和/或第二测试数据与第二对比数据不相同时,确定目标函数存在输出数据溢出。本发明专利技术实施例提供的测试函数输出数据溢出的方法、终端设备及存储介质,可以实时检测无明显异常表现的内存溢出,并且可以对函数输出溢出进行动态检测,解决了现有技术中对函数输出数据溢出测试存在的测试可靠性较低的问题。

【技术实现步骤摘要】
测试函数输出数据溢出的方法、终端设备及存储介质
本专利技术属于程序测试
,尤其涉及一种测试函数输出数据溢出的方法、终端设备及存储介质。
技术介绍
在各种计算机软件的开发过程中,内存溢出是较容易发生的一种问题,函数输出数据溢出是内存溢出的主要形式之一。内存溢出最常见表现形式是死机,包括程序陷入死循环、数据冒犯异常死机、预取值异常死机等。内存溢出还有其他的表现形式,例如变量偶尔或始终被改写、读取到的数据偶尔或始终不正确。常规的内存溢出测试主要通过观察函数被调用后,系统有无异常(例如,数据访问异常、取指异常)来间接和被动地进行溢出测试。由于内存溢出发生后,有时系统并无明显的异常表现,使得这类内存溢出测试方法并不可靠。还有的方法是依靠内存溢出检测工具,对程序源码进行扫描和检测。这种方法也存在一定局限性,它对动态运行状态下发生的内存溢出缺陷不容易检测出来。
技术实现思路
有鉴于此,本专利技术实施例提供了一种测试函数输出数据溢出的方法、终端设备及存储介质,以解决现有技术对函数输出数据溢出测试存在的测试可靠性较低的问题。根据第一方面,本专利技术实施例提供了一种测试函数输出数据溢出的方法,包括:随机生成第一对比数据和第二对比数据;将所述第一对比数据写入预设的第一对比内存空间,将所述第二对比数据写入预设的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与预设的目标内存空间相邻,所述目标内存空间用于存储目标函数的一个输出数据;调用并执行所述目标函数;读取所述第一对比内存空间中的第一测试数据和所述第二对比内存空间中的第二测试数据;当所述第一测试数据与所述第一对比数据不相同,和/或所述第二测试数据与所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出。本专利技术实施例提供的测试函数输出数据溢出的方法,通过检测目标函数执行后,与其输出数据的目标内存空间相邻的两个对比内存空间中,是否出现数据篡改,实现对目标函数输出数据的溢出测试。由于函数输出数据溢出通常发生在输出变量的邻近内存区域,故通过严密地监测输出变量的前后邻近内存区域是否被改写,即可实现对输出数据溢出的检测和判定。本专利技术实施例提供的测试函数输出数据溢出的方法,可以实时检测出无明显异常表现的内存溢出,并且可以在程序运行的过程中对函数输出数据溢出进行动态检测,解决了现有技术中对函数输出数据溢出测试存在的测试可靠性较低的问题。结合第一方面,在第一方面第一实施方式中,所述函数输出数据溢出测试方法还包括:当所述第一测试数据与所述第一对比数据相同,且所述第二测试数据与所述第二对比数据也相同时,获取测试计数;当所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。本专利技术实施例提供的测试函数输出数据溢出的方法,通过统计测试计数,可以实现对函数输出数据溢出的多次测试。在本专利技术实施例提供的测试函数输出数据溢出的方法中,虽然在每次调用目标函数之前分别在第一对比内存空间和第二对比内存空间存储了随机数作为第一对比数据和第二对比数据,但仍存在溢出改写的内容恰好与随机数相同的情况。通过多次测试,且每次测试均更换随机数的方式,可以有效降低对函数输出数据溢出漏测的概率。结合第一方面第一实施方式,在第一方面第二实施方式中,所述函数输出数据溢出测试方法还包括:当所述测试计数未达到预设的计数阈值时,重复执行所述随机生成第一对比数据和第二对比数据;将所述第一对比数据写入预设的第一对比内存空间,将所述第二对比数据写入预设的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与预设的目标内存空间相邻,所述目标内存空间用于存储目标函数的一个输出数据;调用并执行所述目标函数;读取所述第一对比内存空间中的第一测试数据和所述第二对比内存空间中的第二测试数据的步骤,直至所述第一测试数据与所述第一对比数据不相同,和/或所述第二测试数据与所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出;或者,直至所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。本专利技术实施例提供的测试函数输出数据溢出的方法,在测试计数未达到预设的计数阈值时,反复对目标函数进行输出数据溢出测试,能够避免漏检,提高了溢出测试的可靠性。根据第二方面,本专利技术实施例提供了一种测试函数多个输出数据溢出的方法,包括:根据第一方面或第一方面任一实施方式所述的测试函数输出数据溢出的方法,分别对目标函数的各个输出数据进行溢出测试;当所述目标函数的任一输出数据存在溢出时,确定所述目标函数存在输出数据溢出。本专利技术实施例提供的测试函数多个输出数据溢出的方法,通过多次调用目标函数,并对目标函数的各个输出数据逐一进行溢出测试,能够对目标函数进行全面的溢出检测,不仅可以实时检测出无明显异常表现的内存溢出,并且可以在程序运行的过程中对函数输出数据溢出进行动态检测,解决了现有技术中对函数输出数据溢出测试存在的测试可靠性较低的问题。结合第二方面,在第二方面第一实施方式中,所述测试函数多个输出数据溢出的方法还包括:当所述目标函数的各个输出数据均不存在溢出时,确定所述目标函数不存在输出数据溢出。本专利技术实施例提供的测试函数多个输出数据溢出的方法,分别对目标函数的各个输出数据进行溢出测试,并判定输出数据均通过溢出测试的目标函数不存在输出数据溢出缺陷,能够可靠实现包含多个输出变量的函数输出溢出测试。根据第三方面,本专利技术实施例提供了一种并行测试函数多个输出数据溢出的方法,包括:分别为目标函数的各个输出数据随机生成一对对比数据;每对所述对比数据均包括第一对比数据和第二对比数据;将所述对比数据分别写入对应的对比内存空间;每个所述对比内存空间包括用于存储所述第一对比数据的第一对比内存空间,以及用于存储所述第二对比数据的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与用于存储对应的所述输出数据的内存空间相邻;调用并执行所述目标函数;读取各个所述第一对比内存空间中的第一测试数据,以及各个所述第二对比内存空间中的第二测试数据;当任一所述第一测试数据与对应的所述第一对比数据不相同,和/或任一所述第二测试数据与对应的所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出。本专利技术实施例提供的并行测试函数多个输出数据溢出的方法,仅需对目标函数进行一次调用,通过检测目标函数执行后,与其各个输出数据的目标内存空间相邻的两个对比内存空间中,是否出现数据篡改,实现对目标函数输出数据的溢出测试。由于函数输出数据溢出通常发生在输出变量的邻近内存区域,故通过严密地监测输出变量的前后邻近内存区域是否被改写,即可实现对输出数据溢出的检测和判定。本专利技术实施例提供的并行测试函数多个输出数据溢出的方法,可以实时检测出无明显异常表现的内存溢出,并且可以在程序运行的过程中对函数输出数据溢出进行动态检测,解决了现有技术中对函数输出数据溢出测试存在的测试可靠性较低的问题。结合第三方面,在第三方面第一实施方式中,所述并行测试函数多个输出数据溢出的方法还包括:当任一所述第一测试数据与对应的所述第一对比数据相同,且任一所述第二测试数据与对应的所述第二对比数据也相同时,获取测试计数;当所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。本专利技术实施例提供的本文档来自技高网...

【技术保护点】
1.一种测试函数输出数据溢出的方法,其特征在于,包括:随机生成第一对比数据和第二对比数据;将所述第一对比数据写入预设的第一对比内存空间,将所述第二对比数据写入预设的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与预设的目标内存空间相邻,所述目标内存空间用于存储目标函数的一个输出数据;调用并执行所述目标函数;读取所述第一对比内存空间中的第一测试数据和所述第二对比内存空间中的第二测试数据;当所述第一测试数据与所述第一对比数据不相同,和/或所述第二测试数据与所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出。

【技术特征摘要】
1.一种测试函数输出数据溢出的方法,其特征在于,包括:随机生成第一对比数据和第二对比数据;将所述第一对比数据写入预设的第一对比内存空间,将所述第二对比数据写入预设的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与预设的目标内存空间相邻,所述目标内存空间用于存储目标函数的一个输出数据;调用并执行所述目标函数;读取所述第一对比内存空间中的第一测试数据和所述第二对比内存空间中的第二测试数据;当所述第一测试数据与所述第一对比数据不相同,和/或所述第二测试数据与所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出。2.如权利要求1所述的测试函数输出数据溢出的方法,其特征在于,所述函数输出数据溢出测试方法还包括:当所述第一测试数据与所述第一对比数据相同,且所述第二测试数据与所述第二对比数据也相同时,获取测试计数;当所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。3.如权利要求2所述的测试函数输出数据溢出的方法,其特征在于,所述函数输出数据溢出测试方法还包括:当所述测试计数未达到预设的计数阈值时,重复执行所述随机生成第一对比数据和第二对比数据;将所述第一对比数据写入预设的第一对比内存空间,将所述第二对比数据写入预设的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与预设的目标内存空间相邻,所述目标内存空间用于存储目标函数的一个输出数据;调用并执行所述目标函数;读取所述第一对比内存空间中的第一测试数据和所述第二对比内存空间中的第二测试数据的步骤,直至所述第一测试数据与所述第一对比数据不相同,和/或所述第二测试数据与所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出;或者,直至所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。4.一种测试函数多个输出数据溢出的方法,其特征在于,包括:根据权利要求1至3中任一项所述的测试函数输出数据溢出的方法,分别对目标函数的各个输出数据进行溢出测试;当所述目标函数的任一输出数据存在溢出时,确定所述目标函数存在输出数据溢出。5.如权利要求4所述的测试函数多个输出数据溢出的方法,其特征在于,所述测试函数多个输出数据溢出的方法还包括:当所述目标函数的各个输出数据均不存在溢出时,确定所述目标函数不存在输出数据溢出。6.一种并行测试函数多个输出数据溢出的方法,其特征在于,包括:分别为目标函数的各个输出数据随机生成一对对比数据;每对所述对比数据均包括第一对比数据和第二对比数据;将所述对比数据分别写入对应的对比内存空间;每个所述对比内存空间包括用于存储所述第一对比数据的第一对比内存空间,以及用于存储所述第二对比数据的第二对比内存空间;所述第一对比内存空间和所述第二对比内存空间分别与用于存储对应的所述输出数据的内存空间相邻;调用并执行所述目标函数;读取各个所述第一对比内存空间中的第一测试数据,以及各个所述第二对比内存空间中的第二测试数据;当任一所述第一测试数据与对应的所述第一对比数据不相同,和/或任一所述第二测试数据与对应的所述第二对比数据不相同时,确定所述目标函数存在输出数据溢出。7.如权利要求6所述的并行测试函数多个输出数据溢出的方法,其特征在于,所述并行测试函数多个输出数据溢出的方法还包括:当任一所述第一测试数据与对应的所述第一对比数据相同,且任一所述第二测试数据与对应的所述第二对比数据也相同时,获取测试计数;当所述测试计数达到预设的计数阈值时,确定所述目标函数不存在输出数据溢出。8.如权利要求7所述的并行测试函数多个输出数据溢出的方法,其特征在于,所述并行测试函数多个输出数据溢出的方法还包括:当...

【专利技术属性】
技术研发人员:董时舫
申请(专利权)人:百富计算机技术深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1