CN114138725A - 一种层次化的日志存储处理方法 - Google Patents
一种层次化的日志存储处理方法 Download PDFInfo
- Publication number
- CN114138725A CN114138725A CN202111493806.5A CN202111493806A CN114138725A CN 114138725 A CN114138725 A CN 114138725A CN 202111493806 A CN202111493806 A CN 202111493806A CN 114138725 A CN114138725 A CN 114138725A
- Authority
- CN
- China
- Prior art keywords
- log
- data table
- test
- uuid
- node
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000012360 testing method Methods 0.000 claims abstract description 152
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000001914 filtration Methods 0.000 claims description 17
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种层次化的日志存储处理方法,本申请实施例通过将测试任务中的任务对象预设设置成树类型的数据结构;所述任务对象包括测试项目、测试集、测试用例以及测试步骤;使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识;通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储。采用这种方法避免了使用单一任务造成的欠拟合,以至输出结果的精确度低的问题。
Description
技术领域
本发明属于分布式存储处理领域,尤其涉及一种层次化的日志存储处理方法。
背景技术
日志是在计算机程序的运行过程中记录下来的信息,在任何成熟的计算机系统里面都是重要的一部分,因为通过日志可以追溯测试用例执行的过程和结果,可以分析和定位自动化测试中发现的问题,所以对于自动化测试框架来说日志更是不可或缺的。
在Robotframework框架中使用XML文件记录日志,因为XML文件可以存储结构化的数据,所以相对于Python的文件型日志,它可以存储日志的层级信息,Robotframework框架支持存储下面三个层级的日志:1、测试集合的日志,每个测试集合包含一组测试用例或者其它的测试集合;2、测试用例的日志,每个测试用例包含顺序执行的多个测试步骤;3、测试用例中每个步骤产生的日志。
研究人员发现,Robotframework按照层级存储日志的方案虽然可以比较方便的浏览日志,但是仍然存在下面的缺点:1、XML格式存储的日志缺少层次结构的索引,过滤日志不方便;2、日志层次结构无法扩展,每个步骤内的日志缺少更细粒度的层次结构;3、只能在Roborframework中使用,不支持在其它的Python应用中使用。
发明内容
为了解决上述现有技术中存在的技术问题,本申请提供了一种层次化的日志存储处理方法。
为了达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种层次化的日志存储处理方法,包括如下操作步骤:
将测试任务中的任务对象预设设置成树类型的数据结构;所述任务对象包括测试项目、测试集、测试用例以及测试步骤;其中,当前测试任务设置为根节点,测试项目为第一级子节点,测试集为第二级子节点,测试用例为第三级子节点,测试步骤为第四级子节点;
使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识;
通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储。
优选的,作为一种可实施方案;使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识,具体包括如下操作步骤:
使用Materialized Paths存储树的结构,并同时创建每个当前节点的时候存储从root节点到当前节点的完整路径;
确定并生成每个当前节点对应的唯一的UUID标识。
优选的,作为一种可实施方案;通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储,具体包括如下操作步骤:
建立统一存储的数据库,所述数据库预设设置两个数据表分别为第一数据表和第二数据表;所述第一数据表用于记录存储树类型的数据结构中的层次结构信息;所述第二数据表用于记录存储日志的日志消息;且所述日志消息内设置层级结构信息的UUID标识;
通过数据库的外键将所述第一数据表中的UUID标识和所述第二数据表中的日志消息进行关联得到数据关联关系;
所述第一数据表中的所述层次结构信息包括第一数据表的主键、第一数据表中每个节点的UUID标识、父节点的UUID标识、从根节点到所有节点的路径上的UUID标识以及节点类型信息;
所述第二数据表中的日志消息包括第二数据表的主键、用于关联到层次结构表中的UUID的外键。
优选的,作为一种可实施方案;在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤。
优选的,作为一种可实施方案;所述根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤,具体包括如下操作步骤:
获取当前节点产生的日志,在第一数据表中找到当前节点的UUID标识;
然后遍历树类型的数据结构找到它的所有子孙节点,并同时确定当前节点的所有子孙节点对应的UUID标识;将当前节点的UUID标识和所有子孙节点对应的UUID标识在第二数据表中过滤查找到与当前节点的UUID标识和所有子孙节点对应的UUID标识对应的日志消息,从而缩小日志搜索范围得到第一目标日志搜索结果;
在第一目标日志搜索结果范围内再以关键词实施匹配搜索得到与关键词相关联的第二目标日志搜索结果。
优选的,作为一种可实施方案;在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作步骤。
优选的,作为一种可实施方案;所述根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作,具体包括如下操作步骤:
判断并行执行的当前两个测试项目对应的UUID标识;
如果当前两个测试项目使用了相同的日志数据库,则在执行同时将两个测试项目的项目日志进行合并处理;
如果当前两个测试项目使用了不同的日志数据库,直接合并当前两个日志数据库的项目日志,在合并的时候先合并两个日志数据库中的第一数据表的数据,然后再合并第二数据表的数据。
优选的,作为一种可实施方案;在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前测试用例执行日志调整操作步骤。
优选的,作为一种可实施方案;所述根据第一数据表和第二数据表,对当前测试用例执行日志调整操作,具体包括如下操作步骤:
获取当前测试用例的日志从当前测试集调整到目标测试集的请求指令;
解析当前测试用例的父节点,将第一数据表中当前测试用例的父节点的UUID从当前测试集调整改到目标测试集。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例的一种层次化的日志存储处理方法,采用了如下操作信息处理方式:将测试任务中的任务对象预设设置成树类型的数据结构;所述任务对象包括测试项目、测试集、测试用例以及测试步骤;其中,当前测试任务设置为根节点,测试项目为第一级子节点,测试集为第二级子节点,测试用例为第三级子节点,测试步骤为第四级子节点;使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识;通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储。
在本发明实施例中,通过数据库的外键对日志消息和层次结构信息的关联处理,从而将层次结构信息和日志消息分开存储,且日志消息里面只设置层级结构的UUID,从而便于对日志按照层次进行过滤,日志合并和日志调整层次等处理操作。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种层次化的日志存储处理方法中针对测试任务的树形结构图;
图2是本申请实施例的一种层次化的日志存储处理方法的主要操作步骤流程图;
图3是本申请实施例的层次化的日志存储处理方法中的使用Materialized Paths存储树的结构示例图;
图4是本申请实施例的层次化的日志存储处理方法的第一具体实现流程示意图;
图5是本申请实施例的层次化的日志存储处理方法的第二具体实现流程示意图;
图6是本申请实施例的层次化的日志存储处理方法的第三具体实现流程示意图;
图7是本申请实施例的层次化的日志存储处理方法的第四具体实现流程示意图;
图8是本申请实施例的层次化的日志存储处理方法的第五具体实现流程示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,某些指示的方位或位置关系的词语,其仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,需要说明的是,“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。
参见图1,本发明实施例提供的一种层次化的日志存储处理方法其应用的测试任务可以按照下面的树形结构进行组织以及设置;对于每个测试步骤对应的Python函数,可能包含多个进程或者线程,所以上图中的结构可以延伸为更多的层次。为了能够在日志中记录这些层次结构,需要设计一种新型的日志存储方法来保存当前测试任务的层次结构信息,详见后续实施例。
实施例一
如图2所示,本发明实施例一提供了一种层次化的日志存储处理方法,所述方法包括:
步骤S10,将测试任务中的任务对象预设设置成树类型的数据结构;所述任务对象包括测试项目、测试集、测试用例以及测试步骤;其中,当前测试任务设置为根节点,测试项目为第一级子节点,测试集为第二级子节点,测试用例为第三级子节点,测试步骤为第四级子节点;
步骤S20,使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点(包括根节点和各级别子节点)设置UUID标识;
需要说明的是,上述每条日志中通过设置上面的UUID标识,这样就可以将日志消息关联到树类型的数据结构中的一个层次节点,从而给日志消息增加层次结构信息(实现日志关联到树类型的数据结构,从而给日志增加层次结构信息)。
步骤S30,通过数据库的外键(该数据库的外键具体就是指第二数据表中的meta_UUID,其主要用于存储层级结构信息的UUID标识)以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储。
本发明实施例提供的层次化的日志存储处理方法,通过数据库的外键对日志消息和层次结构信息的关联处理用以为日志按照层次进行日志过滤,日志合并和日志调整处理做技术准备;如果把层次结构信息直接设置在日志消息里面,那么会有很多的冗余信息,所以选择将层次结构和日志消息分开存储,且日志消息里面只设置层级结构的UUID;在本发明实施例的具体技术方案中,其使用数据库存储层次结构信息和日志消息,便于对日志按照层次进行过滤,日志合并和日志调整层次等处理操作,详见后续操作技术方案。
关于层次结构设计:日志的层次结构是树状的,所以可以直接使用树类型的数据结构表示日志的层次关系,具体方法如下:
使用Materialized Paths存储树的结构,也就是创建每个节点的时候存储从root节点到当前节点的完整路径,这种方法更适合在二维表结构中表示树的结构,所以更适合在数据库中使用,具体的例子如下,详见图3(左边是树的定义,右边是使用MaterializedPaths存储的树);使用UUID标识树的每个节点,也就是将上图3中的数字标识替换成UUID,由于UUID的唯一性,可以避免出现重复的节点,便于合并和修改层次结构;例如,“Red”对应的数字标识为“/1/2/3”,然而“Yellow”对应的数字标识为“/1/2/5”。然后通过上述数字标识替换成UUID标识。
需要说明的是,上述UUID的目的是让测试任务中的所有元素,都能有唯一的辨识,每个任务节点都可以建立不与其它任务节点冲突的UUID。在这样的情况下,就不需考虑数据库日志信息处理时的名称重复问题。需要说明的是,其主键是唯一标识一条记录,其不会出现重复问题,该主键的作用是用来保证数据完整性;外键(表的外键是另一表的主键,外键可以有重复的,可以是空值),且外键的主要作用是用来和其他表建立联系使用(一个表可以有多个外键),比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键;
参见图4,在上述步骤S20执行过程中,“使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息(即任务对象),并且给树类型的数据结构中的每个节点设置UUID标识”,具体包括如下操作步骤:
步骤S201,使用Materialized Paths存储树的结构,并同时创建每个当前节点的时候存储从root节点到当前节点的完整路径;
步骤S202,确定并生成每个当前节点对应的唯一的UUID标识。
参见图5,在步骤S30执行过程中,通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储,具体包括如下操作步骤:
步骤S301,建立统一存储的数据库,所述数据库预设设置两个数据表分别为第一数据表和第二数据表;所述第一数据表用于记录存储树类型的数据结构中的层次结构信息;所述第二数据表用于记录存储日志的日志消息(实际上每个第二数据表中存储着层次结构表中每一级节点的任务对象产生的日志消息;这样一来一个第一数据表可能对应着很多个第二数据表);且所述日志消息内设置层级结构信息的UUID标识;
步骤S302,通过数据库的外键将所述第一数据表中的UUID标识和所述第二数据表中的日志消息进行关联得到数据关联关系。
所述第一数据表中的所述层次结构信息包括ID(即层次结构表的主键也可称为第一数据表的主键)、UUID(即层次树节点的唯一标识)、Parent UUID(即父节点的UUID)、Path(即从root节点到当前节点所有节点的UUID,或称从根节点到所有节点的路径上的UUID标识信息)以及Kind(即节点类型)。其中,上述层次结构表也可称为第一数据表;
所述第二数据表中的日志消息包括ID(即日志消息表的主键,也可称为第二数据表的主键)、meta_UUID(即外键用于关联到层次结构表中的UUID)、otherlogfields(即日志的其他信息)。
这里我们选择数据库来统一存储层次结构和日志消息,使用两张数据表分别存储层次结构和日志原始的消息,通过外键将层级结构表中的UUID和日志消息记录关联起来,具体的Schema如下:
层次结构表(即第一数据表):记录树状的层次结构信息
日志消息表(即第二数据表):记录原因的日志消息
优选的,作为一种可实施方案;在所述步骤S30之后还包括:根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤。
参见图6,所述根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤,具体包括如下操作步骤:
步骤S303,日志按照层次进行过滤:获取当前节点(例如当前节点就是测试集A)产生的日志,在第一数据表中找到当前节点(即测试集A)的UUID标识;
步骤S304,然后遍历树类型的数据结构找到它的所有子孙节点,并同时确定当前节点的所有子孙节点对应的UUID标识;将当前节点的UUID标识和所有子孙节点对应的UUID标识在第二数据表中过滤查找到与当前节点的UUID标识和所有子孙节点对应的UUID标识对应的日志消息,从而缩小日志搜索范围得到第一目标日志搜索结果;
步骤S305,在第一目标日志搜索结果范围内再以关键词实施匹配搜索得到与关键词相关联的第二目标日志搜索结果。
需要说明的是,在上述操作过程中实现了搜索日志的相应操作:使用关键字搜索日志的时候,传统文件类型的日志只能在所有的日志文件中搜索,加了层次结构之后,就可以减小搜索的范围;举例说明:比如要搜索指定测试集A产生的日志,那么可以现在层次结构表中找到A的层次UUID(即在第一数据表中找到当前节点(即测试集A)的UUID标识),然后遍历层次结构树找到它的所有子孙节点,就能得到A的所有测试子集和测试用例的层次UUID(即确定当前节点的所有子孙节点对应的UUID标识),拿这个结果先过滤一下日志消息表中的数据,就能很大的缩小搜索的范围(从而先得到第一目标日志搜索结果),此后再使用关键字搜索(即第一目标日志搜索结果基础上进行关键词搜索进一步得到第二目标日志搜索结果),在此过程中搜索的速度会比文件类型的日志快很多;
优选的,作为一种可实施方案;在所述步骤S30之后还包括:根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作步骤。
参见图7,所述根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作,具体包括如下操作步骤:
步骤S306,判断并行执行的当前两个测试项目对应的UUID标识;
如果当前两个测试项目使用了相同的日志数据库,则在执行同时将两个测试项目的项目日志进行合并处理;
如果当前两个测试项目使用了不同的日志数据库,直接合并当前两个日志数据库的项目日志,在合并的时候先合并两个日志数据库中的第一数据表的数据,然后再合并第二数据表的数据。
需要说明的是,测试中经常会并行执行多个测试项目,测试结束后再把所有测试项目的日志合并起来,最后分析所有的日志来生成一个统一的测试报告,因为不同的测试项目可能有相同名称的测试用例;如果使用文件类型的日志合并的时候会有冲突,出现不同测试项目里面相同名称测试用例的日志相互覆盖的问题,而加了层次结构后相同的测试用例也会对应不同的层次UUID:具体情况如下:
如果这些测试项目使用了相同的日志数据库,那么在测试执行过程中已经合并好了,不需要测试结束后再执行日志合并操作。
如果这些项目使用了不同的日志数据库,由于层次的标识使用了UUID,所以在多个数据库之间也是唯一的,所以可以直接合并这些数据看的层次结构表和日志消息表,不会出现数据冲突;所以加了层次结构信息后就不会出现日志相互覆盖的问题了。
优选的,作为一种可实施方案;在所述步骤S30之后还包括:根据第一数据表和第二数据表,对当前测试用例执行日志调整操作步骤。
参见图8,所述根据第一数据表和第二数据表,对当前测试用例执行日志调整操作,具体包括如下操作步骤:
步骤S307,获取当前测试用例的日志从当前测试集调整到目标测试集的请求指令;
步骤S308,解析当前测试用例的父节点,将第一数据表中当前测试用例的父节点的UUID从当前测试集调整改到目标测试集。
需要说明的是关于某个调整日志的案例:举例说明,如果把一个测试用例的日志从测试集合A调整到测试集合B下面,文件类型的日志会涉及到文件拷贝和文件名调整的操作,而加了层次结构的日志方案里面,只需要将层次结构表(即第一数据表)中当前测试用例父节点的UUID从A改到B就可以了,只是一个轻量的数据库update操作,比文件类型的日志调整效率更高。
需要说明的是,关于日志消息和层次结构信息的关联方案具体详见如下技术内容:
举例说明:测试执行的每个层次可能有多条日志消息,比如一个测试步骤可能会发送多条API请求,每个API请求都需要在日志中记录请求参数和返回结果,所以层次结构和测试日志是一对多的关系,如果把层次结构信息直接设置在日志消息里面,那么会有很多的冗余信息,所以选择将层次结构和日志消息分开存储,日志消息里面只设置层级结构的UUID,这样既可以将日志消息关联到层次结构上面,又可以减少冗余信息。
建立统一存储的数据库,所述数据库预设设置两个数据表分别为第一数据表和第二数据表;所述第一数据表用于记录存储树类型的数据结构中的层次结构信息;所述第二数据表用于记录存储日志的日志消息;并通过数据库的外键将所述第一数据表中的UUID标识和所述第二数据表中的日志消息进行关联;
本实施例数据库来统一存储层次结构和日志消息,使用两张数据表分别存储层次结构和日志原始的消息,通过外键将层级结构表中的UUID和日志消息记录关联起来;本发明实施例提供的层次化的日志存储处理方法,相对于Robotframework的日志,这种层次化的存储方法更适合对日志进行过滤,合并和层次调整操作;
关于日志过滤,首先使用日志消息中的meta_UUID可以快速过滤出指定层次的日志,比如指向过滤测试集合A初始化和清理日志,而不需要它下面所有测试用例的日志,那么只需要使用A的meta_UUID来过滤日志消息表;其次使用日志层次结构表中的path可以找出一个节点的所有子孙节点(此处比较容易理解:因为其中“path”记载如下信息:从root节点到当前节点所有节点的UUID,使用斜线或者逗号分割;所以得知指定层次的日志后可以通过根目录推导找到所有子孙节点),所以也就可以快速找出一个层次所有日志(包含所有的子孙层次)。
关于日志合并,对于传统文件类型日志它是使用文件名作为ID的,如果两个测试用例的名称相同,俺么它们的日志文件的名称也相同,合并的时候就会出现日志文件被覆盖的问题。而对于带有层次结构信息的日志,每个层次节点的标识都是唯一的UUID,根据UUID的特性它是全局唯一的,也就多个数据库也不会出现相同的UUID,所以可以直接合并两个数据库的日志,而不用担心日志相互覆盖的问题,合并的时候先合并两个数据库中的层次结构表的数据,然后再合并日志消息表的数据。
关于层次调整,因为层级信息和日志消息是独立在两张表中存放的,所以修改层次结构只需要修改日志层次结构表中path的值,而无需对日志消息表本身做任何修改,相对来说层次结构表的数据量要小很多,能给更快速的对层次进行调整(此时无疑义)。
本发明实施例提供的层次化的日志存储处理方法,其克服了现有技术中存在的问题,实现了技术改进,本发明实施例中的日志存储可以选择NOSQL数据库,达到同样的识别效果;本发明实施例提供的层次化的日志存储处理方法实现了日志层次结构的设计规范,并且同时使用数据库存储技术完成了日志层次结构的构建,并且显著提升了后续的日志过滤,日志合并以及日志调整处理操作的处理效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种层次化的日志存储处理方法,其特征在于,所述方法包括:
将测试任务中的任务对象预设设置成树类型的数据结构;所述任务对象包括测试项目、测试集、测试用例以及测试步骤;其中,当前测试任务设置为根节点,测试项目为第一级子节点,测试集为第二级子节点,测试用例为第三级子节点,测试步骤为第四级子节点;
使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识;
通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储。
2.根据权利要求1所述的层次化的日志存储处理方法,其特征在于,使用测试任务的树类型的数据结构来对应保存当前测试任务的层次结构信息,并且给树类型的数据结构中的每个节点设置UUID标识,具体包括如下操作步骤:
使用Materialized Paths存储树的结构,并同时创建每个当前节点的时候存储从root节点到当前节点的完整路径;
确定并生成每个当前节点对应的唯一的UUID标识。
3.根据权利要求2所述的层次化的日志存储处理方法,其特征在于,通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储,具体包括如下操作步骤:
建立统一存储的数据库,所述数据库预设设置两个数据表分别为第一数据表和第二数据表;所述第一数据表用于记录存储树类型的数据结构中的层次结构信息;所述第二数据表用于记录存储日志的日志消息;且所述日志消息内设置层级结构信息的UUID标识;
通过数据库的外键将所述第一数据表中的UUID标识和所述第二数据表中的日志消息进行关联得到数据关联关系;
所述第一数据表中的所述层次结构信息包括第一数据表的主键、第一数据表中每个节点的UUID标识、父节点的UUID标识、从根节点到所有节点的路径上的UUID标识以及节点类型信息;
所述第二数据表中的日志消息包括第二数据表的主键、用于关联到层次结构表中的UUID的外键。
4.根据权利要求3所述的层次化的日志存储处理方法,其特征在于,在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤。
5.根据权利要求4所述的层次化的日志存储处理方法,其特征在于,所述根据第一数据表和第二数据表,对当前节点产生的日志按照层次进行过滤搜索操作步骤,具体包括如下操作步骤:
获取当前节点产生的日志,在第一数据表中找到当前节点的UUID标识;
然后遍历树类型的数据结构找到它的所有子孙节点,并同时确定当前节点的所有子孙节点对应的UUID标识;将当前节点的UUID标识和所有子孙节点对应的UUID标识在第二数据表中过滤查找到与当前节点的UUID标识和所有子孙节点对应的UUID标识对应的日志消息,从而缩小日志搜索范围得到第一目标日志搜索结果;
在第一目标日志搜索结果范围内再以关键词实施匹配搜索得到与关键词相关联的第二目标日志搜索结果。
6.根据权利要求5所述的层次化的日志存储处理方法,其特征在于,在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作步骤。
7.根据权利要求6所述的层次化的日志存储处理方法,其特征在于,所述根据第一数据表和第二数据表,对当前两个测试项目的项目日志执行日志合并操作,具体包括如下操作步骤:
判断并行执行的当前两个测试项目对应的UUID标识;
如果当前两个测试项目使用了相同的日志数据库,则在执行同时将两个测试项目的项目日志进行合并处理;
如果当前两个测试项目使用了不同的日志数据库,直接合并当前两个日志数据库的项目日志,在合并的时候先合并两个日志数据库中的第一数据表的数据,然后再合并第二数据表的数据。
8.根据权利要求7所述的层次化的日志存储处理方法,其特征在于,在所述通过数据库的外键以及所述树类型的数据结构中的每个节点设置UUID标识对日志消息和层次结构信息进行关联处理,经过关联处理后的层次结构信息和日志消息分开进行数据库存储之后还包括:根据第一数据表和第二数据表,对当前测试用例执行日志调整操作步骤。
9.根据权利要求8所述的层次化的日志存储处理方法,其特征在于,所述根据第一数据表和第二数据表,对当前测试用例执行日志调整操作,具体包括如下操作步骤:
获取当前测试用例的日志从当前测试集调整到目标测试集的请求指令;
解析当前测试用例的父节点,将第一数据表中当前测试用例的父节点的UUID从当前测试集调整改到目标测试集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493806.5A CN114138725A (zh) | 2021-12-08 | 2021-12-08 | 一种层次化的日志存储处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493806.5A CN114138725A (zh) | 2021-12-08 | 2021-12-08 | 一种层次化的日志存储处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138725A true CN114138725A (zh) | 2022-03-04 |
Family
ID=80385270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111493806.5A Pending CN114138725A (zh) | 2021-12-08 | 2021-12-08 | 一种层次化的日志存储处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138725A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168317A (zh) * | 2022-07-29 | 2022-10-11 | 北京志凌海纳科技有限公司 | 一种lsm树存储引擎构建方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093514A (zh) * | 2007-08-20 | 2007-12-26 | 中兴通讯股份有限公司 | 自动化测试日志处理系统 |
CN103229173A (zh) * | 2012-12-26 | 2013-07-31 | 华为技术有限公司 | 元数据管理方法及系统 |
WO2014127385A1 (en) * | 2013-02-18 | 2014-08-21 | Airometric Wireless Inc. | Performance evaluation of services and applications on devices in live wireless environments |
CN109918341A (zh) * | 2019-02-26 | 2019-06-21 | 厦门美图之家科技有限公司 | 日志处理方法及装置 |
CN111190792A (zh) * | 2019-12-20 | 2020-05-22 | 中移(杭州)信息技术有限公司 | 一种日志存储的方法、装置、电子设备及可读存储介质 |
CN111435329A (zh) * | 2019-01-14 | 2020-07-21 | 北京京东尚科信息技术有限公司 | 一种自动化测试方法和装置 |
CN112732563A (zh) * | 2020-12-31 | 2021-04-30 | 深圳赛安特技术服务有限公司 | 接口脚本测试日志提取方法、装置、终端及存储介质 |
CN113392006A (zh) * | 2021-06-17 | 2021-09-14 | 浪潮思科网络科技有限公司 | 一种使用capsys监控自动化测试日志的方法及设备 |
-
2021
- 2021-12-08 CN CN202111493806.5A patent/CN114138725A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093514A (zh) * | 2007-08-20 | 2007-12-26 | 中兴通讯股份有限公司 | 自动化测试日志处理系统 |
CN103229173A (zh) * | 2012-12-26 | 2013-07-31 | 华为技术有限公司 | 元数据管理方法及系统 |
WO2014127385A1 (en) * | 2013-02-18 | 2014-08-21 | Airometric Wireless Inc. | Performance evaluation of services and applications on devices in live wireless environments |
CN111435329A (zh) * | 2019-01-14 | 2020-07-21 | 北京京东尚科信息技术有限公司 | 一种自动化测试方法和装置 |
CN109918341A (zh) * | 2019-02-26 | 2019-06-21 | 厦门美图之家科技有限公司 | 日志处理方法及装置 |
CN111190792A (zh) * | 2019-12-20 | 2020-05-22 | 中移(杭州)信息技术有限公司 | 一种日志存储的方法、装置、电子设备及可读存储介质 |
CN112732563A (zh) * | 2020-12-31 | 2021-04-30 | 深圳赛安特技术服务有限公司 | 接口脚本测试日志提取方法、装置、终端及存储介质 |
CN113392006A (zh) * | 2021-06-17 | 2021-09-14 | 浪潮思科网络科技有限公司 | 一种使用capsys监控自动化测试日志的方法及设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168317A (zh) * | 2022-07-29 | 2022-10-11 | 北京志凌海纳科技有限公司 | 一种lsm树存储引擎构建方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhao et al. | Modeling MongoDB with relational model | |
US9229967B2 (en) | Efficient processing of path related operations on data organized hierarchically in an RDBMS | |
Khan et al. | SQL Database with physical database tuning technique and NoSQL graph database comparisons | |
US20070136382A1 (en) | Efficient path-based operations while searching across versions in a repository | |
CN104123288A (zh) | 一种数据查询方法及装置 | |
CA2461871A1 (en) | An efficient index structure to access hierarchical data in a relational database system | |
Borkar et al. | Have your data and query it too: From key-value caching to big data management | |
Wang et al. | Efficient query processing framework for big data warehouse: an almost join-free approach | |
US7693845B2 (en) | Database systems, methods and computer program products using type based selective foreign key association to represent multiple but exclusive relationships in relational databases | |
Kricke et al. | Graph data transformations in Gradoop | |
CN110109951B (zh) | 一种关联查询的方法、数据库应用系统及服务器 | |
CN109871233B (zh) | 一种云编程文件管理方法及装置、设备、存储介质 | |
CN114138725A (zh) | 一种层次化的日志存储处理方法 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
Mansour et al. | Building data civilizer pipelines with an advanced workflow engine | |
US11567969B2 (en) | Unbalanced partitioning of database for application data | |
CN113282579A (zh) | 一种异构数据存储与检索方法、装置、设备及存储介质 | |
CN111506779B (zh) | 面向数据处理的对象版本与关联信息管理方法及系统 | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
Khelil et al. | Combining graph exploration and fragmentation for scalable RDF query processing | |
CN108595482B (zh) | 一种数据索引方法及装置 | |
CN114791935A (zh) | 一种基于云对象存储的高性能多维数据仓库的实现方法 | |
Khurana | An introduction to temporal graph data management | |
Ahamed | Benchmarking top nosql databases | |
Zaniewicz et al. | Comparison of MongoDB, Neo4j and ArangoDB databases using the developed data generator for NoSQL databases |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220304 |
|
RJ01 | Rejection of invention patent application after publication |