CN114036051A - 测试方法、装置、设备以及存储介质 - Google Patents

测试方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN114036051A
CN114036051A CN202111339608.3A CN202111339608A CN114036051A CN 114036051 A CN114036051 A CN 114036051A CN 202111339608 A CN202111339608 A CN 202111339608A CN 114036051 A CN114036051 A CN 114036051A
Authority
CN
China
Prior art keywords
test case
original test
determining
mutation
variation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111339608.3A
Other languages
English (en)
Inventor
王娜
汪世涛
朱华亮
熊冰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202111339608.3A priority Critical patent/CN114036051A/zh
Publication of CN114036051A publication Critical patent/CN114036051A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了测试方法、装置、设备以及存储介质,涉及软件测试技术领域。具体实现方案为:获取原始测试用例;确定原始测试用例的梯度信息;根据梯度信息,对原始测试用例进行变异,确定变异测试用例;利用变异测试用例进行测试。本实现方式可以提高测试的准确率和效率。

Description

测试方法、装置、设备以及存储介质
技术领域
本公开涉及计算机技术领域,具体涉及软件测试技术领域,尤其涉及测试方法、装置、设备以及存储介质。
背景技术
模糊测试已经成为发现软件漏洞的实时标准技术。但是,即便是目前最先进的模糊其也不能很有效地找到难以触发的软件错误。现有的方法对特定软件结构的输入效率较低,不利于软件安全漏洞检测。
发明内容
提供了一种测试方法、装置、设备以及存储介质。
根据第一方面,提供了一种测试方法,包括:获取原始测试用例;确定原始测试用例的梯度信息;根据梯度信息,对原始测试用例进行变异,确定变异测试用例;利用变异测试用例进行测试。
根据第二方面,提供了一种测试装置,包括:获取单元,被配置成获取原始测试用例;确定单元,被配置成确定原始测试用例的梯度信息;变异单元,被配置成根据梯度信息,对原始测试用例进行变异,确定变异测试用例;测试单元,被配置成利用变异测试用例进行测试。
根据第三方面,提供了一种测试电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,上述指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面所描述的方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,上述计算机指令用于使计算机执行如第一方面所描述的方法。
根据第五方面,一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现如第一方面所描述的方法。
根据本公开的技术可以生成有效的测试用例,从而能够提高软件的漏洞的检测效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的测试方法的一个实施例的流程图;
图3是根据本公开的测试方法的一个应用场景的示意图;
图4是根据本公开的测试方法的另一个实施例的流程图;
图5是根据本公开的测试装置的一个实施例的结构示意图;
图6是用来实现本公开实施例的测试方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的测试方法或测试装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如代码编写类应用、代码测试类应用等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、车载电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上提供语言模型的后台服务器。后台服务器可以利用训练样本对初始语言模型进行训练,得到目标语言模型,并将目标语言模型反馈给终端设备101、102、103。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开实施例所提供的测试方法一般由服务器105执行。相应地,测试装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本公开的测试方法的一个实施例的流程200。本实施例的测试方法,包括以下步骤:
步骤201,获取原始测试用例。
本实施例中,测试方法的执行主体可以获取原始测试用例。这里,原始测试用例可以是待测试模块或待测试软件的待处理数据。在一些具体的应用中,上述待测试模块可以是推荐系统的入口模块GR(Global Recommend)。推荐系统可以在大数据或AI领域的应用场景下,通过建立人和物品的关联关系,围绕数据、算法、系统为核心,将海量的数据信息,利用推荐系统的算法(譬如基于协同过滤的算法和机器学习算法等),应用到对应的召回策略和排序策略中,实现提供给用户个性化的推荐过程。上述入口模块GR可以获取各种类型的数据。这些数据就可以作为入口模块GR的原始测试用例。
步骤202,确定原始测试用例的梯度信息。
执行主体在获取到原始测试用例后,可以利用各种方式,计算原始测试用例的梯度信息。例如,可以利用预先训练的神经网络计算原始测试用例的梯度信息。或者,利用梯度信息的计算公式来计算梯度信息。
步骤203,根据梯度信息,对原始测试用例进行变异,确定变异测试用例。
在确定梯度信息后,可以根据梯度信息对原始测试用例进行变异。具体的,执行主体可以根据梯度信息,确定出梯度下降最快的方向和梯度上升最快的方向。然后,根据上述方向确定出原始测试用例中的变异位置。在上述变异位置处进行变异,得到变异测试用例。本实施例中,通过梯度信息指导得到的变异测试用例可以理解为有效的测试用例,其能够帮助检测到待测试模块的漏洞。
步骤204,利用变异测试用例进行测试。
执行主体在得到变异测试用例后,可以利用变异测试用例对待测试模块进行测试。
继续参见图3,其示出了根据本公开的测试方法的一个应用场景的示意图。在图3的应用场景中,用户通过终端301将推荐系统的入口模块的待处理数据上传给服务器302。服务器302根据上述待处理数据生成变异测试用例后发送给终端301。终端301利用上述变异测试用例对入口模块进行测试,以发现入口模块的漏洞。通过本公开的测试方法测试完成的入口模块可以更好的对各类型的数据进行处理,从而能够为推荐系统的底层算法(例如机器学习算法)提供更好的数据基础,进一步能够提高推荐系统推送信息的准确率。
本公开的上述实施例提供的测试方法,可以提高变异测试用例的有效性,提高测试的效率和准确性。
继续参见图4,其示出了根据本公开的测试方法的另一个实施例的流程400。如图4所示,本实施例的方法可以包括以下步骤:
步骤401,获取原始测试用例。
步骤402,利用预先训练好的神经网络对原始测试用例进行梯度计算,生成梯度信息。
本实施例中,执行主体可以利用利用预先训练好的神经网络对原始测试用例进行梯度计算,生成梯度信息。上述预先训练好的神经网络用于表征测试用例与覆盖路径之间的对应关系。执行主体可以加载神经网络的权重信息。
在神经网络的输入集中,设置需参与梯度指导优化的数量(从参与训练的样本数量all_num,设置需参与梯度计算的样本数量case_num,这个数量可以同时设置为每个样本需调整的边信息数量),随机抽取对应数量的输入作为待进行梯度搜索指导且变异的原始语料信息,将这部分信息作为后续参与梯度搜索计算的输入x张量;同时我们对神经网络的全连接层的神经元,遍历相关抽样输入的索引,提取对应抽样输入的边覆盖信息,作为参与梯度搜索计算的y张量。
假设神经网络针对输入和输出的映射关系表达式为:y=f(θ,x)。假设f:{0x00,0x01,…,0xff}m→{0,1}n,即表示输入信息为固定的m维度的字节序列,对应大小为n维的输出边覆盖信息关系。其中θ为迭代梯度计算更新的权值参数。这个参数函数y,即在得到一个θ,使其最小化定义的损失函数。
如上面所述,需要对输入所覆盖的边信息,引入梯度搜索计算,通过梯度值,实现找到最适合变异的输入字节位置。因此在本技术的实现依据前提,根据参与训练的样本数量all_num,设置需参与梯度计算的样本数量case_num,这个数量可以同时设置为每个样本需调整的边信息数量。
在上述前提条件设置完成后,根据设置的数量,随机筛选对应数量的样本,将每个样本所覆盖所有边信息(神经网络倒数第二层全连接层)中随机筛选对应数量的边信息。假设需对某个样本x的每个字节序列对应其某条边yi,进行求解梯度,即需计算yi对于x的偏导。因此可将这样的求解关系,定义为
Figure BDA0003351310710000051
这里的θ为迭代梯度计算更新的权重值。其中梯度G的维度与输入x的维度相同,都是字节序列。
此时,完成了样本输入字节序列对某个输出神经元的梯度张量信息后,在此基础上,需要对梯度张量的值进行从大到小的排序,以及对排序后的梯度张量的值提取符号方向,从而分别获得排序后的索引张量、符号张量。将这两部分信息与对应的输入字节序列流,组合生成用于指导变异的梯度信息。
步骤403,对于每个原始测试用例,根据该原始测试用例的梯度信息,确定该原始测试用例中的变异位置和变异步长。
在确定每个原始测试用例的梯度信息后,可以进一步确定该原始测试用例中的变异位置和变异步长。具体的,执行主体可以将梯度变化较大的位置,作为其变异更容易产生路径的变化的位置。由此有效减少了对输入的搜索空间范围,提升输入生成的有效性和效率性。同时当变异的方向和梯度的方向相同时,可以更可能触发新的代码块。
在确定变异步长时,可以随机生成一个属于预设范围内的数值作为变异步长。或者,根据原始测试用例的长度,对长度进行计算得到一个数值,将上述数值作为变异步长。
在本实施例的一些可选的实现方式中,执行主体可以通过以下步骤确定变异位置和变异步长:根据该原始测试用例的梯度信息,确定梯度信息变化范围大于预设阈值的位置为所述变异位置;根据该原始测试用例的长度,确定所述变异步长。
本实现方式中,执行主体可以将梯度信息变化范围大于预设阈值的位置作为变异位置。然后,根据每个原始测试用例的长度,确定变异步长。
在具体应用时,执行主体可以利用算法确定。首先,执行主体可以根据输入字节的长度确定变异位置iterations的数量。譬如最大长度为926,则变异位置的数量iter考虑设置为10,则变异的步长索引num_index为{0,2,4,8,16,32,64,128,256,512,1024}。
在分别确定基于up-direction和基于low-direction方向性的变异步长之后,开始进入分方向变异。基于梯度指导变异的整体过程描述如下:
首先,由最大输入字节数来确定iterations的数量,假设输入最大字节数为926,则确定iterations所在的最大设定值为1024,即2^10,则iterations设为10。
其次,根据iterations数量且遍历,假设每次遍历为iter,确定计算每次iterations所需变异的字节索引范围[low_index,up_index],其中low_index=num_index[iter],up_index=num_index[iter+1]。
然后,解析之前生成的梯度信息,获取排序后的梯度索引张量locations和符号张量sign。顺序遍历索引张量里的每个索引,找到对应梯度的符号。根据符号的方向值(1或者-1)结合(low_index和up_index)来计算当前输入值的各方向上的变异步长范围,即low_step和up_step。
最后,根据确定的两个方向步长low_step和up_step分别结合索引范围(low_index,up_index),实现两个方向上变异:即将对应索引的输入做sign值计算。并且保证计算出的新输入的数据范围控制在[0~255]
步骤404,根据变异位置和变异步长,对该原始测试用例进行变异,确定变异测试用例。
执行主体在确定变异位置和变异步长后,可以在变异位置处基于编译成步长进行变异。具体的,在变异时,在0~255的范围内,用一个小的变异目标开始,输入测试用例的生成过程,并且指数增加要变异的目标字节数,以有效覆盖输入空间。在变异过程中,变异所基于的梯度是各个方向的梯度。就是说变异会从每次随机选择一个输入开始,计算各个输入字节在该神经元上的梯度,然后根据排序,以2的各个次方分组按照组的变异。
在一些具体的应用中,执行主体可以利用fuzz引擎(Fuzzers)进行变异。业界Fuzzers有两种类型:Generation-based和Mutated-Based。其中Generation-based的特点在于需要基于输入的结构类型来定义产生对应数据类型的随机数据,(譬如通过目标协议或者文件格式建模的方法,从零开始产生测试用例,没有先前的状态)。而Mutated-Based的特点在于需要基于一些合法的协议规则,从已经存在的数据样本或者存在的状态进行构建变异出新的测试数据,这种方式是非常简单且直接的方式。
本实施例中,可以采用Mutated-Based方式,基于进化算法的思想,通过在代码的路径边信息以指令集方式插入相关用于统计覆盖情况的汇编语句,实现对输入所覆盖的边信息采集,用于观察生成的输入对代码覆盖路径的变化。根据采集到的边覆盖信息情况,有针对性地生成的输入更新至初始种群中,用于下一轮的变异生成。
步骤405,利用变异测试用例进行测试。
在生成变异测试用例后,执行主体可以利用变异测试用例进行测试。具体的,执行主体可以将变异测试用例输入上述神经网络中,以确定上述变异测试用例的覆盖路径。
在本实施例的一些可选的实现方式中,上述神经网络可以通过以下步骤训练得到:获取原始测试用例集合;确定原始测试用例集合中各原始测试用例的覆盖路径;根据各原始测试用例以及对应的覆盖路径,生成训练样本集合;利用训练样本集合对初始神经网络进行训练,得到训练好的神经网络。
本实现方式中,执行主体可以首先获取原始测试用例集合。这些原始测试用例集合可以是待测试模块的待处理数据。然后,执行主体可以确定原始测试用例集合中各原始测试用例的覆盖路径。具体的,执行主体可以以序列的形式表达每个原始测试用例的覆盖路径。在确定覆盖路径时,可以通过预先在待测试模块中插桩的方式来确定是否覆盖到某条路径。所谓插桩,即在被测程序中插入探针,然后通过探针的执行来获取程序的控制流和数据流信息,根据获取的信息统计路径覆盖率。
根据探针插入的时间,可以分为目标代码插桩和源代码插桩。本实现方式可以采用对源代码插桩的方式,该类插桩需要基于对词法和语法的分析基础上,保证对源文件的插桩能够达到很高的准确度和针对性。但这类插桩由于需要接触到源代码,使得插桩的工作量较大且插桩后的资源占用率相对会较高。并且随着编码语言和版本的不同可能会需要做一定的修改。
在本实施例的一些可选的实现方式中,执行主体可以通过以下步骤确定各原始测试用例的覆盖路径:通过汇编指令集的方式在目标源代码中插入探针,通过执行所述探针,确定覆盖路径。
本实现方式中,考虑到提升插桩性能以及针对性方面节省插桩所消耗的资源,本实现方式采用的插桩技术,为通过汇编指令集的方式插入相关探针,修改汇编器。同时可以按需指定所需插件的代码文件(即目标源代码),而不是对代码所有文件进行插桩,从而提升整体效率。
在确定各原始测试用例的覆盖路径后,执行主体可以根据各原始测试用例以及对应的覆盖路径,生成训练样本集合。具体的,执行主体可以将各原始测试用例作为训练样本的输入,将对应的覆盖路径作为训练样本的输出。利用训练样本集合对初始神经网络进行训练,得到训练好的神经网络。
在一些具体的应用中,上述神经网络可以为基于双隐层前馈全连接神经网络。前馈神经网络架构可以实现梯度高效计算且可以有效的训练网络。从对模糊测试应用的高效性来考虑,该网络架构可以直接从原始的字节级别的输入中学习,无需任何输入结构的先验知识,相比于其他神经网络,譬如RNN(循环神经网络),无论是在训练还是测试环节,性能上都占有一定的优势。因此,前馈神经网络架构更适用于在模糊测试领域上的应用。
本实施例应用的神经网络结构为四层:除了输入层以外,构建了两层隐藏层及对应的激活层。理论上,层数越深,模型拟合的效果越好,但实际上更深的层数可能会带来过拟合问题,同时也会增加训练的难度。使模型难以收敛。由于我们的输入数据具有分散性特性,会面临线性不可分的情况,因此需考虑引入隐藏层,通过非线性的方式解决,从而实现数据的拟合。
在本实施例的一些可选的实现方式中,执行主体在生成训练样本可以对各原始测试用例进行以下步骤的处理:分别确定各原始测试用例的第一字节长度以及各覆盖路径的第二字节长度;补充各原始测试用例至第一字节长度中的最大值以及补充各覆盖路径的序列至第二字节长度中的最大值;对补充后的各原始测试用例进行归一化;将归一化后的各原始测试用例以及补充后的覆盖路径作为训练样本集合。
本实现方式中,原始测试用例和覆盖路径这两个信息以二维数组的形式构建成训练样本。假设样本数量为600,其中样本的最大字节长度为2000,且所有样本去重后的最大边覆盖数量为76,则训练样本集合中输入的数组形状为600*2000,训练样本集合中输出的数组形状为600*76。
在补充后,执行主体还可以对补充后的各原始测试用例进行归一化,方便表达。然后得到各训练样本集合。
本公开的上述实施例中,对于Mutated-Based Fuzzer主要做了两方面的改造:①插桩层面:考虑到整体效率问题,提出了只对关注的代码文件选择性插桩。②种群更新层面:由于原始Mutated-Based Fuzzer一般会对覆盖效果比较好的新输入,更新到新的种群中。在下一轮变异时,只选取新的种群输入进入变异。对于前期采用的前馈神经网络,会依赖种群信息进行训练,这种方式虽然有助于训练的模型具备泛化性以及效率上的提升,但是如果只对新的数据进行增量训练,会忘记先前从旧数据中学到的信息,为了避免这样的遗忘,以边缘覆盖维度过滤种群信息,实现在可以保留触发到新分支的输入同时,也可以对旧数据进行重新训练。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种测试装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的测试装置500包括:获取单元501、确定单元502、变异单元503和测试单元504。
获取单元501,被配置成获取原始测试用例。
确定单元502,被配置成确定原始测试用例的梯度信息。
变异单元503,被配置成根据梯度信息,对原始测试用例进行变异,确定变异测试用例。
测试单元504,被配置成利用变异测试用例进行测试。
在本实施例的一些可选的实现方式中,确定单元502可以进一步被配置成:利用预先训练好的神经网络对原始测试用例进行梯度计算,生成梯度信息。
在本实施例的一些可选的实现方式中,装置500还可以包括训练单元,被配置成通过以下步骤训练得到神经网络:获取原始测试用例集合;确定原始测试用例集合中各原始测试用例的覆盖路径;根据各原始测试用例以及对应的覆盖路径,生成训练样本集合;利用训练样本集合对初始神经网络进行训练,得到训练好的神经网络。
在本实施例的一些可选的实现方式中,训练单元还可以进一步被配置成:通过汇编指令集的方式在目标源代码中插入探针,通过执行探针,确定覆盖路径。
在本实施例的一些可选的实现方式中,训练单元还可以进一步被配置成:分别确定各原始测试用例的第一字节长度以及各覆盖路径的第二字节长度;补充各原始测试用例至第一字节长度中的最大值以及补充各覆盖路径的序列至第二字节长度中的最大值;对补充后的各原始测试用例进行归一化;将归一化后的各原始测试用例以及补充后的覆盖路径作为训练样本集合。
在本实施例的一些可选的实现方式中,变异单元503可以进一步被配置成:对于每个原始测试用例,根据该原始测试用例的梯度信息,确定该原始测试用例中的变异位置和变异步长;根据变异位置和变异步长,对该原始测试用例进行变异,确定变异测试用例。
在本实施例的一些可选的实现方式中,变异单元503可以进一步被配置成:根据该原始测试用例的梯度信息,确定梯度信息变化范围大于预设阈值的位置为变异位置;根据该原始测试用例的长度,确定变异步长。
应当理解,测试装置500中记载的单元501至单元504分别与参考图2中描述的方法中的各个步骤相对应。由此,上文针对测试方法描述的操作和特征同样适用于装置500及其中包含的单元,在此不再赘述。
本公开的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了根据本公开实施例的执行测试方法的电子设备600的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储器608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储电子设备600操作所需的各种程序和数据。处理器601、ROM 602以及RAM 603通过总线604彼此相连。I/O接口(输入/输出接口)605也连接至总线604。
电子设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储器608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许电子设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器601可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器601执行上文所描述的各个方法和处理,例如测试方法。例如,在一些实施例中,测试方法可被实现为计算机软件程序,其被有形地包含于机器可读存储介质,例如存储器608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到电子设备600上。当计算机程序加载到RAM 603并由处理器601执行时,可以执行上文描述的测试方法的一个或多个步骤。备选地,在其他实施例中,处理器601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行测试方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。上述程序代码可以封装成计算机程序产品。这些程序代码或计算机程序产品可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器601执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读存储介质可以是机器可读信号存储介质或机器可读存储介质。机器可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学存储设备、磁存储设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(“Virtual Private Server”,或简称“VPS”)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以是分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开的保护范围之内。

Claims (17)

1.一种测试方法,包括:
获取原始测试用例;
确定所述原始测试用例的梯度信息;
根据所述梯度信息,对所述原始测试用例进行变异,确定变异测试用例;
利用所述变异测试用例进行测试。
2.根据权利要求1所述的方法,其中,所述确定所述原始测试用例的梯度信息,包括:
利用预先训练好的神经网络对所述原始测试用例进行梯度计算,生成梯度信息。
3.根据权利要求2所述的方法,其中,所述神经网络通过以下步骤训练得到:
获取原始测试用例集合;
确定所述原始测试用例集合中各原始测试用例的覆盖路径;
根据各原始测试用例以及对应的覆盖路径,生成训练样本集合;
利用所述训练样本集合对初始神经网络进行训练,得到训练好的神经网络。
4.根据权利要求3所述的方法,其中,所述确定所述原始测试用例集合中各原始测试用例的覆盖路径,包括:
通过汇编指令集的方式在目标源代码中插入探针,通过执行所述探针,确定所述覆盖路径。
5.根据权利要求3所述的方法,其中,所述根据各原始测试用例以及对应的覆盖路径,生成训练样本集合,包括:
分别确定各原始测试用例的第一字节长度以及各覆盖路径的第二字节长度;
补充各原始测试用例至第一字节长度中的最大值以及补充各覆盖路径的序列至第二字节长度中的最大值;
对补充后的各原始测试用例进行归一化;
将归一化后的各原始测试用例以及补充后的覆盖路径作为训练样本集合。
6.根据权利要求1所述的方法,其中,所述根据所述梯度信息,对所述原始测试用例进行变异,确定变异测试用例,包括:
对于每个原始测试用例,根据该原始测试用例的梯度信息,确定该原始测试用例中的变异位置和变异步长;
根据所述变异位置和所述变异步长,对该原始测试用例进行变异,确定变异测试用例。
7.根据权利要求6所述的方法,其中,所述根据该原始测试用例的梯度信息,确定该原始测试用例中的变异位置和变异步长,包括:
根据该原始测试用例的梯度信息,确定梯度信息变化范围大于预设阈值的位置为所述变异位置;
根据该原始测试用例的长度,确定所述变异步长。
8.一种测试装置,包括:
获取单元,被配置成获取原始测试用例;
确定单元,被配置成确定所述原始测试用例的梯度信息;
变异单元,被配置成根据所述梯度信息,对所述原始测试用例进行变异,确定变异测试用例;
测试单元,被配置成利用所述变异测试用例进行测试。
9.根据权利要求8所述的装置,其中,所述确定单元进一步被配置成:
利用预先训练好的神经网络对所述原始测试用例进行梯度计算,生成梯度信息。
10.根据权利要求9所述的装置,其中,所述装置还包括训练单元,被配置成通过以下步骤训练得到神经网络:
获取原始测试用例集合;
确定所述原始测试用例集合中各原始测试用例的覆盖路径;
根据各原始测试用例以及对应的覆盖路径,生成训练样本集合;
利用所述训练样本集合对初始神经网络进行训练,得到训练好的神经网络。
11.根据权利要求9所述的装置,其中,所述训练单元进一步被配置成:
通过汇编指令集的方式在目标源代码中插入探针,通过执行所述探针,确定所述覆盖路径。
12.根据权利要求9所述的装置,其中,所述训练单元进一步被配置成:
分别确定各原始测试用例的第一字节长度以及各覆盖路径的第二字节长度;
补充各原始测试用例至第一字节长度中的最大值以及补充各覆盖路径的序列至第二字节长度中的最大值;
对补充后的各原始测试用例进行归一化;
将归一化后的各原始测试用例以及补充后的覆盖路径作为训练样本集合。
13.根据权利要求8所述的装置,其中,所述变异单元进一步被配置成:
对于每个原始测试用例,根据该原始测试用例的梯度信息,确定该原始测试用例中的变异位置和变异步长;
根据所述变异位置和所述变异步长,对该原始测试用例进行变异,确定变异测试用例。
14.根据权利要求13所述的装置,其中,所述变异单元进一步被配置成:
根据该原始测试用例的梯度信息,确定梯度信息变化范围大于预设阈值的位置为所述变异位置;
根据该原始测试用例的长度,确定所述变异步长。
15.一种测试设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
CN202111339608.3A 2021-11-12 2021-11-12 测试方法、装置、设备以及存储介质 Pending CN114036051A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111339608.3A CN114036051A (zh) 2021-11-12 2021-11-12 测试方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111339608.3A CN114036051A (zh) 2021-11-12 2021-11-12 测试方法、装置、设备以及存储介质

Publications (1)

Publication Number Publication Date
CN114036051A true CN114036051A (zh) 2022-02-11

Family

ID=80144192

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111339608.3A Pending CN114036051A (zh) 2021-11-12 2021-11-12 测试方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN114036051A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114928482A (zh) * 2022-05-13 2022-08-19 北京百度网讯科技有限公司 软件的网络通信功能的测试方法和装置
CN115905021A (zh) * 2022-12-30 2023-04-04 长春吉大正元信息技术股份有限公司 一种模糊测试方法、装置、电子设备以及存储介质
CN116185843A (zh) * 2023-01-16 2023-05-30 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114928482A (zh) * 2022-05-13 2022-08-19 北京百度网讯科技有限公司 软件的网络通信功能的测试方法和装置
CN115905021A (zh) * 2022-12-30 2023-04-04 长春吉大正元信息技术股份有限公司 一种模糊测试方法、装置、电子设备以及存储介质
CN115905021B (zh) * 2022-12-30 2023-11-28 长春吉大正元信息技术股份有限公司 一种模糊测试方法、装置、电子设备以及存储介质
WO2024139755A1 (zh) * 2022-12-30 2024-07-04 中科信息安全共性技术国家工程研究中心有限公司 一种模糊测试方法、装置、电子设备以及存储介质
CN116185843A (zh) * 2023-01-16 2023-05-30 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置
CN116185843B (zh) * 2023-01-16 2023-12-08 天航长鹰(江苏)科技有限公司 基于神经元覆盖率引导的两阶段神经网络测试方法及装置

Similar Documents

Publication Publication Date Title
CN111444340B (zh) 文本分类方法、装置、设备及存储介质
JP7087079B2 (ja) 深層学習アプリケーションのための堅牢な勾配重み圧縮方式
CN114036051A (zh) 测试方法、装置、设备以及存储介质
CN111523640B (zh) 神经网络模型的训练方法和装置
CN110378474A (zh) 对抗样本生成方法、装置、电子设备和计算机可读介质
CN110705255B (zh) 检测语句之间的关联关系的方法和装置
US20210019654A1 (en) Sampled Softmax with Random Fourier Features
US20200342347A1 (en) Machine learning quantum algorithm validator
CN113434683B (zh) 文本分类方法、装置、介质及电子设备
US11373760B2 (en) False detection rate control with null-hypothesis
CN113221104A (zh) 用户异常行为的检测方法及用户行为重构模型的训练方法
CN112418320A (zh) 一种企业关联关系识别方法、装置及存储介质
CN118393329B (zh) 一种用于测试ai芯片在模型训练和推理表现的系统
CN114880482A (zh) 一种基于图嵌入的关系图谱关键人员分析方法及系统
CN113392920B (zh) 生成作弊预测模型的方法、装置、设备、介质及程序产品
CN113255327B (zh) 文本处理方法、装置、电子设备及计算机可读存储介质
CN110807097A (zh) 分析数据的方法和装置
CN110046670B (zh) 特征向量降维方法和装置
CN112131199A (zh) 一种日志处理方法、装置、设备及介质
US20240046065A1 (en) System, devices and/or processes for defining a search space for neural network processing device architectures
US20230004799A1 (en) One-dimensional-convolution-based signal classifier
CN116561338A (zh) 工业知识图谱生成方法、装置、设备及存储介质
US20230041338A1 (en) Graph data processing method, device, and computer program product
US20220051083A1 (en) Learning word representations via commonsense reasoning
CN114817476A (zh) 语言模型的训练方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination