一种基于日志分析的接口测试方法及装置
文献发布时间:2023-06-19 11:05:16
技术领域
本申请属于软件项目测试技术领域,具体地讲,涉及一种基于日志分析的接口测试方法及装置。
背景技术
在软件开发过程中,不同的系统、各个模块间的交互一般是通过接口调用实现的,但是在实际工作中,模块间的接口种类繁多,并且接口的修改十分频繁,当上游模块的接口修改后,下游模块有时没有同步进行修改会造成接口调用失败。
因此需要将接口的修改及时通知到各下游模块等调用方,避免出现交易失败的情况。
发明内容
本申请提供了一种基于日志分析的接口测试方法及装置,以至少解决上游接口修改后,下游模块因没有及时进行修改造成的接口调用失败的问题。
根据本申请的一个方面,提供了一种基于日志分析的接口测试方法,包括:
对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文;
对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中;
通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
在一实施例中,对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文,包括:
对获取的应用日志进行批量解压并对应用日志进行清洗;
对清洗后的应用日志进行分类,类型包括:上行网关日志和API应用程序日志;
根据应用日志的类型采用对应的方式输出交易报文。
在一实施例中,根据应用日志的类型采用对应的方式输出交易报文,包括:
对于上行网关日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易报文;
对于API应用程序日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易唯一索引号,再根据交易唯一索引号输出交易报文。
在一实施例中,对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中,包括:
将交易报文转换成json报文;
对json报文进行解析,将json报文中的键转换成父子节点,将json报文中的值转换成子节点值;
将父子节点、子节点值、交易唯一索引号、接口名称加载至MySQL数据库中。
在一实施例中,通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试,包括:
通过接口检查模型检查交易请求URL是否符合预设的接口核对规则;
查询交易报文的字段长度是否符合接口核对规则。
在一实施例中,通过预先建立的接口检查模型对加载至MySQL数据库中的所述接口日志的交易报文进行检查测试,还包括:
获取清洗后的交易文本数据并根据所述交易文本数据建立语料库,对所述语料库中的语料进行分词;
计算分词后的词向量,将所述交易文本数据转换成数值型数据;
利用所述数值型数据对深度学习模型进行训练获得低维稠密向量;
根据所述词向量筛选出交易对象和交易要素的相似语句并对交易对象和交易要素进行补充;
删除相似语句中无效的交易组合获得接口核对规则;
利用所述接口核对规则对交易报文进行检测。
根据本申请的另一个方面,还提供了一种基于日志分析的接口测试装置,包括:
交易报文输出单元,用于对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文;
加载单元,用于对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中;
模型检测单元,用于通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
在一实施例中,交易报文输出单元包括:
日志清洗模块,用于对获取的应用日志进行批量解压并对应用日志进行清洗;
日志分类模块,用于对清洗后的应用日志进行分类,类型包括:上行网关日志和API应用程序日志;
交易报文输出模块,用于根据应用日志的类型采用对应的方式输出交易报文。
在一实施例中,交易报文输出模块包括:
上行网关日志报文输出模块,用于对于上行网关日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易报文;
API报文输出模块,用于对于API应用程序日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易唯一索引号,再根据交易唯一索引号输出交易报文。
在一实施例中,加载单元包括:
格式转换模块,用于将交易报文转换成json报文;
解析模块,用于对json报文进行解析,将json报文中的键转换成父子节点,将json报文中的值转换成子节点值;
加载模块,用于将父子节点、子节点值、交易唯一索引号、接口名称加载至MySQL数据库中。
在一实施例中,模型检测单元包括:
第一检测模块,用于通过接口检查模型检查交易请求URL是否符合预设的接口核对规则;
第二检测模块,用于查询交易报文的字段长度是否符合接口核对规则。
在一实施例中,模型检测单元还包括:
语料库建立模块,用于获取清洗后的交易文本数据并根据所述交易文本数据建立语料库,对所述语料库中的语料进行分词;
词向量计算模块,用于计算分词后的词向量,将所述交易文本数据转换成数值型数据;
训练模块,用于利用所述数值型数据对深度学习模型进行训练获得低维稠密向量;
筛选补充模块,用于根据所述词向量筛选出交易对象和交易要素的相似语句并对交易对象和交易要素进行补充;
删除模块,用于删除相似语句中无效的交易组合获得接口核对规则;
接口检测模块,用于利用所述接口核对规则对交易报文进行检测。
本申请对海量应用日志进行清洗、抽取,然后建立数据仓库,以父子节点的模式进行数据加载,通过梳理接口核对规则建立接口检查模型,对数据仓库中的数据进行分析生成接口检查结果,实时判断检查结果与预期结果是否一致。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种基于日志分析的接口测试方法流程图。
图2为本申请实施例中获取接口日志的交易报文方法流程图。
图3为本申请实施例中采用对应的方式输出交易报文方法流程图。
图4为本申请实施例中报文加载方法流程图。
图5为本申请实施例中对交易报文进行检查测试方法流程图。
图6为本申请提供的一种基于日志分析的接口测试装置的结构框图。
图7为本申请实施例中交易报文输出单元的结构框图。
图8为本申请实施例中交易报文输出模块的结构框图。
图9为本申请实施例中加载单元的结构框图。
图10为本申请实施例中模型检测单元的结构框图。
图11为本申请实施例中模型检测单元的结构框图。
图12为本申请实施例中一种电子设备的具体实施方式。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本申请的具体实施例可以应用于金融领域,也可应用于除金融领域之外的其他领域,本申请不以此为限。
上游接口修改后,下游模块因没有及时进行修改造成的接口调用失败。为了解决该问题,在软件项目测试过程中,可以通过处理分析验收测试阶段系统产生的日志来对系统中的接口进行测试从而发现未曾发现的问题,提高测试效率减少生产事故的发生。基于此,本申请提供了一种基于日志分析的接口测试方法,如图1所示,包括:
S101:对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文。
S102:对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中。
S103:通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
从服务器上获取海量的应用日志并对应用日志进行抽取、清洗、转换、加载等操作,然后梳理接口核对规则,根据接口核对规则建立接口检查模型,在每次日志加载后,利用接口检查模型对日志进行检查并输出检查结果,然后对检查结果进行对比识别。接口检查模型分为:技术规则或者业务规则。
在一实施例中,对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文,如图2所示,包括:
S201:对获取的应用日志进行批量解压并对应用日志进行清洗。
S202:对清洗后的应用日志进行分类,类型包括:上行网关日志和API应用程序日志。
S203:根据应用日志的类型采用对应的方式输出交易报文。
将服务器上下载的应用日志分为上行网关日志和API应用程序日志。对日志进行批量解压,并根据接口列表对日志进行清洗,将与接口相关的日志抽取出来。然后按照日志的两种不同类型获取接口日志的交易报文。
在一实施例中,根据应用日志的类型采用对应的方式输出交易报文,如图3所示,包括:
S301:对于上行网关日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易报文。
S302:对于API应用程序日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易唯一索引号,再根据交易唯一索引号输出交易报文。
在一具体实施例中,对于上行网关日志,通过日志中的交易种类编号遍历所有日志文件,然后获取接口日志的交易报文;对于API应用日志,通过交易种类编号遍历所有日志文件,输出交易唯一的索引号,再通过交易唯一索引号再次遍历所有日志文件,获取接口日志的交易报文。
在一实施例中,对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中,如图4所示,包括:
S401:将交易报文转换成json报文。
S402:对json报文进行解析,将json报文中的键转换成父子节点,将json报文中的值转换成子节点值。
S403:将父子节点、子节点值、交易唯一索引号、接口名称加载至MySQL数据库中。
在一具体实施例中,对抽取后的接口日志的交易报文进行格式转换,将其转换成json报文(轻量级数据交换格式),然后对json报文进行解析,将报文键值对中的key(键)转换成父子节点,value(值)转换成子节点值,最后,将父子节点、子节点值、文件名、交易索引编号、接口名、接口特征和报文类型加载到MySQL数据库中。
在一实施例中,当接口检查模型为基于技术规则建立的时,通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试,如图5所示包括:
S501:通过接口检查模型检查交易请求URL是否符合预设的接口核对规则。
S502:查询交易报文的字段长度是否符合接口核对规则。
在一实施例中,当接口检查模型为基于业务规则建立的时,通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试包括:
获取清洗后的交易文本数据并根据交易文本数据建立语料库,对语料库中的语料进行分词;
计算分词后的词向量,将交易文本数据转换成数值型数据;
利用数值型数据对深度学习模型进行训练获得低维稠密向量;
根据词向量筛选出交易对象和交易要素的相似语句并对交易对象和交易要素进行补充;
删除相似语句中无效的交易组合获得接口核对规则。
在一具体实施例中,接口文档如表1所示:
表1
首先通过调用接口文档生成接口核对规则,其中,规则包括接口名、参数类型、参数名、类型、是否必输、最大长度、描述、示例值、检查规则、匹配源、异步报文匹配规则,例如,接口名:二维码支付交易返回(商户通知);参数类型:返回;参数名:商户编号;类型:字符;是否必输:是;最大长度:15;描述:商户线下档案编号(特约商户12位);示例值:020002040095;检查规则:等于;匹配源:二维码支付交易请求报文;异步报文匹配规则:商户通知的订单号等于二维码支付交易请求报文中的订单号。
再根据接口核对业务规则或者技术规则,建立接口检查模型。每次日志加载后,输出检查结果,并对检查结果进行识别。因此,接口检查模型分为两种:技术规则或者业务规则。
技术规则主要是接口核对规则中的检查规则,例如:
S1、分析二维码支付交易请求、返回报文中URL不一致的问题:
查询表A的子节点作为系统订单号,表A的子节点取值作为系统订单号取值,表A的文件名作为日志1,表A的交易请求作为请求URL,表B的文件名作为日志2,表B的交易请求作为返回URL;当表A的子节点等于商户通知的订单号而且表A的子节点取值等于表B的子节点取值
S2、查询报文某个字段是是否相等且字段长度是否超长的问题:
查询表A的子节点作为参数名,表A的文件名作为日志1,表A的子节点取值作为商户附加数据1,表B的文件名作为日志2,表B的子节点取值作为商户附加数据2
当表A的子节点等于商户附加数据、表B的子节点等于商户附加数据而且表A的子节点取值等于表B的子节点取值
而业务规则主要是通过自然语言处理后的检查规则,比如:
S1、对事件进行分词,计算词向量,然后提取参数名的相似词语;
S2、获取清洗后的文本数据,建立语料库,对语料进行分词;
S3、计算词向量,将文本数据转换成计算机能识别的数值型数据,基于深度学习模型训练,得到低维稠密向量;
S4、根据词向量结果筛选出业务对象、业务要素的相似词语,对业务对象、业务要素进行再补充。例如,根据借记卡词向量查找借记卡的相似词有银行卡、存折等;收费方式与现金的相似词有微信、支付宝等;
S5、根据业务规则删除其中的无效组合。例如,开户收费时,不能使用微信、支付宝等支付方式进行开户收费等。
基于同一发明构思,本申请实施例还提供了一种基于日志分析的接口测试装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该基于日志分析的接口测试装置解决问题的原理与基于日志分析的接口测试方法相似,因此基于日志分析的接口测试装置的实施可以参见基于日志分析的接口测试方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
根据本申请的另一个方面,还提供了一种基于日志分析的接口测试装置,如图6所示,包括:
交易报文输出单元601,用于对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文;
加载单元602,用于对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中;
模型检测单元603,用于通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
在一实施例中,如图7所示,交易报文输出单元601包括:
日志清洗模块701,用于对获取的应用日志进行批量解压并对应用日志进行清洗;
日志分类模块702,用于对清洗后的应用日志进行分类,类型包括:上行网关日志和API应用程序日志;
交易报文输出模块703,用于根据应用日志的类型采用对应的方式输出交易报文。
在一实施例中,如图8所示,交易报文输出模块703包括:
上行网关日志报文输出模块801,用于对于上行网关日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易报文;
API报文输出模块802,用于对于API应用程序日志,通过日志中交易种类编号遍历所有应用日志文件,输出交易唯一索引号,再根据交易唯一索引号输出交易报文。
在一实施例中,如图9所示,加载单元602包括:
格式转换模块901,用于将交易报文转换成json报文;
解析模块902,用于对json报文进行解析,将json报文中的键转换成父子节点,将json报文中的值转换成子节点值;
加载模块903,用于将父子节点、子节点值、交易唯一索引号、接口名称加载至MySQL数据库中。
在一实施例中,如图10所示,模型检测单元603包括:
第一检测模块1001,用于通过接口检查模型检查交易请求URL是否符合预设的接口核对规则;
第二检测模块1002,用于查询交易报文的字段长度是否符合接口核对规则。
在一实施例中,如图11所示,模型检测单元603还包括:
语料库建立模块1101,用于获取清洗后的交易文本数据并根据所述交易文本数据建立语料库,对所述语料库中的语料进行分词;
词向量计算模块1102,用于计算分词后的词向量,将所述交易文本数据转换成数值型数据;
训练模块1103,用于利用所述数值型数据对深度学习模型进行训练获得低维稠密向量;
筛选补充模块1104,用于根据所述词向量筛选出交易对象和交易要素的相似语句并对交易对象和交易要素进行补充;
删除模块1105,用于删除相似语句中无效的交易组合获得接口核对规则;
接口检测模块1106,用于利用所述接口核对规则对交易报文进行检测。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图12,所述电子设备具体包括如下内容:
处理器(processor)1201、内存1202、通信接口(Communications Interface)1203、总线1204和非易失性存储器1205;
其中,所述处理器1201、内存1202、通信接口1203通过所述总线1204完成相互间的通信;
所述处理器1201用于调用所述内存1202和非易失性存储器1205中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文。
S102:对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中。
S103:通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:对获取的应用程序日志进行清洗并从中抽取接口日志,获取接口日志的交易报文。
S102:对交易报文进行格式转换并解析后,将交易报文加载至MySQL数据库中。
S103:通过预先建立的接口检查模型对加载至MySQL数据库中的接口日志的交易报文进行检查测试。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
- 一种基于日志分析的接口测试方法及装置
- 一种基于服务器接口测试的需求模型及接口测试方法、系统