发明内容
鉴于上述状况,有必要针对现有技术中决策引擎系统测试时样本数据获取困难的问题,提供一种测试样本生成方法、装置、可读存储介质及电子设备。
本发明公开了一种测试样本生成方法,包括:
获取待测试决策引擎系统的决策流,并对所述决策流的源代码进行解析,得到解析文本;
确定所述解析文本中的各个参变量,并提取各个所述参变量对应的执行条件;
根据提取的执行条件确定各个所述参变量的值域信息;
根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据;
根据预设的测试样本模板以及各个所述参变量的样本数据生成测试样本。
进一步的,上述测试样本生成方法,其中,所述根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据的步骤包括:
根据所述参变量的值域信息确定各个所述参变量的值域类型,所述值域类型包括区间和枚举值;
当所述参变量的值域类型为区间时,以所述参变量的值域信息的中值作为高斯分布的均值,并根据高斯分布随机生成预设数量个数据,将所述预设数量个数据作为所述参变量的数据集;
当所述参变量的值域类型为枚举值时,根据所述值域信息的各个值确定所述参变量的数据集;
将各个所述参变量的数据集进行组合,得到样本数据。
进一步的,上述测试样本生成方法,其中,所述高斯分布的标准差为预设的默认值。
进一步的,上述测试样本生成方法,其中,所述提取各个所述参变量对应的执行条件的步骤包括:
将所述解析文本的内容与条件数据库中的条件特征进行比对,以提取所述解析文本中各个所述参变量对应的执行条件。
进一步的,上述测试样本生成方法,其中,所述根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据的步骤包括:
根据所述参变量的数据类型为各个所述参变量配置不同的默认示例;
根据各个所述参变量的值域信息以及配置的默认示例,逐条生成数据并进行组合,以得到样本数据。
本发明还公开了一种测试样本生成装置,包括:
解析模块,用于获取待测试决策引擎系统的决策流,并对所述决策流的源代码进行解析,得到解析文本;
提取模块,用于确定所述解析文本中的各个参变量,并提取各个所述参变量对应的执行条件;
确定模块,用于根据提取的执行条件确定各个所述参变量的值域信息;
组合模块,用于根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据;
测试样本生成模块,用于根据预设的测试样本模板以及各个所述参变量的样本数据生成测试样本。
进一步的,上述测试样本生成装置,其中,所述组合模块具体用于:
根据所述参变量的值域信息确定各个所述参变量的值域类型,所述值域类型包括区间和枚举值;
当所述参变量的值域类型为区间时,以所述参变量的值域信息的中值作为高斯分布的均值,并根据高斯分布随机生成预设数量个数据,将所述预设数量个数据作为所述参变量的数据集;
当所述参变量的值域类型为枚举值时,根据所述值域信息的各个值确定所述参变量的数据集;
将各个所述参变量的数据集进行组合,得到样本数据。
进一步的,上述测试样本生成装置,其中,所述提取模块具体用于:
将所述解析文本的内容与条件数据库中的条件特征进行比对,以提取所述解析文本中各个所述参变量对应的执行条件。
本发明还公开了一种电子设备,包括存储器和处理器,所述存储器存储有程序,所述程序被所述处理器执行时实现上述任一所述的方法。
本发明还公开了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一所述的方法。
本发明的测试样本生成方法,通过解析决策引擎的决策流的源代码,得到该引擎的参变量和执行条件,根据各个参变量的执行条件确定其值域信息,根据该值域信息生成各个参变量的数据,并进行组合得到样本数据。本方法无需手动造测试样本,直接解析源代码造数,提高策略模型部署测试效率,覆盖度高,能够覆盖策略模型绝大部分的情形和结果。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例,在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
请参阅图1,为本发明第一实施例中的测试样本生成方法,包括步骤S11~S15。
步骤S11,获取待测试决策引擎系统的决策流,并对所述决策流的源代码进行解析,得到解析文本。
针对待测试决策引擎,首先获取其决策流,该决策流是决策引擎系统内将规则、决策表、决策矩阵、复杂模型等执行顺序进行编排,以清晰直观的实现一个大的复杂的业务规则的功能程序。获取该决策流的源代码,并对该源代码进行解析得到解析文本,具体实施时,解析该源代码的过程可以是将该源代码转为预设格式文本的过程,如转换为xml格式的文本。
步骤S12,确定所述解析文本中的各个参变量,并提取各个所述参变量对应的执行条件。
该参变量的值是可变的数据,决策引擎的测试样本需要各个参变量的数据,通常进行测试时,需要参变量的大量数据样本。
步骤S13,根据提取的执行条件确定各个所述参变量的值域信息。
执行条件一般包含有字符,及各函数,具体实施时,可以将解析文本的内容与条件数据库中的条件特征进行比对,以提取该解析文本中各个参变量对应的执行条件。该条件数据库中存储有多个条件特征,该条件特征例如为条件式中所用到的字符。将执行条件与数据库中的各个条件特征进行比对,可以确定出各个参变量的执行条件,根据确定出的执行条件确定参变量的值域信息。
该值域信息通常有两种形式,一种是区间形式,另外一种是枚举值形式,例如解析源代码中得到的执行条件为:;。解析出变量A的两个区间为(-∞,10],(10,+∞)。
步骤S14,根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据。
根据各参变量的值域信息逐条生成数据进行组合,解析出的参变量以及对应的值域信息例如表1所示。
表1
具体实施时,还可以根据参变量的数据类型为各个参变量配置不同的默认示例,再根据各个参变量的值域信息以及配置的默认示例,逐条生成数据并进行组合,以得到样本数据。得到的样本数据例如表2所示。
表2
步骤S15,根据预设的测试样本模板以及各个所述参变量的样本数据生成测试样本。
为了得到适合该待测试决策引擎的测试样本,将该样本数据导入系统中预设的测试样本模板中,得到测试样本。
本实施例中的测试样本生成方法,通过解析决策引擎的决策流的源代码,得到该引擎的参变量和执行条件,根据各个参变量的执行条件确定其值域信息,根据该值域信息生成各个参变量的数据,并进行组合得到样本数据。本方法无需手动造测试样本,直接解析源代码造数,提高策略模型部署测试效率,覆盖度高,能够覆盖策略模型绝大部分的情形和结果。
请参阅图2,为本发明第二实施例中的测试样本生成方法,包括步骤S21~S28。
步骤S21,获取待测试决策引擎系统的决策流,并对所述决策流的源代码进行解析,得到解析文本。
针对待测试决策引擎,首先获取其决策流,该决策流是决策引擎系统内将规则、决策表、决策矩阵、复杂模型等执行顺序进行编排,以清晰直观的实现一个大的复杂的业务规则的功能程序。获取该决策流的源代码,并对该源代码进行解析得到解析文本,具体实施时,解析该源代码可以是将该源代码转为预设格式文本的过程,例如转换为xml格式。
步骤S22,确定所述解析文本中的各个参变量,并提取各个所述参变量对应的执行条件。
步骤S23,根据提取的执行条件确定各个所述参变量的值域信息。
该参变量的值是可变的数据,决策引擎的测试样本需要各个参变量的数据,通常进行测试时,需要参变量的大量数据样本。
步骤S24,根据所述参变量的值域信息确定各个所述参变量的值域类型,所述值域类型包括区间和枚举值。
步骤S25,当所述参变量的值域类型为区间时,以所述参变量的值域信息的中值作为高斯分布的均值,并根据高斯分布随机生成预设数量个数据,将所述预设数量个数据作为所述参变量的数据集。
步骤S26,当所述参变量的值域类型为枚举值时,根据所述值域信息的各个值确定所述参变量的数据集。
步骤S27,将各个所述参变量的数据集进行组合,得到样本数据。
参变量的值域信息有两种类型,一种是区间,另外一种是枚举值。当参变量的值域信息是枚举值时,生成的数据集可以是该值域信息中部分的值,也可以是值域信息的所有值。
当参变量的值域信息是区间时,根据高斯分布生成预设数量个数据,得到该参变量的数据集。具体的,以该区间的中间值为高斯分布的均值μ,该高斯分布的标准差σ可以为预设的默认值,具体实施时,可根据参变量的数据类型为每种参变量配置一个标准差。根据高斯分布生成预设数量个随机的数据,根据高斯分布的3σ原理,几乎所有经高斯分布生成的数据位于均值周围3σ范围内。通过该方法可以在满足测试需求的前提下,尽可能获得足够数量的数据样本。
进一步的,对于上限值或下限值为∞(无穷大)的区间,其该区间的中间值可以以预设值为该区间的上限值或下限值,该预设值根据经验确定,每个参变量对应设置的预设值可以不同。根据该预设值和区间的端点值确定该高斯分布的中间值。例如,区间为(10,+∞),该预设值如设置为2000,则以10和2000的中间值作为高斯分布的中间值。
步骤S28,根据预设的测试样本模板以及各个所述参变量的样本数据生成测试样本。
将该样本数据导入预设的测试样本模板中,得到测试样本。通过该测试样本对待测试引擎进行测试。
请参阅图3,为本发明第三实施例中的测试样本生成装置,包括:
解析模块31,用于获取待测试决策引擎系统的决策流,并对所述决策流的源代码进行解析,得到解析文本;
提取模块32,用于确定所述解析文本中的各个参变量,并提取各个所述参变量对应的执行条件;
确定模块33,用于根据提取的执行条件确定各个所述参变量的值域信息;
组合模块34,用于根据各个所述参变量的值域信息逐条生成数据并进行组合,以得到样本数据;
测试样本生成模块35,用于根据预设的测试样本模板以及各个所述参变量的样本数据生成测试样本。
进一步的,上述测试样本生成装置,其中,所述组合模块34具体用于:
根据所述参变量的值域信息确定各个所述参变量的值域类型,所述值域类型包括区间和枚举值;
当所述参变量的值域类型为区间时,以所述参变量的值域信息的中值作为高斯分布的均值,并根据高斯分布随机生成预设数量个数据,将所述预设数量个数据作为所述参变量的数据集;
当所述参变量的值域类型为枚举值时,根据所述值域信息的各个值确定所述参变量的数据集;
将各个所述参变量的数据集进行组合,得到样本数据。
进一步的,上述测试样本生成装置,其中,所述提取模块32具体用于:
将所述解析文本的内容与条件数据库中的条件特征进行比对,以提取所述解析文本中各个所述参变量对应的执行条件。
本发明实施例所提供的测试样本生成装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明另一方面还提出一种电子设备,请参阅图4,所示为本发明实施例当中的电子设备,包括处理器10、存储器20以及存储在存储器上并可在处理器上运行的计算机程序30,所述处理器10执行所述计算机程序30时实现如上述的测试样本生成方法。
其中,所述电子设备可以为但不限于个人电脑、手机等计算机设备。处理器10在一些实施例中可以是中央处理器(CentralProcessing Unit, CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器20中存储的程序代码或数据等。
其中,存储器20至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器20在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的硬盘。存储器20在另一些实施例中也可以是电子设备的外部存储装置,例如电子设备上配备的插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(FlashCard)等。进一步地,存储器20还可以既包括电子设备的内部存储单元也包括外部存储装置。存储器20不仅可以用于存储安装于电子设备的应用软件及各类数据等,还可以用于暂时地存储已经输出或者将要输出的数据。
可选地,该电子设备还可以包括用户接口、网络接口、通信总线等,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置与其他电子装置之间建立通信连接。通信总线用于实现这些组件之间的连接通信。
需要指出的是,图4示出的结构并不构成对电子设备的限定,在其它实施例当中,该电子设备可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的测试样本生成方法。
本领域技术人员可以理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置中获取指令并执行指令的系统)使用,或结合这些指令执行系统、装置而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或结合这些指令执行系统、装置而使用的设备。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。