模糊测试的方法、装置和系统.pdf

上传人:a2 文档编号:1574279 上传时间:2018-06-25 格式:PDF 页数:13 大小:474.14KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110391886.3

申请日:

2011.11.30

公开号:

CN103136098A

公开日:

2013.06.05

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20111130|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

西门子公司

发明人:

隋爱芬; 唐文; 郭代飞

地址:

德国慕尼黑

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司 11240

代理人:

李慧

PDF下载: PDF下载
内容摘要

本发明提供了一种模糊测试的方法和装置。该方法包括步骤:将多个测试用例输入给一个待测目标;获取与所述待测目标对每一个测试用例的响应相关的响应信息;根据所获取的响应信息,对所述多个测试用例进行分类;分析每一个分类中的一个或多个所述测试用例的共同特征;基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。采用该方法和装置可以较为有效地生成足以引起故障的测试用例。而且,优选地,本发明提出的模糊测试方法无需获知文件格式或协议。

权利要求书

权利要求书一种用于模糊测试的方法,包括步骤:
将多个测试用例输入给一个待测目标(S110);
获取与所述待测目标对每一个测试用例的响应相关的响应信息(S120);
根据所获取的响应信息,对所述多个测试用例进行分类(S130);
分析每一个分类中的一个或多个所述测试用例的共同特征(S140);
基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例(S150)。
根据权利要求1所述的方法,其中,所述响应信息包括:响应内容或响应行为。
根据权利要求2所述的方法,其中,所述响应行为包括:响应时间或者所述待测目标做出响应所占用的资源。
根据权利要求3所述的方法,其中,所述待测目标做出响应所占用的资源包括CPU占用率、内存使用率、文件系统利用率以及存储系统使用情况中的任意一种或多种。
根据权利要求1所述的方法,其中,所述根据所获取的响应信息,对所述多个测试用例进行分类的步骤(S130)包括:
基于所获取的响应信息,评估相应的测试用例的故障引发等级(S131);
将属于同一故障引发等级的测试用例分成一类(S135)。
根据权利要求5所述的方法,其中,所述评估测试用例的故障引发等级的步骤包括:对于每一个测试用例,
评价与所述测试用例相关的多个响应信息的对引发故障的影响度(S231);
将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级(S233)。
根据权利要求1所述的方法,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。
根据权利要求1所述的方法,其中,所述发送给待测目标的多个测试用例是以随机方式、基于变异的方式或基于生成的方式生成的。
根据权利要求1所述的方法,其中,发送给所述待测目标的多个测试用例反应多种不同类型的非法输入。
根据权利要求1所述的方法,还包括:重复执行如权利要求1所述的方法,且其中将所生成的新测试用例作为所述测试用例发送给所述待测目标。
一种用于模糊测试的装置,包括:
发送模块(310),用于将多个测试用例输入给一个待测目标(10);
响应采集模块(320),用于获取与所述待测目标(10)对每一个测试用例的响应相关的响应信息;
评估分类模块(330),用于根据所获取的响应信息,对所述多个测试用例进行分类;
分析模块(340),用于分析每一个分类中的一个或多个所述测试用例的共同特征;
生成模块(350),基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。
根据权利要求11所述的装置,其中,所述响应信息包括:响应内容或响应行为。
根据权利要求11所述的装置,其中,所述评估分类模块(330)包括:
评估模块(331),用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;
分类模块(335),将属于同一故障引发等级的测试用例分成一类。
根据权利要求13所述的装置,其中,所述评估模块(331)包括:
第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;
第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。
根据权利要求11所述的装置,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。
根据权利要求11所述的装置,其中,所述发送模块(310)还发送所生成的新测试用例给所述待测目标。
一种模糊测试的系统,其特征在于,该系统包括如权利要求11‑16中任一项所述的模糊测试的装置。
一种计算机可读介质,存储执行权利要求1‑10任一项所述方法的计算机可读指令。
一种计算机程序,包括执行权利要求1‑10任一项所述方法的计算机可读指令。

说明书

说明书模糊测试的方法、装置和系统
技术领域
本发明涉及软件安全测试领域,尤其涉及一种模糊测试的方法、装置和系统。
背景技术
模糊测试是一种广泛使用的软件测试技术,用于发现软件中的隐患。简而言之,模糊测试是向待测目标(例如,其上运行有相关软件的服务器)发送大量的无效或错误输入,引发待测目标以非预期方式运行,从而发现故障。比如,模糊测试会通过向待测目标发送无效输入而引起待测目标内存冲突、程序崩溃或资源用尽等状况。这些状况又很可能导致待测目标出现拒绝服务(DoS:Denial of Service)的状况,甚或给攻击者在待测目标的环境中运行任意代码提供可能。由此,模糊测试因能检测出软件实现中被忽略的故障,而成为软件安全性测试的一重要手段。目前,这种模糊测试方法已大量应用于网络协议实现的安全测试中。
利用模糊测试方法成功发现软件隐患的一个重要方面是模糊输入(也称作测试用例)的数量和质量。如何能够利用尽可能少的测试用例发现尽可能多的软件故障一直是模糊侧试的研究课题。现今最常用的测试用例构建方式有两种,其一为基于变异的(Mutation based)构建方式,其二为基于生成(Generation based)的构建方式。基于变异的构建方式是对预先获知的有效输入数据施加变异运算,以生成无效的或不期望的数据作为测试用例。比如,这种变异运算例如可以是将有效的短字符串替换为长字符串、或将有效的数据包长度值替换为一个相当大的或相当小的数值等等。与基于变异的构建方式不同,基于生成的构建方式需要预先获知例如待测目标所能处理的文件格式或网络协议的具体描述,然后再基于这些描述通过在有效的格式或协议中随机地插入错误节点来生成相应的错误的测试报文。比如,插入错误节点可以是在网络协议的消息格式中增加字段或减少字段,或在特定位置插入错误字段等等。
上述两种模糊测试用例的构建方法都是试图使得每一个测试用例不同于有效数据,以期望引起待测目标出错。但是,测试用例还不能是完全无效数据,因为完全无效数据会很快被待测目标发现并抛弃,并不能引发待测目标出错。因此,模糊测试更关心那些刚好跨出有效数据边界且足以引起目标故障的那些无效数据。在这一点上,基于变异的模糊测试因无法得到例如文件格式或协议等可用信息的引导,因而不能发现所有可能引起故障的情况。基于生成的构建方法虽然是基于文件格式或协议来生成测试用例,但其对输入的随机化处理经常使得测试用例数目过多,且易生成一些类似的或等价的测试用例,从而难以快速高效地导致待测目标出错。
为此,现有技术中需要一种更加有效的模糊测试方法。
发明内容
考虑到现有技术的上述缺陷,本发明的实施例提出一种模糊测试的方法和装置,其可以提供一种较为有效的方式来生成足以引起故障的测试用例。而且,优选地,本发明提出的模糊测试方法因无需获知文件格式或协议,而可以应用于多种不同的网络协议实现。这使其特别适于各种各样的网络协议实现的测试工作。
本发明的实施例提供了一种模糊测试的方法,包括步骤:将多个测试用例输入给一个待测目标;获取与所述待测目标对每一个测试用例的响应相关的响应信息;根据所获取的响应信息,对所述多个测试用例进行分类;分析每一个分类中的一个或多个所述测试用例的共同特征;基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。
这种模糊测试方法引入了反馈机制,从而后续测试用例能够在借鉴先前测试用例的测试效果基础上生成。由此,在生成后续的测试用例时可以有选择地生成那些能够更有效地导致待测目标出错的测试用例。因此,采用这种方法可以较为迅速的发现那些更易引发故障的测试用例,提高了测试用例的效力。同时,由于这种模糊测试方法能够减少生成那些不易引发故障的测试用例的数量,因而这种模糊测试方法效率更高。
优选地,上述模糊测试方法中获取的响应信息不仅包括响应内容,还包括响应行为。例如,响应内容可以是针对某一测试用例的响应数据包的类型或内容(包括数据包所包含的字段数目、字段内的内容)。比如,响应内容可以是响应代码。响应行为例如包括响应时间(比如以往返延时衡量)、待测目标做出响应所占用的资源(例如,CPU占用率、内存使用率、文件系统利用状况以及存储系统使用情况等等)。
根据本发明的一个实施例,上述根据所获取的响应信息,对所述多个测试用例进行分类的步骤优选包括:基于所获取的响应信息,评估相应的测试用例的故障引发等级;将属于同一故障引发等级的测试用例分成一类。更优选地,所述评估测试用例的故障引发等级的步骤包括:对于每一个测试用例,评价与所述测试用例相关的多个响应信息的对引发故障的影响度;将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。采用这种方法来评价测试用例能够将更易引发故障的测试用例分在同一分组中,并由此得以分析这些测试用例的共性,从而基于这种共性生成包含这种共性的新的测试用例。比如,如果响应时间超过阈值的各个测试用例的共性在于包含某共同内容,则可进而生成包含该共同内容的新的测试用例。如此方式选择性生成的新测试用例更易引发待测目标故障,并可形成一系列的测试用例用来进行拒绝服务测试。
根据本发明又一个实施例,属于同一分类中的多个测试用例的共同特征可以是这些测试用例之间的共同内容、共同结构或共同的行为特征。
根据本发明另一个实施例,发送给待测目标的多个初始测试用例是以随机方式,基于变异的方式或基于生成的方式生成的。更为优选地,发送给所述待测目标的初始的测试用例反应多种不同类型的非法输入。这样的好处是基于这些初始测试用例的响应信息生成的新的测试用例也可以覆盖多种可能,而不会集中在某一、两种可能的非法输入上。
根据本发明另一个实施例,所生成的新测试用例可以发送给所述待测目标,并且重复执行本发明提出的模糊测试方法,从而基于该新测试用例的响应信息,生成另外一些新的测试用例,如此循环。
根据本发明另一个实施例,还提出了一种模糊测试装置。该装置包括:发送模块,用于将多个测试用例输入给一个待测目标;响应采集模块,用于获取与所述待测目标对每一个测试用例的响应相关的响应信息;评估分类模块,用于根据所获取的响应信息,对所述多个测试用例进行分类;分析模块,用于分析每一个分类中的一个或多个所述测试用例的共同特征;生成模块,基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。其中,优选地,所述响应信息包括:响应内容或响应行为。
优选地,所述评估分类模块包括:评估模块,用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;分类模块,将属于同一故障引发等级的测试用例分成一类。更为优选地,所述评估模块包括:第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。其中,属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。
根据本发明又一方面,本发明还提出了一种模糊测试的系统,该系统包括如上所述的模糊测试装置。
此外,本发明还提出一种计算机可读介质,其存储有能够执行本发明提出的上述模糊测试方法的计算机可读指令。而且,本发明还提出计算机程序,其包括能够执行上述模糊测试方法的计算机可读指令。
利用本发明实施例的上述技术方案,通过引入反馈机制来基于先前测试用例的测试效果生成新的测试用例,可以提高所构造的测试用例的效力,并减少生成不必要的测试用例,从而整体上提高了模糊测试的效率并能达到更加有效的测试效果。
附图说明
本发明的目的、特点、特征和优点通过以下结合附图的详细描述将变得更加显而易见。其中:
图1示出了根据本发明一实施例的模糊测试方法的流程图;
图2示出了根据本发明另一实施例的模糊测试方法的流程图;
图3示出了根据本发明一实施例的模糊测试的装置的示意图。
具体实施方式
考虑到现有基于变异和基于生成的模糊测试方法的缺陷,在本发明实施例中提出了一种带有反馈机制的模糊测试方法。所谓反馈机制是指在模糊测试过程中后续测试用例是在对之前测试用例的测试效果进行分析之后有选择地获得的。由于引入了上述反馈机制,在生成后续测试用例的过程中可以更多地选择那些更可能引起待测目标故障的测试用例。这样的优势在于可以提高测试用例的效力和针对性,从而模糊测试过程更加高效。
图1示例性地示出了根据本发明一个实施例的模糊测试方法。在图1所示的例子中,待测目标例如为一个协议实现体,其具体例如可以是一个可以运行网络协议实现软件的计算机,用于按照预先约定的网络协议(例如包括消息格式,消息传递行为)进行数据的交互。但在实际应用中,待测目标并不限于此,比如待测目标还可以是文件处理实现体,用户信息交互实现体等等。对于那些基于例如FPGA、DPS实现的设备,待测目标还可以是那些其上可运行相关软件的固件或其他类似的电子设备。
在图1中,根据本发明一个实施例的模糊测试方法大体包括反馈收集、效果评估、生成新测试用例三个阶段。
具体地,反馈收集阶段从步骤S110开始。在步骤S110中,首先将一定数目的初始测试用例(或称为第一测试用例)作为输入发送给待测目标,促使待测目标对这些初始测试用例做出响应。这些初始测试用例可以按照多种方式来获得。在图1所示的实施例中采用了一种最简单的方法,即采用随机方式生成这些初始测试用例。比如,假设待测目标的输入可以是字符串,那么初始测试用例可以是从基本字符中随机选取的若干字符的组合。更为优选地是希望随机生成的初始测试用例是均匀分布的,比如尽可能全面地使用基本字符。以ASCII字符为例,ASCII字符大体包括字母、数字和特殊字符三大类。这样,优选地,随机生成的初始测试用例可以包括ASCII中的字母、数字以及特殊字符三个类型的字符。这样的好处是初始测试用例可以较为均匀地包括多种非法输入的可能性,而不会局限于少数几种可能的非法输入。除随机生成方法之外,步骤S110中的初始测试用例还可以采用基于文法(syntax)的生成方法,比如,之前提到的基于变异的方法和基于生成的方法。关于这一部分将在后面结合附图2详细描述。
在收到初始测试用例之后,待测目标必然会试图对每一个输入的测试用例做出响应。待测目标的响应方式以及响应结果可能因输入的不同而不同。为此,在图1的步骤S120中,收集与待测目标对每个初始用例做出的响应相关的响应信息。在图1的实例中,响应信息例如是响应内容。比如,响应内容可以是待测目标针对某初始测试用例反馈的响应数据包的类型或内容,该响应数据包中例如可包含响应代码。对于SIP(会话启动协议)而言,响应代码例如可以是表示正常的200OK、表示请求被禁止的403Forbiden,表示网关超时的504 Gateway Timeout等等。响应内容还可以是响应数据包中包含的其他数据内容,比如,响应数据包的内容可以完全是乱码。除了响应内容之外,响应信息还可以包括例如图2所示的响应行为,这将在下面结合图2详细描述。
在收集到针对初始测试用例的响应信息之后,模糊测试方法进入效果评估阶段,即步骤S130。在步骤S130中,基于所获得的响应信息,可对初始测试用例的测试效果进行分类。比如,一种简单的方法是在步骤S131中根据响应代码的不同,对初始测试用例进行分类。对应于同一响应代码的测试用例分在一组。优选地,还可以根据响应代码的不同,评价相关初始测试用例的故障引发等级(FEL:failure‑causing effectiveness level)。具体地,例如,如果响应数据包中响应代码为“200OK”,表明相应的初始测试用例为有效输入,其FEL最低,例如FEL=0。如果响应数据包中响应代码包含“Time Out”,表明待测目标可能因无法正常响应而出现了死循环,故而其FEL较高,例如FEL=5。如果响应数据包中的内容全是乱码,则表明待测目标响应出错,因而相应的初始测试用例的FEL也可以较高,比如FEL也为5。进而,在步骤S135中将具有同一FEL的多个初始测试用例可分在同一组中,从而得到多个包含初始测试用例的分组。
继而,模糊测试方法进入新测试用例生成阶段。即,在步骤S140中分析属于同一分组的一个或多个初始测试用例的共同特征。比如,在图1所示的例子中,测试用例的共同特征可以是共同拥有的字符。举例来说,例如同属于FEL=5的分组中的测试用例均包括一个相同的非法字符“”。然后,在步骤S150中,基于分析出的共同特征,生成新的测试用例(第二测试用例),比如,包含非法字符“”的测试用例。在步骤S150中,考虑到FEL较高的初始测试用例更易引起待测目标的故障,从而优选基于FEL较高的分组的共同特征生成新的测试用例。这样,所生成的新的测试用例能够更加快速并有效地测试出故障,由此能提高模糊测试的效率和有效性。测试用例的共同特征还可以是例如共同的行为特征或共同结构特征,这将结合图2详细说明。
最后,将新生成的测试用例发送给待测目标作为新的输入。这里,发送的新测试用例可被视作下一模糊测试循环中的初始测试用例(或第一测试用例),并继而重复执行步骤S110‑S150,从而在新测试循环中获得又一批新的测试用例。当然,图1所示的模糊测试循环还可根据实际需要不断重复执行,或者仅执行一次或有限次数。
图2示例性地示出了根据本发明另一个实施例的模糊测试方法。在图2所示的实施例中,模糊测试方法从步骤S210开始。在步骤S210中,同样先将一定数目的初始测试用例作为输入发送给待测目标,以使待测目标对这些初始测试用例做出响应。这里,初始测试用例可采用基于文法(syntax)的生成方法,比如,之前提到的基于变异的方法和基于生成的方法。具体地,例如,当采用基于变异的方法来生成初始用例时,考虑到需要使得初始用例较为均匀地覆盖各种可能的非法输入,因而优选选取针对不同的字段类型(例如长度字段和普通的内容字段等)进行变异运算,而且还需要选取不同类型的变异算子,以便得到各种类型的初始测试用例。此外,初始测试用例还可以采用基于生成的方法获得。比如,对于那些可以预先获知协议报文格式的情况,可以采用ABNF(扩展的巴科斯范式)表示的协议报,并选取其中具有代表性的错误插入点(“必选项”)来生成测试报文。如此生成的测试用例可以覆盖典型的非法报文。
进而,在步骤S220收集与待测目标对每个初始用例的响应相关的响应信息。在图2所示的实例中,响应信息例如是响应行为,比如响应时间或响应过程所占用的资源等等。具体地,通常可以利用往返时延(round trip time)来衡量响应时间,用待测目标在响应过程中对CPU的占用率、内存的使用率、文件系统利用率以及存储系统使用情况中的任意一种或多种来衡量做出该响应所占有的资源。在下面这个具体的例子是采用CPU的占用率来衡量响应所占用的资源。更为优选地,针对一个初始测试用例,可以同时收集到一种或多种响应信息,比如所收集的响应信息可以既包括响应内容、也包括响应时间,以及资源占用情况。这样可以为全方位评价测试用例的测试效果提供可能。
在收集到针对初始测试用例的响应信息之后,模糊测试方法进入效果评估阶段,即步骤S230。图2示出了一种相对复杂的评估分类方法。具体地,在步骤S231中,对于属于同一测试用例的多种响应信息中的每一个的影响程度(IND:Influence Degree)进行评价。比如,响应时间或往返延时越短IND值越低,响应时间超出平均值则IND值越高,超出阈值则IND更高。再比如,CPU占用率为99%以上,IND值最高;CPU占用率为50%‑90%,IND值为中等;CPU占用率为50%以下,IND值为低。对于内存占用而言,IND值越高内存占用越高,等等。在步骤S233中,将这些响应信息的影响程度IND进行加权累加,从而得到该测试用例的故障引发等级FEL(见以下公式)。
<mrow><MI>FEL</MI> <MO>=</MO> <MUNDEROVER><MI>Σ</MI> <MROW><MI>i</MI> <MO>=</MO> <MN>1</MN> </MROW><MI>N</MI> </MUNDEROVER><MSUB><MI>K</MI> <MI>i</MI> </MSUB><MSUB><MI>IND</MI> <MI>i</MI> </MSUB></MROW>]]&gt;</MATH></MATHS> <BR>其中,i表示第i种响应信息;INDi表示该响应信息的影响程度;Ki为第i种响应信息对FEL的贡献比率,即加权因子。比如,CPU占用率的加权因子Ki可以取0.5,其他影响要素,如响应时间可以取0.3等等。一般而言,其主要作用的因素,权重会较高。如此通过加权求和得到对每个测试用例的FEL。如果FEL超过预定阈值,则表明该测试用例引起待测目标崩溃的可能性越大。在步骤S235中将属于同一等级的FEL的多个初始测试用例分在同一组中,从而得到多个包含初始测试用例的分组。 <BR>继而,模糊测试方法进入新测试用例生成阶段。即,在步骤S240中分析属于同一分组的一个或多个初始测试用例的共同特征。比如,在图2所示的例子中,测试用例的共同特征可以是例如共同的行为特征或共同的结构特征。对于共同行为特征,比如测试用例改变正常消息交互顺序,再比如均为以预定间隔连续重复发送相同数据包,或均为先发送长数据包再发送短数据包,等等。此外,测试用例的共同结构特征比如是均包括1个头字段和多个数据字段,其中数据字段均为第一个数据字段的重复,再比如均包括1个头字段和两个数据字段,其中一个数据字段的长度超出预定值,等等。在步骤S250中,优选地,选择加权得到的FEL较高的分组的共同特征,并基于这些共同特征生成具有这些共同特征的新的测试用例。最后,将新生成的测试用例发送给待测目标作为新的输入。由此,所生成的一系列新的测试用例更易于引发待测目标出现故障,例如使得待测目标达到拒绝服务(DoS)状态,从而实现DoS测试。 <BR>利用本发明实施例的模糊测试方法可以提供一种较为有效的方式来生成足以引起故障的测试用例。而且,优选地,本发明提出的模糊测试方法因无需获知文件格式或协议,而可以应用于多种不同的网络协议实现。这使其特别适于各种各样的网络协议实现的测试工作。 <BR>本发明还提供了一种机器(如计算机)可读的存储介质,存储用于使一机器执行如本文所述的模糊测试方法的指令。 <BR>本发明还提供一种计算机程序,其包含可以执行所述模糊测试方法的计算机可读指令。 <BR>具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。 <BR>在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。 <BR>用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD‑ROM、CD‑R、CD‑RW、DVD‑ROM、DVD‑RAM、DVD‑RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。 <BR>此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。 <BR>图3示出了根据本发明一实施例的模糊测试的装置300的示意图。如图3,该实施例的装置300包括:发送模块310,用于将多个测试用例输入给一个待测目标10;响应采集模块320,用于获取与所述待测目标10对每一个测试用例做出响应相关的响应信息;评估分类模块330,用于根据所获取的响应信息,对所述多个测试用例进行分类;分析模块340,用于分析每一个分类中的一个或多个所述测试用例的共同特征;生成模块350,基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。其中,响应采集模块可以设置在待测目标处、发送模块处、或待测目标与发送模块之间,用于截取待测目标发送给发送模块的响应数据包,或者根据需要通过与待测目标建立连接来查询待测目标的资源占用情况等等。 <BR>其中,所述响应信息包括:响应内容或响应行为。优选地,同一分类中的测试用例之间的共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。 <BR>在图3中,评估分类模块330包括:评估模块331,用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;和分类模块335,将属于同一故障引发等级的测试用例分成一类。优选地,评估模块331包括:第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。优选地,根据权利要求11所述的装置,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。 <BR>本领域技术人员应当理解,模糊测试的装置可以利用软件、硬件或者软硬件结合的方式来实现。 <BR>本领域技术人员应当理解,上面所公开的各个实施例可以在不偏离发明实质的情况下做出各种改变和修改,这些改变和修改都应当落在本发明的保护范围之内。因此,本发明的保护范围应当由所附的权利要求书来限定。</p></div> </div> </div> </div> <div class="tempdiv cssnone" style="line-height:0px;height:0px; overflow:hidden;"> </div> <div id="page"> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/bde4e0b4-e906-46ec-bcaa-655d3ce13fed/bde4e0b4-e906-46ec-bcaa-655d3ce13fed1.gif' alt="模糊测试的方法、装置和系统.pdf_第1页" width='100%'/></div><div class="pageSize">第1页 / 共13页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/bde4e0b4-e906-46ec-bcaa-655d3ce13fed/bde4e0b4-e906-46ec-bcaa-655d3ce13fed2.gif' alt="模糊测试的方法、装置和系统.pdf_第2页" width='100%'/></div><div class="pageSize">第2页 / 共13页</div> <div class="page"><img src='https://img.zhuanlichaxun.net/fileroot2/2018-6/16/bde4e0b4-e906-46ec-bcaa-655d3ce13fed/bde4e0b4-e906-46ec-bcaa-655d3ce13fed3.gif' alt="模糊测试的方法、装置和系统.pdf_第3页" width='100%'/></div><div class="pageSize">第3页 / 共13页</div> </div> <div id="pageMore" class="btnmore" onclick="ShowSvg();">点击查看更多>></div> <div style="margin-top:20px; line-height:0px; height:0px; overflow:hidden;"> <div style=" font-size: 16px; background-color:#e5f0f7; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;">资源描述</div> <div class="detail-article prolistshowimg"> <p>《模糊测试的方法、装置和系统.pdf》由会员分享,可在线阅读,更多相关《模糊测试的方法、装置和系统.pdf(13页珍藏版)》请在专利查询网上搜索。</p> <p >1、(10)申请公布号 CN 103136098 A(43)申请公布日 2013.06.05CN103136098A*CN103136098A*(21)申请号 201110391886.3(22)申请日 2011.11.30G06F 11/36(2006.01)(71)申请人西门子公司地址德国慕尼黑(72)发明人隋爱芬 唐文 郭代飞(74)专利代理机构北京康信知识产权代理有限责任公司 11240代理人李慧(54) 发明名称模糊测试的方法、装置和系统(57) 摘要本发明提供了一种模糊测试的方法和装置。该方法包括步骤:将多个测试用例输入给一个待测目标;获取与所述待测目标对每一个测试用例的响应相关的响应。</p> <p >2、信息;根据所获取的响应信息,对所述多个测试用例进行分类;分析每一个分类中的一个或多个所述测试用例的共同特征;基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。采用该方法和装置可以较为有效地生成足以引起故障的测试用例。而且,优选地,本发明提出的模糊测试方法无需获知文件格式或协议。(51)Int.Cl.权利要求书2页 说明书7页 附图3页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书7页 附图3页(10)申请公布号 CN 103136098 ACN 103136098 A1/2页21.一种用于模糊测试的方法,包括步骤:将多个测试用例输入给一个待测目标(S。</p> <p >3、110);获取与所述待测目标对每一个测试用例的响应相关的响应信息(S120);根据所获取的响应信息,对所述多个测试用例进行分类(S130);分析每一个分类中的一个或多个所述测试用例的共同特征(S140);基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例(S150)。2.根据权利要求1所述的方法,其中,所述响应信息包括:响应内容或响应行为。3.根据权利要求2所述的方法,其中,所述响应行为包括:响应时间或者所述待测目标做出响应所占用的资源。4.根据权利要求3所述的方法,其中,所述待测目标做出响应所占用的资源包括CPU占用率、内存使用率、文件系统利用率以及存储系统使用情况中的任意一种或多。</p> <p >4、种。5.根据权利要求1所述的方法,其中,所述根据所获取的响应信息,对所述多个测试用例进行分类的步骤(S130)包括:基于所获取的响应信息,评估相应的测试用例的故障引发等级(S131);将属于同一故障引发等级的测试用例分成一类(S135)。6.根据权利要求5所述的方法,其中,所述评估测试用例的故障引发等级的步骤包括:对于每一个测试用例,评价与所述测试用例相关的多个响应信息的对引发故障的影响度(S231);将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级(S233)。7.根据权利要求1所述的方法,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的。</p> <p >5、共同内容、共同结构或共同的行为特征。8.根据权利要求1所述的方法,其中,所述发送给待测目标的多个测试用例是以随机方式、基于变异的方式或基于生成的方式生成的。9.根据权利要求1所述的方法,其中,发送给所述待测目标的多个测试用例反应多种不同类型的非法输入。10.根据权利要求1所述的方法,还包括:重复执行如权利要求1所述的方法,且其中将所生成的新测试用例作为所述测试用例发送给所述待测目标。11.一种用于模糊测试的装置,包括:发送模块(310),用于将多个测试用例输入给一个待测目标(10);响应采集模块(320),用于获取与所述待测目标(10)对每一个测试用例的响应相关的响应信息;评估分类模块(330。</p> <p >6、),用于根据所获取的响应信息,对所述多个测试用例进行分类;分析模块(340),用于分析每一个分类中的一个或多个所述测试用例的共同特征;生成模块(350),基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。12.根据权利要求11所述的装置,其中,所述响应信息包括:响应内容或响应行为。13.根据权利要求11所述的装置,其中,所述评估分类模块(330)包括:评估模块(331),用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;权 利 要 求 书CN 103136098 A2/2页3分类模块(335),将属于同一故障引发等级的测试用例分成一类。14.根据权利要求13所述的装置,其。</p> <p >7、中,所述评估模块(331)包括:第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。15.根据权利要求11所述的装置,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。16.根据权利要求11所述的装置,其中,所述发送模块(310)还发送所生成的新测试用例给所述待测目标。17.一种模糊测试的系统,其特征在于,该系统包括如权利要求11-16中任一项所述的模糊测试的装置。18.一种计算机可读介质,存储执行权利要求1-10任一项所述。</p> <p >8、方法的计算机可读指令。19.一种计算机程序,包括执行权利要求1-10任一项所述方法的计算机可读指令。权 利 要 求 书CN 103136098 A1/7页4模糊测试的方法、 装置和系统技术领域0001 本发明涉及软件安全测试领域,尤其涉及一种模糊测试的方法、装置和系统。背景技术0002 模糊测试是一种广泛使用的软件测试技术,用于发现软件中的隐患。简而言之,模糊测试是向待测目标(例如,其上运行有相关软件的服务器)发送大量的无效或错误输入,引发待测目标以非预期方式运行,从而发现故障。比如,模糊测试会通过向待测目标发送无效输入而引起待测目标内存冲突、程序崩溃或资源用尽等状况。这些状况又很可能导致待测。</p> <p >9、目标出现拒绝服务(DoS:Denial of Service)的状况,甚或给攻击者在待测目标的环境中运行任意代码提供可能。由此,模糊测试因能检测出软件实现中被忽略的故障,而成为软件安全性测试的一重要手段。目前,这种模糊测试方法已大量应用于网络协议实现的安全测试中。0003 利用模糊测试方法成功发现软件隐患的一个重要方面是模糊输入(也称作测试用例)的数量和质量。如何能够利用尽可能少的测试用例发现尽可能多的软件故障一直是模糊侧试的研究课题。现今最常用的测试用例构建方式有两种,其一为基于变异的(Mutation based)构建方式,其二为基于生成(Generation based)的构建方式。基于。</p> <p >10、变异的构建方式是对预先获知的有效输入数据施加变异运算,以生成无效的或不期望的数据作为测试用例。比如,这种变异运算例如可以是将有效的短字符串替换为长字符串、或将有效的数据包长度值替换为一个相当大的或相当小的数值等等。与基于变异的构建方式不同,基于生成的构建方式需要预先获知例如待测目标所能处理的文件格式或网络协议的具体描述,然后再基于这些描述通过在有效的格式或协议中随机地插入错误节点来生成相应的错误的测试报文。比如,插入错误节点可以是在网络协议的消息格式中增加字段或减少字段,或在特定位置插入错误字段等等。0004 上述两种模糊测试用例的构建方法都是试图使得每一个测试用例不同于有效数据,以期望引起待。</p> <p >11、测目标出错。但是,测试用例还不能是完全无效数据,因为完全无效数据会很快被待测目标发现并抛弃,并不能引发待测目标出错。因此,模糊测试更关心那些刚好跨出有效数据边界且足以引起目标故障的那些无效数据。在这一点上,基于变异的模糊测试因无法得到例如文件格式或协议等可用信息的引导,因而不能发现所有可能引起故障的情况。基于生成的构建方法虽然是基于文件格式或协议来生成测试用例,但其对输入的随机化处理经常使得测试用例数目过多,且易生成一些类似的或等价的测试用例,从而难以快速高效地导致待测目标出错。0005 为此,现有技术中需要一种更加有效的模糊测试方法。发明内容0006 考虑到现有技术的上述缺陷,本发明的实施例。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>12、提出一种模糊测试的方法和装置,其可以提供一种较为有效的方式来生成足以引起故障的测试用例。而且,优选地,本发明提说 明 书CN 103136098 A2/7页5出的模糊测试方法因无需获知文件格式或协议,而可以应用于多种不同的网络协议实现。这使其特别适于各种各样的网络协议实现的测试工作。0007 本发明的实施例提供了一种模糊测试的方法,包括步骤:将多个测试用例输入给一个待测目标;获取与所述待测目标对每一个测试用例的响应相关的响应信息;根据所获取的响应信息,对所述多个测试用例进行分类;分析每一个分类中的一个或多个所述测试用例的共同特征;基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。0。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>13、008 这种模糊测试方法引入了反馈机制,从而后续测试用例能够在借鉴先前测试用例的测试效果基础上生成。由此,在生成后续的测试用例时可以有选择地生成那些能够更有效地导致待测目标出错的测试用例。因此,采用这种方法可以较为迅速的发现那些更易引发故障的测试用例,提高了测试用例的效力。同时,由于这种模糊测试方法能够减少生成那些不易引发故障的测试用例的数量,因而这种模糊测试方法效率更高。0009 优选地,上述模糊测试方法中获取的响应信息不仅包括响应内容,还包括响应行为。例如,响应内容可以是针对某一测试用例的响应数据包的类型或内容(包括数据包所包含的字段数目、字段内的内容)。比如,响应内容可以是响应代码。响应。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>14、行为例如包括响应时间(比如以往返延时衡量)、待测目标做出响应所占用的资源(例如,CPU占用率、内存使用率、文件系统利用状况以及存储系统使用情况等等)。0010 根据本发明的一个实施例,上述根据所获取的响应信息,对所述多个测试用例进行分类的步骤优选包括:基于所获取的响应信息,评估相应的测试用例的故障引发等级;将属于同一故障引发等级的测试用例分成一类。更优选地,所述评估测试用例的故障引发等级的步骤包括:对于每一个测试用例,评价与所述测试用例相关的多个响应信息的对引发故障的影响度;将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。采用这种方法来评价测试用例能。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>15、够将更易引发故障的测试用例分在同一分组中,并由此得以分析这些测试用例的共性,从而基于这种共性生成包含这种共性的新的测试用例。比如,如果响应时间超过阈值的各个测试用例的共性在于包含某共同内容,则可进而生成包含该共同内容的新的测试用例。如此方式选择性生成的新测试用例更易引发待测目标故障,并可形成一系列的测试用例用来进行拒绝服务测试。0011 根据本发明又一个实施例,属于同一分类中的多个测试用例的共同特征可以是这些测试用例之间的共同内容、共同结构或共同的行为特征。0012 根据本发明另一个实施例,发送给待测目标的多个初始测试用例是以随机方式,基于变异的方式或基于生成的方式生成的。更为优选地,发送给所。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>16、述待测目标的初始的测试用例反应多种不同类型的非法输入。这样的好处是基于这些初始测试用例的响应信息生成的新的测试用例也可以覆盖多种可能,而不会集中在某一、两种可能的非法输入上。0013 根据本发明另一个实施例,所生成的新测试用例可以发送给所述待测目标,并且重复执行本发明提出的模糊测试方法,从而基于该新测试用例的响应信息,生成另外一些新的测试用例,如此循环。0014 根据本发明另一个实施例,还提出了一种模糊测试装置。该装置包括:发送模块,用于将多个测试用例输入给一个待测目标;响应采集模块,用于获取与所述待测目标对每一个测试用例的响应相关的响应信息;评估分类模块,用于根据所获取的响应信息,对所述多个。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>17、测试用例进行分类;分析模块,用于分析每一个分类中的一个或多个所述测试用例的说 明 书CN 103136098 A3/7页6共同特征;生成模块,基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。其中,优选地,所述响应信息包括:响应内容或响应行为。0015 优选地,所述评估分类模块包括:评估模块,用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;分类模块,将属于同一故障引发等级的测试用例分成一类。更为优选地,所述评估模块包括:第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>18、述测试用例的故障引发等级。其中,属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。0016 根据本发明又一方面,本发明还提出了一种模糊测试的系统,该系统包括如上所述的模糊测试装置。0017 此外,本发明还提出一种计算机可读介质,其存储有能够执行本发明提出的上述模糊测试方法的计算机可读指令。而且,本发明还提出计算机程序,其包括能够执行上述模糊测试方法的计算机可读指令。0018 利用本发明实施例的上述技术方案,通过引入反馈机制来基于先前测试用例的测试效果生成新的测试用例,可以提高所构造的测试用例的效力,并减少生成不必要的测试用例,从而整体上提高了模糊测试的效率并能达到更加有效。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>19、的测试效果。附图说明0019 本发明的目的、特点、特征和优点通过以下结合附图的详细描述将变得更加显而易见。其中:0020 图1示出了根据本发明一实施例的模糊测试方法的流程图;0021 图2示出了根据本发明另一实施例的模糊测试方法的流程图;0022 图3示出了根据本发明一实施例的模糊测试的装置的示意图。具体实施方式0023 考虑到现有基于变异和基于生成的模糊测试方法的缺陷,在本发明实施例中提出了一种带有反馈机制的模糊测试方法。所谓反馈机制是指在模糊测试过程中后续测试用例是在对之前测试用例的测试效果进行分析之后有选择地获得的。由于引入了上述反馈机制,在生成后续测试用例的过程中可以更多地选择那些更可。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>20、能引起待测目标故障的测试用例。这样的优势在于可以提高测试用例的效力和针对性,从而模糊测试过程更加高效。0024 图1示例性地示出了根据本发明一个实施例的模糊测试方法。在图1所示的例子中,待测目标例如为一个协议实现体,其具体例如可以是一个可以运行网络协议实现软件的计算机,用于按照预先约定的网络协议(例如包括消息格式,消息传递行为)进行数据的交互。但在实际应用中,待测目标并不限于此,比如待测目标还可以是文件处理实现体,用户信息交互实现体等等。对于那些基于例如FPGA、DPS实现的设备,待测目标还可以是那些其上可运行相关软件的固件或其他类似的电子设备。0025 在图1中,根据本发明一个实施例的模糊测。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>21、试方法大体包括反馈收集、效果评估、生成新测试用例三个阶段。0026 具体地,反馈收集阶段从步骤S110开始。在步骤S110中,首先将一定数目的初始说 明 书CN 103136098 A4/7页7测试用例(或称为第一测试用例)作为输入发送给待测目标,促使待测目标对这些初始测试用例做出响应。这些初始测试用例可以按照多种方式来获得。在图1所示的实施例中采用了一种最简单的方法,即采用随机方式生成这些初始测试用例。比如,假设待测目标的输入可以是字符串,那么初始测试用例可以是从基本字符中随机选取的若干字符的组合。更为优选地是希望随机生成的初始测试用例是均匀分布的,比如尽可能全面地使用基本字符。以ASCII。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>22、字符为例,ASCII字符大体包括字母、数字和特殊字符三大类。这样,优选地,随机生成的初始测试用例可以包括ASCII中的字母、数字以及特殊字符三个类型的字符。这样的好处是初始测试用例可以较为均匀地包括多种非法输入的可能性,而不会局限于少数几种可能的非法输入。除随机生成方法之外,步骤S110中的初始测试用例还可以采用基于文法(syntax)的生成方法,比如,之前提到的基于变异的方法和基于生成的方法。关于这一部分将在后面结合附图2详细描述。0027 在收到初始测试用例之后,待测目标必然会试图对每一个输入的测试用例做出响应。待测目标的响应方式以及响应结果可能因输入的不同而不同。为此,在图1的步骤S12。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>23、0中,收集与待测目标对每个初始用例做出的响应相关的响应信息。在图1的实例中,响应信息例如是响应内容。比如,响应内容可以是待测目标针对某初始测试用例反馈的响应数据包的类型或内容,该响应数据包中例如可包含响应代码。对于SIP(会话启动协议)而言,响应代码例如可以是表示正常的200OK、表示请求被禁止的403Forbiden,表示网关超时的504 Gateway Timeout等等。响应内容还可以是响应数据包中包含的其他数据内容,比如,响应数据包的内容可以完全是乱码。除了响应内容之外,响应信息还可以包括例如图2所示的响应行为,这将在下面结合图2详细描述。0028 在收集到针对初始测试用例的响应信息之。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>24、后,模糊测试方法进入效果评估阶段,即步骤S130。在步骤S130中,基于所获得的响应信息,可对初始测试用例的测试效果进行分类。比如,一种简单的方法是在步骤S131中根据响应代码的不同,对初始测试用例进行分类。对应于同一响应代码的测试用例分在一组。优选地,还可以根据响应代码的不同,评价相关初始测试用例的故障引发等级(FEL:failure-causing effectiveness level)。具体地,例如,如果响应数据包中响应代码为“200OK”,表明相应的初始测试用例为有效输入,其FEL最低,例如FEL0。如果响应数据包中响应代码包含“Time Out”,表明待测目标可能因无法正常响应而出。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>25、现了死循环,故而其FEL较高,例如FEL5。如果响应数据包中的内容全是乱码,则表明待测目标响应出错,因而相应的初始测试用例的FEL也可以较高,比如FEL也为5。进而,在步骤S135中将具有同一FEL的多个初始测试用例可分在同一组中,从而得到多个包含初始测试用例的分组。0029 继而,模糊测试方法进入新测试用例生成阶段。即,在步骤S140中分析属于同一分组的一个或多个初始测试用例的共同特征。比如,在图1所示的例子中,测试用例的共同特征可以是共同拥有的字符。举例来说,例如同属于FEL5的分组中的测试用例均包括一个相同的非法字符“ ”。然后,在步骤S150中,基于分析出的共同特征,生成新的测试用例(。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>26、第二测试用例),比如,包含非法字符“ ”的测试用例。在步骤S150中,考虑到FEL较高的初始测试用例更易引起待测目标的故障,从而优选基于FEL较高的分组的共同特征生成新的测试用例。这样,所生成的新的测试用例能够更加快速并有效地测试出故障,由此能提高模糊测试的效率和有效性。测试用例的共同特征还可以是例如共同的行为特征或共同说 明 书CN 103136098 A5/7页8结构特征,这将结合图2详细说明。0030 最后,将新生成的测试用例发送给待测目标作为新的输入。这里,发送的新测试用例可被视作下一模糊测试循环中的初始测试用例(或第一测试用例),并继而重复执行步骤S110-S150,从而在新测试循环。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>27、中获得又一批新的测试用例。当然,图1所示的模糊测试循环还可根据实际需要不断重复执行,或者仅执行一次或有限次数。0031 图2示例性地示出了根据本发明另一个实施例的模糊测试方法。在图2所示的实施例中,模糊测试方法从步骤S210开始。在步骤S210中,同样先将一定数目的初始测试用例作为输入发送给待测目标,以使待测目标对这些初始测试用例做出响应。这里,初始测试用例可采用基于文法(syntax)的生成方法,比如,之前提到的基于变异的方法和基于生成的方法。具体地,例如,当采用基于变异的方法来生成初始用例时,考虑到需要使得初始用例较为均匀地覆盖各种可能的非法输入,因而优选选取针对不同的字段类型(例如长度字。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>28、段和普通的内容字段等)进行变异运算,而且还需要选取不同类型的变异算子,以便得到各种类型的初始测试用例。此外,初始测试用例还可以采用基于生成的方法获得。比如,对于那些可以预先获知协议报文格式的情况,可以采用ABNF(扩展的巴科斯范式)表示的协议报,并选取其中具有代表性的错误插入点(“必选项”)来生成测试报文。如此生成的测试用例可以覆盖典型的非法报文。0032 进而,在步骤S220收集与待测目标对每个初始用例的响应相关的响应信息。在图2所示的实例中,响应信息例如是响应行为,比如响应时间或响应过程所占用的资源等等。具体地,通常可以利用往返时延(round trip time)来衡量响应时间,用待测目。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>29、标在响应过程中对CPU的占用率、内存的使用率、文件系统利用率以及存储系统使用情况中的任意一种或多种来衡量做出该响应所占有的资源。在下面这个具体的例子是采用CPU的占用率来衡量响应所占用的资源。更为优选地,针对一个初始测试用例,可以同时收集到一种或多种响应信息,比如所收集的响应信息可以既包括响应内容、也包括响应时间,以及资源占用情况。这样可以为全方位评价测试用例的测试效果提供可能。0033 在收集到针对初始测试用例的响应信息之后,模糊测试方法进入效果评估阶段,即步骤S230。图2示出了一种相对复杂的评估分类方法。具体地,在步骤S231中,对于属于同一测试用例的多种响应信息中的每一个的影响程度(I。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>30、ND:Influence Degree)进行评价。比如,响应时间或往返延时越短IND值越低,响应时间超出平均值则IND值越高,超出阈值则IND更高。再比如,CPU占用率为99以上,IND值最高;CPU占用率为50-90,IND值为中等;CPU占用率为50以下,IND值为低。对于内存占用而言,IND值越高内存占用越高,等等。在步骤S233中,将这些响应信息的影响程度IND进行加权累加,从而得到该测试用例的故障引发等级FEL(见以下公式)。0034 0035 其中,i表示第i种响应信息;INDi表示该响应信息的影响程度;Ki为第i种响应信息对FEL的贡献比率,即加权因子。比如,CPU占用率的加权因。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>31、子Ki可以取0.5,其他影响要素,如响应时间可以取0.3等等。一般而言,其主要作用的因素,权重会较高。如此通过加权求和得到对每个测试用例的FEL。如果FEL超过预定阈值,则表明该测试用例引起待测目标崩溃的可能性越大。在步骤S235中将属于同一等级的FEL的多个初始测试用例分说 明 书CN 103136098 A6/7页9在同一组中,从而得到多个包含初始测试用例的分组。0036 继而,模糊测试方法进入新测试用例生成阶段。即,在步骤S240中分析属于同一分组的一个或多个初始测试用例的共同特征。比如,在图2所示的例子中,测试用例的共同特征可以是例如共同的行为特征或共同的结构特征。对于共同行为特征,比。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>32、如测试用例改变正常消息交互顺序,再比如均为以预定间隔连续重复发送相同数据包,或均为先发送长数据包再发送短数据包,等等。此外,测试用例的共同结构特征比如是均包括1个头字段和多个数据字段,其中数据字段均为第一个数据字段的重复,再比如均包括1个头字段和两个数据字段,其中一个数据字段的长度超出预定值,等等。在步骤S250中,优选地,选择加权得到的FEL较高的分组的共同特征,并基于这些共同特征生成具有这些共同特征的新的测试用例。最后,将新生成的测试用例发送给待测目标作为新的输入。由此,所生成的一系列新的测试用例更易于引发待测目标出现故障,例如使得待测目标达到拒绝服务(DoS)状态,从而实现DoS测试。0。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>33、037 利用本发明实施例的模糊测试方法可以提供一种较为有效的方式来生成足以引起故障的测试用例。而且,优选地,本发明提出的模糊测试方法因无需获知文件格式或协议,而可以应用于多种不同的网络协议实现。这使其特别适于各种各样的网络协议实现的测试工作。0038 本发明还提供了一种机器(如计算机)可读的存储介质,存储用于使一机器执行如本文所述的模糊测试方法的指令。0039 本发明还提供一种计算机程序,其包含可以执行所述模糊测试方法的计算机可读指令。0040 具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>34、MPU)读出并执行存储在存储介质中的程序代码。0041 在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。0042 用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。0043 此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>35、际操作,从而实现上述实施例中任意一项实施例的功能。0044 图3示出了根据本发明一实施例的模糊测试的装置300的示意图。如图3,该实施例的装置300包括:发送模块310,用于将多个测试用例输入给一个待测目标10;响应采集模块320,用于获取与所述待测目标10对每一个测试用例做出响应相关的响应信息;评估分类模块330,用于根据所获取的响应信息,对所述多个测试用例进行分类;分析模块340,用于分析每一个分类中的一个或多个所述测试用例的共同特征;生成模块350,基于所述共同特征,生成包含所述共同特征的一个或多个新测试用例。其中,响应采集模块可以设置在待测目标处、发送模块处、或待测目标与发送模块之间,。</p> <p style='height:0px;padding:0;margin:0;overflow:hidden'>36、用于截取待测目标发送给发送模块的响应数据包,或者根据需要通过与待测目标建立连接来查询待测目标的资源占用情况说 明 书CN 103136098 A7/7页10等等。0045 其中,所述响应信息包括:响应内容或响应行为。优选地,同一分类中的测试用例之间的共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。0046 在图3中,评估分类模块330包括:评估模块331,用于基于所获取的响应信息,评估相应的测试用例的故障引发等级;和分类模块335,将属于同一故障引发等级的测试用例分成一类。优选地,评估模块331包括:第一模块,用于评价与所述测试用例相关的多个响应信息的对引发故障的影响度;第二模块,用于将针对同一个测试用例的多个响应信息的影响度加权累加,从而得到针对所述测试用例的故障引发等级。优选地,根据权利要求11所述的装置,其中,所述共同特征包括:属于同一分类的所述多个测试用例之间的共同内容、共同结构或共同的行为特征。0047 本领域技术人员应当理解,模糊测试的装置可以利用软件、硬件或者软硬件结合的方式来实现。0048 本领域技术人员应当理解,上面所公开的各个实施例可以在不偏离发明实质的情况下做出各种改变和修改,这些改变和修改都应当落在本发明的保护范围之内。因此,本发明的保护范围应当由所附的权利要求书来限定。说 明 书CN 103136098 A10。</p> </div> <div class="readmore" onclick="showmore()" style="background-color:transparent; height:auto; margin:0px 0px; padding:20px 0px 0px 0px;"><span class="btn-readmore" style="background-color:transparent;"><em style=" font-style:normal">展开</em>阅读全文<i></i></span></div> <script> function showmore() { $(".readmore").hide(); $(".detail-article").css({ "height":"auto", "overflow": "hidden" }); } $(document).ready(function() { var dh = $(".detail-article").height(); if(dh >100) { $(".detail-article").css({ "height":"100px", "overflow": "hidden" }); } else { $(".readmore").hide(); } }); </script> </div> <script> var defaultShowPage = parseInt("3"); var id = "1574279"; var total_page = "13"; var mfull = false; var mshow = false; function DownLoad() { window.location.href='https://m.zhuanlichaxun.net/d-1574279.html'; } function relate() { var reltop = $('#relate').offset().top-50; $("html,body").animate({ scrollTop: reltop }, 500); } </script> <script> var pre = "https://img.zhuanlichaxun.net/fileroot2/2018-6/16/bde4e0b4-e906-46ec-bcaa-655d3ce13fed/bde4e0b4-e906-46ec-bcaa-655d3ce13fed"; var freepage = parseInt('4'); var total_c = parseInt('13'); var start = defaultShowPage; var adcount = 0; var adindex = 0; var adType_list = ";0;1;2;3;"; var end = start; function ShowSvg() { end = start + defaultShowPage; if (end > freepage) end = freepage; for (var i = start; i < end; i++) { var imgurl = pre + (i + 1) + '.gif'; var html = "<img src='" + imgurl + "' alt=\"模糊测试的方法、装置和系统.pdf_第" + (i + 1) + "页\" width='100%'/>"; $("#page").append("<div class='page'>" + html + "</div>"); $("#page").append("<div class='pageSize'>第" + (i + 1) + "页 / 共" + total_c + "页</div>"); if(adcount > 0 && adType_list.indexOf(";"+(i+1)+";")>-1) { if(adindex > (adcount-1)) adindex = 0; $("#page").append("<div class='pagead' id='addiv"+(i + 1)+"'></div>"); document.getElementById("addiv"+(i + 1)+"").innerHTML =document.getElementById("adpre" + adindex).outerHTML; adindex += 1; } } start = end; if (start > (freepage - 1)) { if (start < total_c) { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页,到这儿已超出免费预览范围,如果喜欢就下载吧!"); } else { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页全部预览完了,如果喜欢就下载吧!"); } } } //$(document).ready(function () { // ShowSvg(); //}); </script> <div id="relate" class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">相关资源</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="搜索引导方法和搜索引擎.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573280.html" title="搜索引导方法和搜索引擎.pdf">搜索引导方法和搜索引擎.pdf</a> </li><li><img alt="一种基于有限元软件的孔边三维裂纹建模方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573281.html" title="一种基于有限元软件的孔边三维裂纹建模方法.pdf">一种基于有限元软件的孔边三维裂纹建模方法.pdf</a> </li><li><img alt="一种高空风力发电装置.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573282.html" title="一种高空风力发电装置.pdf">一种高空风力发电装置.pdf</a> </li><li><img alt="梯度挤扩装置.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573283.html" title="梯度挤扩装置.pdf">梯度挤扩装置.pdf</a> </li><li><img alt="一种降噪式排烟管.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573284.html" title="一种降噪式排烟管.pdf">一种降噪式排烟管.pdf</a> </li><li><img alt="一种基于物品识别的多用户人机互动的方法、装置及系统.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573285.html" title="一种基于物品识别的多用户人机互动的方法、装置及系统.pdf">一种基于物品识别的多用户人机互动的方法、装置及系统.pdf</a> </li><li><img alt="内附干燥剂贴附层的双锥回转炒药机.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573286.html" title="内附干燥剂贴附层的双锥回转炒药机.pdf">内附干燥剂贴附层的双锥回转炒药机.pdf</a> </li><li><img alt="利用超支化聚乙烯制备石墨烯有机分散液的方法.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573287.html" title="利用超支化聚乙烯制备石墨烯有机分散液的方法.pdf">利用超支化聚乙烯制备石墨烯有机分散液的方法.pdf</a> </li><li><img alt="复合材料枕木.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573288.html" title="复合材料枕木.pdf">复合材料枕木.pdf</a> </li><li><img alt="变压器专用强油循环器.pdf" class="pdf" src="/Images/s.gif" /><a target="_parent" href="https://m.zhuanlichaxun.net/p-1573289.html" title="变压器专用强油循环器.pdf">变压器专用强油循环器.pdf</a> </li> </div> </div> <div class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">猜你喜欢</div> <div id="relatelist" style="padding-left:5px;"> <li><img alt="餐厅计算机服务系统.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268176.html" target="_parent" title="餐厅计算机服务系统.pdf">餐厅计算机服务系统.pdf</a></li> <li><img alt="制备杀菌化合物的方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268177.html" target="_parent" title="制备杀菌化合物的方法.pdf">制备杀菌化合物的方法.pdf</a></li> <li><img alt="标记蛋白质的放射性卤素取代的乙烯基轭合物.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268178.html" target="_parent" title="标记蛋白质的放射性卤素取代的乙烯基轭合物.pdf">标记蛋白质的放射性卤素取代的乙烯基轭合物.pdf</a></li> <li><img alt="天然工程速食米片的制法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268179.html" target="_parent" title="天然工程速食米片的制法.pdf">天然工程速食米片的制法.pdf</a></li> <li><img alt="人参整株保鲜技术.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268180.html" target="_parent" title="人参整株保鲜技术.pdf">人参整株保鲜技术.pdf</a></li> <li><img alt="姜汁制备方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268181.html" target="_parent" title="姜汁制备方法.pdf">姜汁制备方法.pdf</a></li> <li><img alt="利用动物毛生产角蛋白及其提纯方法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268182.html" target="_parent" title="利用动物毛生产角蛋白及其提纯方法.pdf">利用动物毛生产角蛋白及其提纯方法.pdf</a></li> <li><img alt="速效蚊敌.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268183.html" target="_parent" title="速效蚊敌.pdf">速效蚊敌.pdf</a></li> <li><img alt="捕虫粘纸及其制法.pdf" class="pdf" src="/Images/s.gif" /> <a href="https://m.zhuanlichaxun.net/p-268184.html" target="_parent" title="捕虫粘纸及其制法.pdf">捕虫粘纸及其制法.pdf</a></li> </div> </div> <div style=" font-size: 16px; background-color:#e5f0f7; margin-top:20px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;"> 相关搜索</div> <div class="widget-box pt0" style="border: none; padding:0px 5px;"> <ul class="taglist--inline multi"> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%a8%a1%e7%b3%8a">模糊</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%b5%8b%e8%af%95">测试</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e6%96%b9%e6%b3%95">方法</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e8%a3%85%e7%bd%ae">装置</a></li> <li class="tagPopup"><a class="tag tagsearch" rel="nofollow" href="https://m.zhuanlichaxun.net/search.html?q=%e7%b3%bb%e7%bb%9f">系统</a></li> </ul> </div> <br /> <div > 当前位置:<a href="https://m.zhuanlichaxun.net/">首页</a> &gt; <a href="https://m.zhuanlichaxun.net/c-00007.html">物理</a><span> &gt; </span><a href="https://m.zhuanlichaxun.net/c-0000700006.html">计算;推算;计数</a> </div> <br /> <br /> <span id="ctl00_LabelScript"></span> <script src="https://m.zhuanlichaxun.net/JS/bootstrap-collapse.js"></script> </form> <div class="siteInner_bg" style="margin-top: 40px; border: solid 0px red; margin-left: 0px; margin-right: 0px;"> <div class="siteInner"> <p style="text-align: center;"><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">copyright@ 2017-2020 zhuanlichaxun.net网站版权所有</span><br style="text-align: center; white-space: normal; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 12px; line-height: 20px;"/><span style="font-size: 14px; text-align: center; color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; line-height: 20px;">经营许可证编号:<a href="https://beian.miit.gov.cn/" target="_self" style="font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center; white-space: normal;">粤ICP备2021068784号-1</a><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &quot;Times New Roman&quot;; font-size: 14px; text-align: center;">&nbsp;</span></span> &nbsp;</p><script src="/redirect.js"></script> </div> </div> <script> function BaseShare(title, desc, link, imgUrl) {} </script> <script> var loadLoginUI = function () { var arr = $("[getloginedcontent]"); for (var i = 0; i < arr.length; i++) { (function (index) { var url = arr.eq(index).attr("getloginedcontent"); $.get(url + "?t=" + (new Date()).valueOf(), function (d) { try { arr.eq(index).empty().html(d); } catch (e) { } try { arr.html(d); } catch (e) { } }); })(i); } } $(document).ready(function () { loadLoginUI(); }); </script> <script src="https://m.zhuanlichaxun.net/JS/jquery.lazyload.js"></script> <script charset="utf-8"> $("img.lazys").lazyload({ threshold: 200, effect: "fadeIn" }); </script> </body> </html>