掌桥专利:专业的专利平台
掌桥专利
首页

测试数据生成方法、装置、服务器、存储介质和程序产品

文献发布时间:2023-06-19 16:06:26



技术领域

本申请涉及云计算技术领域,特别是涉及一种测试数据生成方法、装置、服务器、存储介质和程序产品。

背景技术

随着自动化测试技术的不断发展,在软件开发过程中,软件测试是对软件需求分析、设计规格说明和编码等的质量检测过程,是保证软件质量的重要步骤。

相关技术中,首先对软件测试的程序进行插桩处理,再通过传统的搜索算法对该初始测试数据进行处理,生成所需的测试数据。然而,现有技术的方法生成的测试数据的准确度不高,使得软件测试的效率较低。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高生成测试数据的准确度的测试数据生成方法、装置、服务器、存储介质和程序产品。

第一方面,本申请提供了一种测试数据生成方法,该方法包括:

分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息;初始测试数据集的数量与目标路径的数量均为M;M、N均为正整数;

将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行筛选,得到M组候选测试数据;M组候选测试数据表示预测个体风险值大于预设阈值的数据;候选测试数据的数量小于等于N;

将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。

在其中一个实施例中,根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值;

通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型。

在其中一个实施例中,根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值,包括:

根据被测程序构建有向风险网络模型;

将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值。

在其中一个实施例中,将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值,包括:

通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息;

根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值;

根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值。

在其中一个实施例中,根据样本路径覆盖信息,确定样本个体威胁程度值,包括:

获取样本测试数据在被测程序上的样本路径覆盖信息;

将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的威胁程度值和样本边的威胁程度值;

对样本节点的威胁程度值和样本边的威胁程度值进行加权求和,得到样本个体威胁程度值。

在其中一个实施例中,根据样本路径覆盖信息,确定样本个体脆弱程度值,包括:

获取样本测试数据在被测程序上的样本路径覆盖信息;

将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的脆弱程度值和样本边的脆弱程度值;

对样本节点的脆弱程度值和样本边的脆弱程度值进行加权求和,得到样本个体脆弱程度值。

在其中一个实施例中,根据样本路径覆盖信息,确定样本个体错误程度值,包括:

获取样本测试数据在被测程序上的样本路径覆盖信息;

将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的错误程度值和样本边的错误程度值;

对样本节点的错误程度值和样本边的错误程度值进行加权求和,得到样本个体错误程度值。

在其中一个实施例中,根据被测程序构建有向风险网络模型,包括:

根据被测程序构建有向网络模型;

计算有向网络模型中节点和边的风险信息;风险信息包括威胁程度值、脆弱程度值和错误后果;

根据风险信息,确定有向风险网络模型。

在其中一个实施例中,获取M×N个测试数据在被测程序中的路径覆盖信息,包括:

将M×N个测试数据输入至有向风险网络模型中,通过有向风险网络模型分别对M个初始测试数据集中的N个测试数据的路径进行分析,得到M×N个测试数据在被测程序中的M×N个路径覆盖信息。

第二方面,本申请还提供了一种测试数据生成装置,该装置包括:

获取模块,用于分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息;所述初始测试数据集的数量与目标路径的数量均为M;所述M、所述N均为正整数;

处理模块,用于将所述M×N个路径覆盖信息输入至预设的随机森林模型中,通过所述随机森林模型确定所述M×N个测试数据的预测个体风险值,根据所述预测个体风险值分别对所述M组初始测试数据集中的N个测试数据进行分类,得到M组候选测试数据;所述M组候选测试数据表示所述预测个体风险值大于预设阈值的数据;所述候选测试数据的数量小于等于N;

确定模块,用于将所述M组候选测试数据中覆盖所述被测程序的M条目标路径的候选测试数据确定为目标测试数据。

第三方面,本申请还提供了一种服务器,该服务器包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面方法实施例中的所有步骤。

第四方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面方法实施例中的所有步骤。

第五方面,本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述第一方面方法实施例中的所有步骤。

上述测试数据生成方法、装置、服务器、存储介质和程序产品,该方法通过分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息,将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行筛选,得到M组候选测试数据,将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。该方法通过预设的随机森林模型预测M个初始测试数据集中的M×N个测试数据的个体风险值,根据预测的个体风险值可以对测试数据进行粗略的筛选,使得到的候选测试数据都为个体风险值较高的测试数据,再进一步对候选测试数据进行准确地计算个体风险值,使得到的目标测试数据能够覆盖所有的目标路径,提高了生成测试数据的准确度,通过准确的测试数据对软件进行测试,提高了软件测试的效率。

附图说明

图1为一个实施例中测试数据生成方法的应用环境图;

图2为一个实施例中测试数据生成方法的流程示意图;

图3为一个实施例中测试数据生成方法的流程示意图;

图4为一个实施例中测试数据生成方法的流程示意图;

图5为一个实施例中测试数据生成方法的流程示意图;

图6为一个实施例中测试数据生成方法的流程示意图;

图7为一个实施例中测试数据生成方法的流程示意图;

图8为一个实施例中测试数据生成方法的流程示意图;

图9为一个实施例中测试数据生成方法的流程示意图;

图10为一个实施例中测试数据生成方法的流程示意图;

图11为一个实施例中测试数据生成方法的流程示意图;

图12为一个实施例中测试数据生成装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

需要说明的是,本公开的测试数据生成方法、装置、服务器、存储介质和程序产品可以应用在云计算领域,也可用于除云计算领域外的其他技术领域,本公开对测试数据生成方法、装置、服务器、存储介质和程序产品的应用领域不做限定。

在软件开发过程中,软件测试可看成是对软件需求分析、设计规格说明和编码等的复审,是保证软件质量的重要阶段。而在软件测试过程中,被测程序能够进行测试的先决条件,就是要有合适的测试数据,因此,测试数据生成是软件测试中一项必不可少的工作。越复杂的面向对象软件,其内部的类、类之间传递数据发生错误的可能性越大,这就要求测试数据生成方法不仅能够快速生成测试数据,而且生成的这些测试数据必须优先覆盖可能发生错误的位置,提高故障测试的速度,从而保障软件的安全。

本申请实施例提供的测试数据生成方法,可以应用于如图1所示的应用环境中。该服务器包括通过系统总线连接的处理器、存储器和网络接口。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该服务器的数据库用于存储测试数据。该服务器的网络接口用于与外部的终端通过网络连接通信。其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种测试数据生成方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

S201,分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息;初始测试数据集的数量与目标路径的数量均为M;M、N均为正整数。

其中,路径覆盖信息是指根据被测程序确定该程序中的目标路径,在程序的搜索空间查找测试数据集,每一个测试数据集中至少存在一个测试数据,对于任意一条目标路径,将测试数据输入至被测程序中,测试数据穿越的路径为该测试数据的路径覆盖信息。

可选的,服务器可以根据被测程序运行过程的顺序确定被测程序的目标路径数量,或者,服务器可以根据被测程序对应的流程图确定被测程序的目标路径数量。本实施例对于确定被测程序的目标路径数量的方式不做限定。

可选的,服务器可以根据被测程序的目标路径数量,在数据库中随机选取与目标路径数量一致的初始测试数据集,或者,若被测程序的目标路径数量为M时,服务器可以选择数据库中前M个测试数据集作为初始测试数据集。服务器可以对每个初始测试数据集中的测试数据进行不同的标记,将已标记的测试数据输入至被测程序中运行,被测程序执行完成后,根据测试数据的标记可以获取测试数据在被测程序中的M×N个路径覆盖信息。

S202,将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行筛选,得到M组候选测试数据;M组候选测试数据表示预测个体风险值大于预设阈值的数据。

其中,随机森林模型是指利用多棵树对输入的数据进行预测的一种分类器。

个体风险值是指测试数据覆盖目标路径的可能性,测试数据的个体风险值越高,说明个体测试数据可能找到被测程序中的更多错误,能够更有效的对软件程序进行测试。

具体的,预设的随机森林模型是通过大量的样本数据进行训练的,通过预设的随机森林模型可以将多个初始测试数据集中的测试数据进行粗略的筛选,即随机森林模型可以对测试数据进行二分类处理,将多个初始测试数据集中的测试数据分为高风险个体测试数据和低风险个体测试数据,将高风险个体测试数据确定为多个初始测试数据集中较为优秀的测试数据,将该部分优秀的测试数据称为候选测试数据。例如,随机森林模型的输出值为1时,确定该测试数据为高风险个体测试数据;随机森林模型的输出值为0时,确定该测试数据为低风险个体测试数据。服务器将测试数据在被测程序中的多个路径覆盖信息作为预设的随机森林模型的输入,通过随机森林模型预测多个初始测试数据集中的测试数据的个体风险值,将该预测的个体风险值与预设阈值进行对比,当预测的个体风险值小于预设阈值时,将预测的个体风险值对应的测试数据进行删除;当预测的个体风险值大于等于预设阈值时,将预测的个体风险值对应的测试数据确定为候选测试数据。由于多个初始测试数据集中都对部分测试数据进行删除,可以得到多组候选测试数据。

S203,将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。

具体的,每组候选测试数据对应一条目标路径,若总共有M组测试数据和N个目标路径,服务器可以通过计算第M组中的测试数据的个体风险值,根据计算的个体风险值确定第M组中的测试数据是否覆盖第M个目标路径,若第M组中的测试数据覆盖第M个目标路径,则继续判断第M组中的测试数据是否覆盖第M-1个目标路径,以此类推,若第M组中的测试数据全部覆盖M个目标路径时,将第M组中的测试数据确定为目标测试数据。

进一步的,可以理解的是,步骤S203可以通过一些生物学算法来完成,以改进遗传算法为例,可以将改进的遗传算法与随机森林模型进行融合对初始测试数据进行处理,得到目标测试数据,该过程可以包括:对被测程序进行插桩处理,初始化参数,对被测程序中的任意一条目标路径,随机生成子种群,利用预设的随机森林模型对子种群中个体进行分类,粗略筛选出子种群中的优秀个体,再根据个体风险值的计算公式计算各个优秀个体的个体风险值,判断是否有个体覆盖当前子种群的目标路径。子种群中个体已经覆盖当前子种群的目标路径时,该子种群的个体还需要继续对与该子种群对应的目标路径的相似路径尝试覆盖,若找到覆盖其他目标路径的个体,将该目标路径移除,直到完成尝试对所有相似目标路径覆盖,或种群进化代数超出阈值,则终止子种群的进化过程。

上述测试数据生成方法中,该方法通过分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息,将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行筛选,得到M组候选测试数据,将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。该方法通过预设的随机森林模型预测M个初始测试数据集中的M×N个测试数据的个体风险值,根据预测的个体风险值可以对测试数据进行粗略的筛选,使得到的候选测试数据都为个体风险值较高的测试数据,再进一步对候选测试数据进行准确地计算个体风险值,使得到的目标测试数据能够覆盖所有的目标路径,提高了生成测试数据的准确度,通过准确的测试数据对软件进行测试,提高了软件测试的效率。

图3为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及随机森林模型的构建过程的一种可选的实现方式。在图2所示实施例的基础上,如图3所示,上述方法可以包括如下步骤:

S301,根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值。

可选的,服务器可以对样本测试数据进行标记,将已标记的样本测试数据输入至被测程序中运行,被测程序运行过程中,将样本测试数据的标记覆盖的路线信息确定为样本测试数据的样本路径覆盖信息。可选的,服务器可以将样本测试数据输入至预先设定的有向风险网络模型中,根据预先设定的有向风险网络模型对样本测试数据覆盖的路径进行分析,输出样本测试数据的样本路径覆盖信息。本实施例对根据样本测试数据确定样本路径覆盖信息的方式不做限定。

进一步的,可选的,服务器将样本测试数据的样本路径覆盖信息输入至预设的神经网络模型中,通过预设的神经网络模型对样本路径覆盖信息进行分析,输出样本测试数据的样本个体风险值,或者,服务器可以根据路径覆盖信息与个体风险值的计算公式,计算样本测试数据的样本个体风险值。本实施例对根据样本测试数据确定样本个体风险值的方式不做限定。

S302,通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型。

具体的,服务器可以将样本路径覆盖信息和样本个体风险值作为样本数据,将样本数据输入至初始随机森林模型中进行训练,利用样本路径覆盖信息和样本个体风险值对初始随机森林模型中的相关参数进行优化,直到随机森林模型的输出结果准确率大于预设阈值时,确定随机森林模型收敛,得到随机森林模型。

上述测试数据生成方法中,该方法根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值,通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型。该方法通过多个样本测试数据的样本路径覆盖信息和样本个体风险值对初始随机森林模型进行训练,随机森林模型可以通过测试数据的路径覆盖信息准确的预测测试数据的个体风险值,使得到的随机森林模型的预测准确率和预测效率更高。

图4为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值的一种可选的实现方式。在图3所示实施例的基础上,如图4所示,上述S301可以包括如下步骤:

S401,根据被测程序构建有向风险网络模型。

具体的,服务器可以将被测程序映射到有向风险网络模型中,该有向风险网络模型可以表示为G=(V,L,Q)。其中,V={v

S402,将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值。

具体的,服务器可以将样本测试数据作为有向风险网络模型的输入信号,通过有向风险网络模型分析样本测试数据在被测程序中经过的路径,可以得到样本测试数据经过路径过程中包括的节点和边的信息,将该节点和边的信息确定为样本路径覆盖信息。进一步的,服务器可以根据路径覆盖信息与个体风险值的计算公式,计算样本测试数据的样本个体风险值。

上述测试数据生成方法中,该方法根据被测程序构建有向风险网络模型,将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值。该方法通过有向风险网络模型对样本测试数据进行处理,可以快速的得到样本测试数据的样本路径覆盖信息和样本个体风险值,提高了样本测试数据的处理效率。

图5为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值的一种可选的实现方式。在图4所示实施例的基础上,如图5所示,上述S402可以包括如下步骤:

S501,通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息。

具体的,服务器可以将样本测试数据作为有向网络模型的输入信号,通过有向网络模型对样本测试数据进行分析,确定每个样本测试数据在样本被测程序中经过的路径,将该路径对应的信息确定为样本测试数据的样本路径覆盖信息。

S502,根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值。

具体的,服务器可以根据样本路径覆盖信息和相关的计算公式得到样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值。

(1)样本个体的威胁程度值

个体的威胁程度值是指样本测试数据个体d

其中,W(N

(2)样本个体脆弱程度值

个体脆弱程度值是指个体d

其中,C(N

(3)样本个体错误程度值

样本个体错误程度值是指样本个体d

其中,M(l

S503,根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值。

具体的,个体的风险值是由其个体威胁程度值、个体脆弱程度值及个体错误程度值相乘得到的,服务器可以计算样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值的乘积,将得到的乘积结果作为样本个体风险值。个体的风险值F(d

F(d

上述测试数据生成方法中,该方法通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息,根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值。该方法通过样本路径覆盖信息可以准确的确定样本测试数据对应的样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,从而可以准确的得到样本个体风险值。

图6为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及根据样本路径覆盖信息,确定样本个体威胁程度值的一种可选的实现方式。在图5所示实施例的基础上,如图6所示,上述S502可以包括如下步骤:

S601,获取样本测试数据在被测程序上的样本路径覆盖信息。

具体的,服务器可以将样本测试数据作为有向网络模型的输入信号,通过有向网络模型对样本测试数据在被测程序中经过的路径进行分析,确定样本测试数据在测试被测程序时经过的路径中包括的节点和边的信息,将该节点和边的信息确定为样本测试数据在被测程序上的样本路径覆盖信息。

S602,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的威胁程度值和样本边的威胁程度值。

其中,节点的威胁程度值是指向风险网络模型中的节点被样本测试数据经过的路径覆盖的概率,边是指有向风险网络模型中任意两个节点之间的连线,边的威胁程度值是指向风险网络模型中的边被样本测试数据经过的路径覆盖的概率。

具体的,服务器可以将样本覆盖路径与样本目标路径中的节点和边进行匹配,若匹配成功,可选的,服务器可以根据节点和边的威胁程度值的计算公式,计算各个样本节点的威胁程度值和样本边的威胁程度值,或者,服务器可以通过历史测试数据的样本覆盖路径、历史测试数据对应的历史节点的威胁程度值和边的威胁程度值训练神经网络模型,得到威胁模型,将样本覆盖路径输入至威胁模型中,通过威胁模型的计算,得到样本节点的威胁程度值和样本边的威胁程度值。

S603,对样本节点的威胁程度值和样本边的威胁程度值进行加权求和,得到样本个体威胁程度值。

具体的,服务器可以将节点的历史权重作为样本节点的权重,将边的历史权重作为样本边的权重,将样本节点的威胁程度值与样本节点的权重相乘,样本边的威胁程度值与样本边的权重相乘,将两个乘积结果相加,将相加的结果作为样本个体威胁程度值。

上述测试数据生成方法中,该方法通过获取样本测试数据在被测程序上的样本路径覆盖信息,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的威胁程度值和样本边的威胁程度值,对样本节点的威胁程度值和样本边的威胁程度值进行加权求和,得到样本个体威胁程度值。该方法通过对样本节点的威胁程度值和样本边的威胁程度值进行加权求和,可以得到更准确的样本个体威胁程度值。

图7为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及根据样本路径覆盖信息,确定样本个体脆弱程度值的一种可选的实现方式。在图5所示实施例的基础上,如图7所示,上述S502可以包括如下步骤:

S701,获取样本测试数据在被测程序上的样本路径覆盖信息。

具体的,服务器可以将样本测试数据作为有向风险网络模型的输入信号,通过有向风险网络模型分析样本测试数据在被测程序中经过的路径,可以得到样本测试数据经过路径过程中包括的节点和边的信息,将该节点和边的信息确定为样本测试数据在被测程序上的样本路径覆盖信息。

S702,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的脆弱程度值和样本边的脆弱程度值。

具体的,服务器可以将样本覆盖路径与样本目标路径中的节点和边进行匹配,若匹配成功,可选的,服务器可以根据节点和边的脆弱程度值的计算公式,计算各个样本节点的脆弱程度值和样本边的脆弱程度值,或者,服务器可以通过历史测试数据的样本覆盖路径、历史测试数据对应的历史节点的脆弱程度值和边的脆弱程度值训练神经网络模型,得到脆弱模型,将样本覆盖路径输入至脆弱模型中,通过脆弱模型的计算,得到样本节点的脆弱程度值和样本边的脆弱程度值。

S703,对样本节点的脆弱程度值和样本边的脆弱程度值进行加权求和,得到样本个体脆弱程度值。

具体的,服务器可以将节点的历史权重作为样本节点的权重,将边的历史权重作为样本边的权重,将样本节点的脆弱程度值与样本节点的权重相乘,样本边的脆弱程度值与样本边的权重相乘,将两个乘积结果相加,将相加的结果作为样本个体脆弱程度值。

上述测试数据生成方法中,该方法通过获取样本测试数据在被测程序上的样本路径覆盖信息,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的脆弱程度值和样本边的脆弱程度值,对样本节点的脆弱程度值和样本边的脆弱程度值进行加权求和,得到样本个体脆弱程度值。该方法通过对样本节点的脆弱程度值和样本边的脆弱程度值进行加权求和,可以得到更准确的样本个体脆弱程度值。

图8为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及根据样本路径覆盖信息,确定样本个体错误程度值的一种可选的实现方式。在图5所示实施例的基础上,如图8所示,上述S502可以包括如下步骤:

S801,获取样本测试数据在被测程序上的样本路径覆盖信息。

具体的,服务器可以将样本测试数据作为有向网络模型的输入信号,通过有向网络模型对样本测试数据在被测程序中经过的路径进行分析,确定样本测试数据在测试被测程序时经过的路径中包括的节点和边的信息,将该节点和边的信息确定为样本测试数据在被测程序上的样本路径覆盖信息。

S802,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的错误程度值和样本边的错误程度值。

具体的,服务器可以将样本覆盖路径与样本目标路径中的节点和边进行匹配,若匹配成功,可选的,服务器可以根据节点和边的错误程度值的计算公式,计算各个样本节点的错误程度值和样本边的错误程度值,或者,服务器可以通过历史测试数据的样本覆盖路径、历史测试数据对应的历史节点的错误程度值和边的错误程度值训练神经网络模型,得到错误模型,将样本覆盖路径输入至错误模型中,通过错误模型的计算,得到样本节点的错误程度值和样本边的错误程度值。

S803,对样本节点的错误程度值和样本边的错误程度值进行加权求和,得到样本个体错误程度值。

具体的,服务器可以将节点的历史权重作为样本节点的权重,将边的历史权重作为样本边的权重,将样本节点的错误程度值与样本节点的权重相乘,样本边的错误程度值与样本边的权重相乘,将两个乘积结果相加,将相加的结果作为样本个体错误程度值。

上述测试数据生成方法中,该方法通过获取样本测试数据在被测程序上的样本路径覆盖信息,将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的错误程度值和样本边的错误程度值,对样本节点的错误程度值和样本边的错误程度值进行加权求和,得到样本个体错误程度值。该方法通过对样本节点的错误程度值和样本边的错误程度值进行加权求和,可以得到更准确的样本个体错误程度值。

图9为本申请实施例提供的测试数据生成方法的流程示意图。本申请实施例涉及根据被测程序构建有向风险网络模型的一种可选的实现方式。在图4所示实施例的基础上,如图9所示,上述S401可以包括如下步骤:

S901,根据被测程序构建有向网络模型。

具体的,服务器可以将被测程序中的类转化为有向网络模型中的节点,将被测程序中的类与类之间的调用关系转化为有向网络模型中的边,将有向网络模型中的节点和边连接起来,得到有向网络模型。其中,有向网络模型中边的权重是指被测程序中类之间传递的参数量乘以传递次数的值。例如,被测程序中的类a转化为节点N1,被测程序中的类b转化为节点N2;若被测程序中的类a调用类b,同时类a向类b传递了参数,则类a与类b之间存在传递关系,在有向网络模型中连接类a与类b,同时标注类a到类b的箭头;若被测程序中的类调用类b,同时类b向类a发送了一个返回值,则类a与类b之间存在传递关系,在有向网络模型中连接类a与类b,同时标注类a到类b的箭头以及类b到类a的箭头。

S902,计算有向网络模型中节点和边的风险信息;风险信息包括威胁程度值、脆弱程度值和错误程度值。

具体的,服务器可以根据相关的计算公式得到有向网络模型中节点和边的威胁程度值、脆弱程度值以及边的错误程度值,将得到的威胁程度值、脆弱程度值和错误程度值作为有向网络模型中节点和边的风险信息。

(1)节点和边的威胁程度值。

其中,节点的威胁程度值是指节点被测试数据经过被测程序的路径覆盖该节点的概率;边的威胁程度值是指有向网络中任意两个节点之间进行信息传递的路径经过该边的概率。若样本测试数据为d

其中,Cov表示节点被测试数据的路径覆盖的覆盖矩阵;覆盖矩阵的行表示m条覆盖路径,即P

有向网络模型中节点的威胁程度值W(N

节点与节点之间的边的威胁程度值W(l

其中,CL

(2)节点和边的脆弱程度值。

节点N

C(N

其中,len(N

边l

C(l

其中,asum(l

(3)边的错误程度值。

边的错误程度值是指由于信息传递错误而造成的最大流量损失值,即为理论传递的参数量减去实际传递的参数量,参数量是指参数个数乘以传递次数,边的错误程度值M(l

M(l

其中,TH表示理论传递的参数个数;AC表示实际传递的参数个数;T表示理论传递的参数次数。

S903,根据风险信息,确定有向风险网络模型。

具体的,服务器可以将节点和边的威胁程度值、脆弱程度值以及边的错误程度值设置在有向网络模型中,确定有向网络模型中的节点和边的风险信息,得到被测程序对应的有向风险网络模型。

上述测试数据生成方法中,该方法根据被测程序构建有向网络模型,计算有向网络模型中节点和边的风险信息,根据风险信息,确定有向风险网络模型。该方法中的风险信息包括威胁程度值、脆弱程度值和错误后果,根据三个风险信息可以准确的构建有向风险网络模型,从而可以使得到的目标测试数据更加准确。

在另一个实施例中,本实施例涉及获取多个初始测试数据集中的测试数据在被测程序中的多个路径覆盖信息的一种可选的实现方式。上述S201可以包括如下内容:将M×N个测试数据输入至有向风险网络模型中,通过有向风险网络模型分别对M个初始测试数据集中的N个测试数据的路径进行分析,得到M×N个测试数据在被测程序中的M×N个路径覆盖信息。

具体的,服务器可以将M个初始测试数据集中的M×N个测试数据作为有向风险网络模型的输入信号,将该输入信号输入至有向风险网络模型中,通过有向风险网络模型输出M×N个测试数据在被测程序中的路径覆盖信息。

上述测试数据生成方法中,该方法将多个初始测试数据集中的测试数据输入至有向风险网络模型中,通过有向风险网络模型对多个初始测试数据集中的测试数据的路径进行分析,得到多个初始测试数据集在被测程序中的路径覆盖信息。该方法将测试数据输入有向风险网络模型中,通过有向风险网络模型可以快速的得到测试数据在被测程序中的路径覆盖信息,提高了测试数据的分析效率。

在一个实施例中,为了便于本领域技术人员的理解,以下对测试数据生成方法进行详细介绍,如图10所示,该方法可以包括:

S1001,根据被测程序构建有向网络模型;

S1002,计算有向网络模型中节点和边的风险信息;风险信息包括威胁程度值、脆弱程度值和错误后果;

S1003,根据风险信息,确定有向风险网络模型;

S1004,通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息;

S1005,根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值;

S1006,根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值;

S1007,通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型;

S1008,将M×N个测试数据输入至有向风险网络模型中,通过有向风险网络模型对M×N个测试数据的路径进行分析,得到M×N个测试数据在被测程序中的路径覆盖信息;

S1009,将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行分类,得到M组候选测试数据;

S1010,将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。

需要说明的是,针对上述S1001-S1010中的描述可以参见上述实施例中相关的描述,且其效果类似,本实施例在此不再赘述。

进一步的,图11表示测试数据生成方法的流程示意图,根据被测程序构建有向网络模型,计算有向网络模型中的节点与边的威胁程度值、脆弱程度值、错误程度值等,根据节点与边的威胁程度值、脆弱程度值、错误程度值确定有向风险网络模型。服务器将随机生成的部分测试数据作为样本测试数据,将样本测试数据输入至有向风险网络模型中,经过有向风险网络模型的分析,输出测试数据的覆盖路径以及个体风险值,通过测试数据的覆盖路径以及个体风险值训练初始随机森林模型,得到预设准确度较高的随机森林模型。服务器将测试数据输入有向风险网络模型,得到测试数据对应的路径覆盖信息,再将路径覆盖信息输入至随机森林模型中,通过随机森林模型筛选出个体风险值较高的测试数据,通过改进的遗传算法对个体风险值较高的测试数据进行精细筛选,得到能够覆盖所有目标路径的测试数据,将该部分测试数据确定为目标测试数据。

上述测试数据生成方法中,该方法根据被测程序构建有向网络模型,计算有向网络模型中节点和边的风险信息;风险信息包括威胁程度值、脆弱程度值和错误后果,根据风险信息,确定有向风险网络模型,通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息,根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值,通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型,将M×N个测试数据输入至有向风险网络模型中,通过有向风险网络模型对M×N个测试数据的路径进行分析,得到M×N个测试数据在被测程序中的路径覆盖信息,将到M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行分类,得到M组候选测试数据,将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。该方法通过预设的随机森林模型预测多个初始测试数据集中测试数据的个体风险值,根据预测的个体风险值可以对测试数据进行粗略的筛选,使得到的候选测试数据都为个体风险值较高的测试数据,再进一步对候选测试数据进行准确地计算个体风险值,使得到的目标测试数据能够覆盖所有的目标路径,提高了生成测试数据的准确度,通过准确的测试数据对软件进行测试,提高了软件测试的效率。

应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的测试数据生成方法的测试数据生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个测试数据生成装置实施例中的具体限定可以参见上文中对于测试数据生成方法的限定,在此不再赘述。

在一个实施例中,如图12所示,提供了一种测试数据生成装置,包括:获取模块11、处理模块12和确定模块13,其中:

获取模块11,用于分别从M个初始测试数据集中获取N个测试数据,得到M×N个测试数据,以及获取M×N个测试数据在被测程序中的路径覆盖信息;初始测试数据集的数量与目标路径的数量均为M;M、N均为正整数;

处理模块12,用于将M×N个路径覆盖信息输入至预设的随机森林模型中,通过随机森林模型确定M×N个测试数据的预测个体风险值,根据预测个体风险值分别对M组初始测试数据集中的N个测试数据进行分类,得到M组候选测试数据;M组候选测试数据表示预测个体风险值大于预设阈值的数据;候选测试数据的数量小于等于N;

确定模块13,用于将M组候选测试数据中覆盖被测程序的M条目标路径的候选测试数据确定为目标测试数据。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

在一个实施例中,上述处理模块包括:第一确定单元和第二确定单元,其中:

第一确定单元,用于根据样本测试数据,确定样本测试数据的样本路径覆盖信息和样本个体风险值;

第二确定单元,用于通过样本路径覆盖信息和样本个体风险值训练初始随机森林模型,直至满足预设的收敛条件,确定随机森林模型收敛,得到随机森林模型。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于根据被测程序构建有向风险网络模型;将样本测试数据输入至有向风险网络模型中,得到样本测试数据的样本路径覆盖信息和样本个体风险值。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于通过有向网络模型对样本测试数据进行分析,得到样本测试数据的样本路径覆盖信息;根据样本路径覆盖信息,确定样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值;根据样本个体威胁程度值、样本个体脆弱程度值和样本个体错误程度值,确定样本个体风险值。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于获取样本测试数据在被测程序上的样本路径覆盖信息;将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的威胁程度值和样本边的威胁程度值;对样本节点的威胁程度值和样本边的威胁程度值进行加权求和,得到样本个体威胁程度值。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于获取样本测试数据在被测程序上的样本路径覆盖信息;将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的脆弱程度值和样本边的脆弱程度值;对样本节点的脆弱程度值和样本边的脆弱程度值进行加权求和,得到样本个体脆弱程度值。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于获取样本测试数据在被测程序上的样本路径覆盖信息;将样本覆盖路径和样本目标路径进行匹配,得到匹配成功的样本节点的错误程度值和样本边的错误程度值;对样本节点的错误程度值和样本边的错误程度值进行加权求和,得到样本个体错误程度值。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

可选的,上述第一确定单元具体用于根据被测程序构建有向网络模型;计算有向网络模型中节点和边的风险信息;风险信息包括威胁程度值、脆弱程度值和错误后果;根据风险信息,确定有向风险网络模型。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

在一个实施例中,上述获取模块包括处理单元,其中:

处理单元,用于将M×N个测试数据输入至有向风险网络模型中,通过有向风险网络模型分别对M个初始测试数据集中的N个测试数据的路径进行分析,得到M×N个测试数据在被测程序中的M×N个路径覆盖信息。

本实施例提供的测试数据生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

上述测试数据生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于服务器中的处理器中,也可以以软件形式存储于服务器中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种服务器,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的所有内容。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中的所有内容。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的所有内容。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 测试数据生成方法、装置、服务器、存储介质和程序产品
  • 生成测试数据的方法、装置、设备、存储介质及程序产品
技术分类

06120114700957