基于ip的mock数据测试方法、装置、电子设备及存储介质与流程

文档序号:24872734发布日期:2021-04-30 12:45阅读:168来源:国知局
基于ip的mock数据测试方法、装置、电子设备及存储介质与流程

本发明涉及数据测试技术领域,尤其涉及一种基于ip的mock数据测试方法、装置、电子设备及计算机可读存储介质。



背景技术:

数据测试是系统开发或维护时常见的手段,目前常见的数据测试方法多为mock数据测试方法,现有的mock数据测试方法中,需要对用户发送的测试请求进行内容分析,以根据分析结果构造测试数据,并获取可以对测试数据进行数据测试的mock工具,利用获取的mock工具对测试数据进行测试。

在使用该方法进行数据测试的过程中,由于用户请求的数量往往十分庞大,因此该方法对测试请求进行内容分析时需要占用大量计算资源,导致分析效率低下,且在获取mock工具时需要测试人员手动获取,进一步降低了数据测试的效率。



技术实现要素:

本发明提供一种基于ip的mock数据测试方法、装置及计算机可读存储介质,其主要目的在于解决使用mock工具进行数据测试的效率不高的问题。

为实现上述目的,本发明提供的一种基于ip的mock数据测试方法,包括:

获取用户请求,提取所述用户请求中的目标变量字段;

当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求;

提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发;

当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据;

获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

可选地,所述提取所述用户请求中的目标变量字段,包括:

遍历并确定所述用户请求中字段分隔符的位置;

根据所述字段分隔符的位置对所述用户请求进行字段拆分,得到多个拆分字段;

按照拆分顺序将所述多个拆分字段进行序号标注;

选取预设序号的拆分字段为所述目标变量字段。

可选地,所述所述提取所述录制类请求中的请求消息头,包括:

遍历并确定所述录制类请求中的请求头数据类;

对所述请求头数据类进行反射操作,得到请求头方法;

根据所述请求头方法构建请求头提取语句;

执行所述请求头提取语句提取所述录制类请求中的请求消息头。

可选地,所述根据所述ip字段判断所述录制类请求是否经过转发,包括:

将所述ip字段进行逻辑测试,得到逻辑测试值;

当所述逻辑测试值与预设逻辑阈值相同时,确定所述录制类请求经过转发;

当所述逻辑测试值与预设逻辑阈值不同时,确定所述录制类请求未经过转发。

可选地,所述追踪所述录制类请求的源ip字段,包括:

提取所述用户请求中的转发路径参数;

对所述转发路径参数进行反解析,得到转发路径;

根据所述转发路径确定所述用户请求的源发地址;

从所述源发地址中提取所述源ip字段。

可选地,所述利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果,包括:

对所述mock数据进行特征提取,得到mock数据的mock数据特征;

对所述待测试数据集进行特征提取,得到测试数据特征集,其中,所述测试数数据特征集包括所述待测试数据集中各待测试数据的测试特征;

计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值,选取所述距离值小于预设距离阈值的测试特征对应的待测试数据为目标数据;

利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果。

可选地,所述利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果,包括:

将所述目标数据编译为测试用例;

执行所述测试用例对所述mock数据进行调用测试,得到返回结果;

若所述返回结果为空值,则生成所述待测试数据集的逻辑错误的测试结果;

若所述返回结果不为空值,则生成所述待测试数据集的逻辑正确的测试结果。

为了解决上述问题,本发明还提供一种基于ip的mock数据测试装置,所述装置包括:

字段提取模块,用于获取用户请求,提取所述用户请求中的目标变量字段;

类型判断模块,用于当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求;

转发判断模块,用于提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发;

第一请求生成模块,用于当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

第二请求生成模块,用于当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

数据录制模块,用于调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据;

数据测试模块,用于获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:

存储器,存储至少一个指令;及

处理器,执行所述存储器中存储的指令以实现上述所述的基于ip的mock数据测试方法。

为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的基于ip的mock数据测试方法。

本发明实施例通过对用户请求中目标变量字段的判断,可实现从大量用户请求中需要进行数据测试的录制类请求,避免对所有用户请求进行分析,提高了数据测试的效率;提取录制类请求中的请求消息头,并通过判断录制类请求是否经过转发获取该录制类请求的源ip地址,进而生成待执行录制请求对mock平台进行录制得到mock数据,实现了基于ip地址精准的对mock平台中的数据进行录制,避免了由于录制类请求的转发导致需要再次对录制类请求进行分析来获取mock数据,有利于提高数据测试的效率;获取待测试数据集,利用mock数据对所述待测试数据集中的数据进行测试,实现了利用mock数据直接对待测试数据集中的数据进行测试,有利于提高数据测试的效率。因此本发明提出的基于ip的mock数据测试方法、装置、电子设备及计算机可读存储介质,可以解决使用mock工具进行数据测试的效率不高的问题。

附图说明

图1为本发明一实施例提供的基于ip的mock数据测试方法的流程示意图;

图2为本发明一实施例提供的基于ip的mock数据测试装置的功能模块图;

图3为本发明一实施例提供的实现所述基于ip的mock数据测试方法的电子设备的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本申请实施例提供一种基于ip的mock数据测试方法。所述基于ip的mock数据测试方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述基于ip的mock数据测试方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。

参照图1所示,为本发明一实施例提供的基于ip的mock数据测试方法的流程示意图。在本实施例中,所述基于ip的mock数据测试方法包括:

s1、获取用户请求,提取所述用户请求中的目标变量字段。

本发明实施例中,所述用户请求为任何系统中用户发起的请求命令,例如,数据管理系统中用户发起的调用数据的请求命令。

详细地,本发明实施例使用asm增强字节码过滤器拦截获取网络中的用户请求,所述asm增强字节码过滤器是一款基于java字节码层面的代码分析工具,利用asm增强字节码过滤器对用户请求进行拦截,可提高用户请求拦截的成功率。

进一步地,所述提取所述用户请求中的目标变量字段,包括:

遍历并确定所述用户请求中字段分隔符的位置;

根据所述字段分隔符的位置对所述用户请求进行字段拆分,得到多个拆分字段;

按照拆分顺序将所述多个拆分字段进行序号标注;

选取预设序号的拆分字段为所述目标变量字段。

例如,用户请求为“qwe<rt<yuio<pl”,其中,<为字段分隔符,则按照用户请求中字段分隔符的位置将用户请求进行字段拆分为:“qwe”、“rt”、“yuio”和“pl”四个拆分字段,并按照拆分顺序将多个拆分字段进行序号标注为:1“qwe”、2“rt”、3“yuio”和4“pl”,例如,预设序号为2,则确定字段“rt”为目标变量字段。

s2、当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求。

本发明实施例中,所述录制变量字段是需要进行mock录制的录制类请求中特有的变量字段。

详细地,将获取的所述目标变量字段与预设的录制变量字段进行对比,若目标变量字段与预设的录制变量字段一致时,则确定用户请求为录制类请求,若目标变量字段与预设的录制变量字段不一致时,则确定用户请求为非录制类请求。

s3、提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发。

本发明实施例中,可利用java中的反射技术提取所述录制类请求中的请求消息头,所述反射技术是java中根据字符串获取数据类的方法,利用反射技术提取录制类请求中的请求消息头,可提高获取请求消息头的效率。

详细地,所述所述提取所述录制类请求中的请求消息头,包括:

遍历并确定所述录制类请求中的请求头数据类;

对所述请求头数据类进行反射操作,得到请求头方法;

根据所述请求头方法构建请求头提取语句;

执行所述请求头提取语句提取所述录制类请求中的请求消息头。

具体地,所述对所述请求头数据类进行反射操作,得到请求头方法,例如,利用如下java语句对所述请求头数据类进行反射操作:

stringname="hualing";classc1=name.getclass();system.out.println(c1.getname())。

其中,"hualing"为所述请求头数据类。

当对所述请求头数据类进行反射操作后,即可得到请求头方法。具体地,根据所述请求头方法构建请求头提取语句的具体方法包括:构建如下请求头提取语句:stringname=field.getname()。

进一步地,本发明实施例中可利用解析器解析所述请求得到所述请求消息头中的ip字段,所述解析器包括carakanc/c++,squirrelfishc++和squirrelfishextremec++等。

详细地,所述根据所述ip字段判断所述录制类请求是否经过转发,包括:

将所述ip字段进行逻辑测试,得到逻辑测试值;

当所述逻辑测试值与预设逻辑阈值相同时,确定所述录制类请求经过转发;

当所述逻辑测试值与预设逻辑阈值不同时,确定所述录制类请求未经过转发。

详细地,由于录制类请求在被拦截之前可能经历过多个计算机的转发,进而导致请求中的ip地址发生了改变,本发明实施例根据ip字段判断录制类请求是否经过转发,有利于后续针对性的作出不同的操作,以提高mock录制的成功率。

s4、当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求。

本发明实施例中,当所述录制类请求未经过转发,则直接将所述ip字段作为所述目标变量字段的字段值,即利用所述ip字段对所述目标变量字段进行赋值,得到待执行录制请求。

s5、当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求。

本发明实施例中,所述追踪所述录制类请求的源ip字段,包括:

提取所述用户请求中的转发路径参数;

对所述转发路径参数进行反解析,得到转发路径;

根据所述转发路径确定所述用户请求的源发地址;

从所述源发地址中提取所述源ip字段。

详细地,本发明实施例中,可利用具有参数抓取功能的python语句从所述用户请求中提取出所述转发路径参数,所述转发路径参数是用户请求在被转发的过程中计算机生成并标记于用户请求内的特定字段。

具体地,对转发路径参数进行反解析,得到转发路径,其中,反解析是解析的逆过程,按照解析器对用户请求进行解析的反过程执行,即可实现对转发路径参数进行反解析,得到所述转发路径。

进一步地,本发明实施例根据转发路径确定用户请求的源发地址,即确定转发路径最前端的网络地址为源发地址,例如,转发路径为www.xxxx/yyyy/uuuu/iiii.com,则确定转发路径最前端的网络地址(xxxx)为源发地址。

具体地,从所述源发地址中提取所述源ip字段的步骤与步骤s3中提取ip字段的步骤一致,在此不做赘述。

详细地,本发明实施例将追踪到的用户请求的源ip字段作为所述目标变量字段的字段值,即利用所述源ip字段对所述目标变量字段进行赋值,得到待执行录制请求。

s6、调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据。

本发明实施例中,所述预先构建的mock平台为包含需要进行数据测试的数据的平台。

详细地,所述调用预先构建的mock平台,包括:

获取所述mock平台的配置文件;

根据所述配置文件编译所述mock平台的接口调用语句;

利用所述接口调用语句调用所述mock平台。

本发明实施例中,可利用具有数据抓取功能的java语句从mock平台的后台数据中抓取mock平台的配置文件。

进一步地,本发明实施例通过现有aper-mock.properties方法根据所述配置文件编译所述mock平台的接口调用语句,示例如下:

#apermock;apermock.log.show=true;

#apermock连接模式:local本地读取,database数据库方式,http网络连接获取;apermock.connect.mode=database;

#apermock连接的数据库mode为database,支持mysql、oracle、mongo;apermock.connect.database=mysql;

……。

本发明实施例中,所述利用所述待执行录制请求对所述mock平台进行mock录制之前,所述方法还包括根据所述待执行录制请求中的目标变量字段的字段值判断所述待执行录制请求的类型,例如,当目标变量字段的字段值与预先存储的第一字段值相同时,确定所述待执行录制请求的类型为http请求,当目标变量字段的字段值与预先存储的第二字段值相同时,确定所述待执行录制请求的类型为esa请求。

进一步地,所述利用所述待执行录制请求对所述mock平台进行mock录制,包括:

获取所述mock平台的平台参数;

当所述待执行录制请求为http请求时,将所述平台参数作为请求体写入所述待执行录制请求的第一请求方法,生成录制指令;

当所述待执行录制请求为esa请求时,将所述平台参数作为请求体写入所述待执行录制请求的第二请求方法,生成录制指令;

执行生成的录制指令对所述mock平台进行mock录制。

本发明实施例中,对于http请求,以增加字节码方式将所述平台参数作为请求体写入所述待执行录制请求的第一请求方法(如closeablehttpresponseexecute(finalhttpurirequestrequest)方法)生成录制指令;对于esa请求,以增加字节码方式将所述平台参数作为请求体写入所述待执行录制请求的第二请求方法(如serviceresponse_perform(servicerequestsr)方法)生成录制指令。

s7、获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

本发明实施例中,可利用具有数据抓取功能的python语句从预先构建的区块链节点中获取用户上传的待测试数据集,利用区块链对数据的高吞吐性,可提高获取所述待测试数据集的效率,所述待测试数据集中存在着多个待测试数据。

详细地,所述利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果,包括:

对所述mock数据进行特征提取,得到mock数据特征;

对所述待测试数据集进行特征提取,得到测试数据特征集,其中,所述测试数数据特征集包括所述待测试数据集中各待测试数据的测试特征;

计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值,选取所述距离值小于预设距离阈值的测试特征对应的待测试数据为目标数据;

利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果。

具体地,所述对所述mock数据进行特征提取,得到mock数据的mock数据特征,包括:

获取训练mock数据以及所述训练mock数据对应的标准mock数据特征;

利用预设的特征提取模型对所述训练mock数据进行特征提取,得到预测mock数据特征;

计算所述预测mock数据特征和所述标准mock数据特征之间的差异值;

若所述差异值大于误差阈值,则调整所述特征提取模型的参数后重新进行特征提取;

若所述差异值小于所述误差阈值,则生成训练完成的特征提取模型;

利用训练完成的特征提取模型对所述mock数据进行特征提取,得到mock数据特征。

较佳地,所述计算所述预测mock数据特征和所述标准mock数据特征之间的差异值,包括:

利用如下差异值算法计算所述预测mock数据特征和所述标准mock数据特征之间的差异值

其中,为所述预测mock数据特征,y为所述标准mock数据特征,α为预设常数,n为所述预测mock数据特征的个数。

详细地,对待测试数据集进行特征提取,得到测试数据特征集的步骤与对mock数据进行特征提取,得到mock数据的mock数据特征的步骤一致,在此不做赘述。

进一步地,所述计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值,包括:

利用如下距离值算法计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值:

其中,l(x,y)为所述距离值,x为所述mock数据特征,yi为所述测试数据特征集中第i个测试数据特征。

本发明实施例中,所述距离值用于表示待测试数据集中各待测试数据与mock数据是否匹配,若所述距离值大于或等于预设的距离阈值,则说明待测试数据与mock数据不匹配,无法用mock数据对所述待测试数据进行测试,若所述距离值小于预设的距离阈值,则说明待测试数据与mock数据匹配,科员用mock数据对所述待测试数据进行测试,因此通过距离值计算来确定待测试数据集中可以被所述mock进行测试的待测试数据有哪些,选取距离值小于预设距离阈值的测试特征对应的待测试数据为目标数据。

进一步地,所述利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果,包括:

将所述目标数据编译为测试用例;

执行所述测试用例对所述mock数据进行调用测试,得到返回结果;

若所述返回结果为空值,则生成所述待测试数据集的逻辑错误的测试结果;

若所述返回结果不为空值,则生成所述待测试数据集的逻辑正确的测试结果。

本发明实施例中,可利用编译器将所述目标数据编译为测试用例,所述测试用例包括用于数据测试的计算机逻辑语句,执行编译完成的测试用例对所述mock数据进行调用测试,若mock数据返回不为空值的返回结果,则确定测试结果为逻辑正确,若mock数据返回为空值的返回结果,则确定测试结果为逻辑错误。

本发明实施例通过对用户请求中目标变量字段的判断,可实现从大量用户请求中需要进行数据测试的录制类请求,避免对所有用户请求进行分析,提高了数据测试的效率;提取录制类请求中的请求消息头,并通过判断录制类请求是否经过转发获取该录制类请求的源ip地址,进而生成待执行录制请求对mock平台进行录制得到mock数据,实现了基于ip地址精准的对mock平台中的数据进行录制,避免了由于录制类请求的转发导致需要再次对录制类请求进行分析来获取mock数据,有利于提高数据测试的效率;获取待测试数据集,利用mock数据对所述待测试数据集中的数据进行测试,实现了利用mock数据直接对待测试数据集中的数据进行测试,有利于提高数据测试的效率。因此本发明提出的基于ip的mock数据测试方法,可以解决使用mock工具进行数据测试的效率不高的问题。

如图2所示,是本发明一实施例提供的基于ip的mock数据测试装置的功能模块图。

本发明所述基于ip的mock数据测试装置100可以安装于电子设备中。根据实现的功能,所述基于ip的mock数据测试装置100可以包括字段提取模块101、类型判断模块102、转发判断模块103、第一请求生成模块104、第二请求生成模块105、数据录制模块106和数据测试模块107。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。

在本实施例中,关于各模块/单元的功能如下:

所述字段提取模块101,用于获取用户请求,提取所述用户请求中的目标变量字段;

所述类型判断模块102,用于当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求;

所述转发判断模块103,用于提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发;

所述第一请求生成模块104,用于当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

所述第二请求生成模块105,用于当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

所述数据录制模块106,用于调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据;

所述数据测试模块107,用于获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

详细地,所述基于ip的mock数据测试装置中的各模块在被电子设备的处理器执行时,能够实现一种包括如下操作步骤的基于ip的mock数据测试方法:

所述字段提取模块101,用于获取用户请求,提取所述用户请求中的目标变量字段。

本发明实施例中,所述用户请求为任何系统中用户发起的请求命令,例如,数据管理系统中用户发起的调用数据的请求命令。

详细地,本发明实施例使用asm增强字节码过滤器拦截获取网络中的用户请求,所述asm增强字节码过滤器是一款基于java字节码层面的代码分析工具,利用asm增强字节码过滤器对用户请求进行拦截,可提高用户请求拦截的成功率。

进一步地,所述字段提取模块101具体用于:

遍历并确定所述用户请求中字段分隔符的位置;

根据所述字段分隔符的位置对所述用户请求进行字段拆分,得到多个拆分字段;

按照拆分顺序将所述多个拆分字段进行序号标注;

选取预设序号的拆分字段为所述目标变量字段。

例如,用户请求为“qwe<rt<yuio<pl”,其中,<为字段分隔符,则按照用户请求中字段分隔符的位置将用户请求进行字段拆分为:“qwe”、“rt”、“yuio”和“pl”四个拆分字段,并按照拆分顺序将多个拆分字段进行序号标注为:1“qwe”、2“rt”、3“yuio”和4“pl”,例如,预设序号为2,则确定字段“rt”为目标变量字段。

所述类型判断模块102,用于当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求。

本发明实施例中,所述录制变量字段是需要进行mock录制的录制类请求中特有的变量字段。

详细地,所述类型判断模块102将获取的所述目标变量字段与预设的录制变量字段进行对比,若目标变量字段与预设的录制变量字段一致时,则确定用户请求为录制类请求,若目标变量字段与预设的录制变量字段不一致时,则确定用户请求为非录制类请求。

所述转发判断模块103,用于提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发。

本发明实施例中,可利用java中的反射技术提取所述录制类请求中的请求消息头,所述反射技术是java中根据字符串获取数据类的方法,利用反射技术提取录制类请求中的请求消息头,可提高获取请求消息头的效率。

详细地,所述转发判断模块103具体用于:

遍历并确定所述录制类请求中的请求头数据类;

对所述请求头数据类进行反射操作,得到请求头方法;

根据所述请求头方法构建请求头提取语句;

执行所述请求头提取语句提取所述录制类请求中的请求消息头;

解析并获取所述请求消息头中的ip字段;

将所述ip字段进行逻辑测试,得到逻辑测试值;

当所述逻辑测试值与预设逻辑阈值相同时,确定所述录制类请求经过转发;

当所述逻辑测试值与预设逻辑阈值不同时,确定所述录制类请求未经过转发。

具体地,所述对所述请求头数据类进行反射操作,得到请求头方法,例如,利用如下java语句对所述请求头数据类进行反射操作:

stringname="hualing";classc1=name.getclass();system.out.println(c1.getname())。

其中,"hualing"为所述请求头数据类。

当对所述请求头数据类进行反射操作后,即可得到请求头方法。具体地,根据所述请求头方法构建请求头提取语句的具体方法包括:构建如下请求头提取语句:stringname=field.getname()。

进一步地,本发明实施例中可利用解析器解析所述请求得到所述请求消息头中的ip字段,所述解析器包括carakanc/c++,squirrelfishc++和squirrelfishextremec++等。

详细地,由于录制类请求在被拦截之前可能经历过多个计算机的转发,进而导致请求中的ip地址发生了改变,本发明实施例根据ip字段判断录制类请求是否经过转发,有利于后续针对性的作出不同的操作,以提高mock录制的成功率。

所述第一请求生成模块104,用于当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求。

本发明实施例中,当所述录制类请求未经过转发,则直接将所述ip字段作为所述目标变量字段的字段值,即利用所述ip字段对所述目标变量字段进行赋值,得到待执行录制请求。

所述第二请求生成模块105,用于当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求。

本发明实施例中,所述第二请求生成模块105具体用于:

提取所述用户请求中的转发路径参数;

对所述转发路径参数进行反解析,得到转发路径;

根据所述转发路径确定所述用户请求的源发地址;

从所述源发地址中提取所述源ip字段。

详细地,本发明实施例中,可利用具有参数抓取功能的python语句从所述用户请求中提取出所述转发路径参数,所述转发路径参数是用户请求在被转发的过程中计算机生成并标记于用户请求内的特定字段。

具体地,对转发路径参数进行反解析,得到转发路径,其中,反解析是解析的逆过程,按照解析器对用户请求进行解析的反过程执行,即可实现对转发路径参数进行反解析,得到所述转发路径。

进一步地,本发明实施例根据转发路径确定用户请求的源发地址,即确定转发路径最前端的网络地址为源发地址,例如,转发路径为www.xxxx/yyyy/uuuu/iiii.com,则确定转发路径最前端的网络地址(xxxx)为源发地址。

具体地,从所述源发地址中提取所述源ip字段的步骤与步骤s3中提取ip字段的步骤一致,在此不做赘述。

详细地,本发明实施例将追踪到的用户请求的源ip字段作为所述目标变量字段的字段值,即利用所述源ip字段对所述目标变量字段进行赋值,得到待执行录制请求。

所述数据录制模块106,用于调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据。

本发明实施例中,所述预先构建的mock平台为包含需要进行数据测试的数据的平台。

详细地,所述数据录制模块106具体用于:

获取所述mock平台的配置文件;

根据所述配置文件编译所述mock平台的接口调用语句;

利用所述接口调用语句调用所述mock平台;

获取所述mock平台的平台参数;

当所述待执行录制请求为http请求时,将所述平台参数作为请求体写入所述待执行录制请求的第一请求方法,生成录制指令;

当所述待执行录制请求为esa请求时,将所述平台参数作为请求体写入所述待执行录制请求的第二请求方法,生成录制指令;

执行生成的录制指令对所述mock平台进行mock录制。

本发明实施例中,可利用具有数据抓取功能的java语句从mock平台的后台数据中抓取mock平台的配置文件。

进一步地,本发明实施例通过现有aper-mock.properties方法根据所述配置文件编译所述mock平台的接口调用语句,示例如下:

#apermock;apermock.log.show=true;

#apermock连接模式:local本地读取,database数据库方式,http网络连接获取;apermock.connect.mode=database;

#apermock连接的数据库mode为database,支持mysql、oracle、mongo;apermock.connect.database=mysql;

……。

本发明实施例中,所述利用所述待执行录制请求对所述mock平台进行mock录制之前,所述方法还包括根据所述待执行录制请求中的目标变量字段的字段值判断所述待执行录制请求的类型,例如,当目标变量字段的字段值与预先存储的第一字段值相同时,确定所述待执行录制请求的类型为http请求,当目标变量字段的字段值与预先存储的第二字段值相同时,确定所述待执行录制请求的类型为esa请求。

本发明实施例中,对于http请求,以增加字节码方式将所述平台参数作为请求体写入所述待执行录制请求的第一请求方法(如closeablehttpresponseexecute(finalhttpurirequestrequest)方法)生成录制指令;对于esa请求,以增加字节码方式将所述平台参数作为请求体写入所述待执行录制请求的第二请求方法(如serviceresponse_perform(servicerequestsr)方法)生成录制指令。

所述数据测试模块107,用于获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

本发明实施例中,可利用具有数据抓取功能的python语句从预先构建的区块链节点中获取用户上传的待测试数据集,利用区块链对数据的高吞吐性,可提高获取所述待测试数据集的效率,所述待测试数据集中存在着多个待测试数据。

详细地,所述数据测试模块107具体用于:

获取待测试数据集;

对所述mock数据进行特征提取,得到mock数据的mock数据特征;

对所述待测试数据集进行特征提取,得到测试数据特征集,其中,所述测试数数据特征集包括所述待测试数据集中各待测试数据的测试特征;

计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值,选取所述距离值小于预设距离阈值的测试特征对应的待测试数据为目标数据;

利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果。

具体地,所述对所述mock数据进行特征提取,得到mock数据的mock数据特征,包括:

获取训练mock数据以及所述训练mock数据对应的标准mock数据特征;

利用预设的特征提取模型对所述训练mock数据进行特征提取,得到预测mock数据特征;

计算所述预测mock数据特征和所述标准mock数据特征之间的差异值;

若所述差异值大于误差阈值,则调整所述特征提取模型的参数后重新进行特征提取;

若所述差异值小于所述误差阈值,则生成训练完成的特征提取模型;

利用训练完成的特征提取模型对所述mock数据进行特征提取,得到mock数据特征。

较佳地,所述计算所述预测mock数据特征和所述标准mock数据特征之间的差异值,包括:

利用如下差异值算法计算所述预测mock数据特征和所述标准mock数据特征之间的差异值

其中,为所述预测mock数据特征,y为所述标准mock数据特征,α为预设常数,n为所述预测mock数据特征的个数。

详细地,对待测试数据集进行特征提取,得到测试数据特征集的步骤与对mock数据进行特征提取,得到mock数据的mock数据特征的步骤一致,在此不做赘述。

进一步地,所述计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值,包括:

利用如下距离值算法计算所述mock数据特征与所述测试数据特征集中各测试特征的距离值:

其中,l(x,y)为所述距离值,x为所述mock数据特征,yi为所述测试数据特征集中第i个测试数据特征。

本发明实施例中,所述距离值用于表示待测试数据集中各待测试数据与mock数据是否匹配,若所述距离值大于或等于预设的距离阈值,则说明待测试数据与mock数据不匹配,无法用mock数据对所述待测试数据进行测试,若所述距离值小于预设的距离阈值,则说明待测试数据与mock数据匹配,科员用mock数据对所述待测试数据进行测试,因此通过距离值计算来确定待测试数据集中可以被所述mock进行测试的待测试数据有哪些,选取距离值小于预设距离阈值的测试特征对应的待测试数据为目标数据。

进一步地,所述利用所述mock数据对所述目标数据进行测试,得到所述待测试数据集的测试结果,包括:

将所述目标数据编译为测试用例;

执行所述测试用例对所述mock数据进行调用测试,得到返回结果;

若所述返回结果为空值,则生成所述待测试数据集的逻辑错误的测试结果;

若所述返回结果不为空值,则生成所述待测试数据集的逻辑正确的测试结果。

本发明实施例中,可利用编译器将所述目标数据编译为测试用例,所述测试用例包括用于数据测试的计算机逻辑语句,执行编译完成的测试用例对所述mock数据进行调用测试,若mock数据返回不为空值的返回结果,则确定测试结果为逻辑正确,若mock数据返回为空值的返回结果,则确定测试结果为逻辑错误。

本发明实施例通过对用户请求中目标变量字段的判断,可实现从大量用户请求中需要进行数据测试的录制类请求,避免对所有用户请求进行分析,提高了数据测试的效率;提取录制类请求中的请求消息头,并通过判断录制类请求是否经过转发获取该录制类请求的源ip地址,进而生成待执行录制请求对mock平台进行录制得到mock数据,实现了基于ip地址精准的对mock平台中的数据进行录制,避免了由于录制类请求的转发导致需要再次对录制类请求进行分析来获取mock数据,有利于提高数据测试的效率;获取待测试数据集,利用mock数据对所述待测试数据集中的数据进行测试,实现了利用mock数据直接对待测试数据集中的数据进行测试,有利于提高数据测试的效率。因此本发明提出的基于ip的mock数据测试装置,可以解决使用mock工具进行数据测试的效率不高的问题。

如图3所示,是本发明一实施例提供的实现基于ip的mock数据测试方法的电子设备的结构示意图。

所述电子设备1可以包括处理器10、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如基于ip的mock数据测试程序12。

其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smartmediacard,smc)、安全数字(securedigital,sd)卡、闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于ip的mock数据测试程序12的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(controlunit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如基于ip的mock数据测试程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。

所述总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。

图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。

进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。

可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

所述电子设备1中的所述存储器11存储的基于ip的mock数据测试程序12是多个指令的组合,在所述处理器10中运行时,可以实现:

获取用户请求,提取所述用户请求中的目标变量字段;

当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求;

提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发;

当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据;

获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

具体地,所述处理器10对上述指令的具体实现方法可参考图1至图3对应实施例中相关步骤的描述,在此不赘述。

进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)。

本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:

获取用户请求,提取所述用户请求中的目标变量字段;

当所述目标变量字段与预设的录制变量字段一致时,确定所述用户请求为录制类请求;

提取所述录制类请求中的请求消息头,解析并获取所述请求消息头中的ip字段,根据所述ip字段判断所述录制类请求是否经过转发;

当所述录制类请求未经过转发,将所述ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

当所述录制类请求经过转发,追踪所述录制类请求的源ip字段,将所述源ip字段作为所述目标变量字段的字段值,得到待执行录制请求;

调用预先构建的mock平台,利用所述待执行录制请求对所述mock平台进行mock录制,得到mock数据;

获取待测试数据集,利用所述mock数据对所述待测试数据集中的数据进行测试,得到所述待测试数据集的测试结果。

在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。

因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。

本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1