CN116820602A - 一种数据库部分加载*** - Google Patents
一种数据库部分加载*** Download PDFInfo
- Publication number
- CN116820602A CN116820602A CN202310597923.9A CN202310597923A CN116820602A CN 116820602 A CN116820602 A CN 116820602A CN 202310597923 A CN202310597923 A CN 202310597923A CN 116820602 A CN116820602 A CN 116820602A
- Authority
- CN
- China
- Prior art keywords
- coverage
- index
- file
- design module
- identity
- 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.)
- Granted
Links
- 238000013461 design Methods 0.000 claims abstract description 288
- 238000013507 mapping Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 9
- 230000007704 transition Effects 0.000 description 17
- 101150064138 MAP1 gene Proteins 0.000 description 15
- 238000012360 testing method Methods 0.000 description 15
- 101100075995 Schizosaccharomyces pombe (strain 972 / ATCC 24843) fma2 gene Proteins 0.000 description 10
- 238000013500 data storage Methods 0.000 description 3
- 238000013079 data visualisation Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 101150009249 MAP2 gene Proteins 0.000 description 1
- 239000000783 alginic acid Substances 0.000 description 1
- 239000011668 ascorbic acid Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000004334 sorbic acid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- 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
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及电子设计自动化技术领域,特别是涉及一种数据库部分加载***,该***的数据库中包括按照覆盖指标分类的N个索引文件,每个索引文件中包括多个设计模块索引数据块,每个设计模块索引数据块中包括设计模块身份标识及其在覆盖指标文件中的位置信息;在进行加载时,根据用户指定的对象获取相应的设计模块身份标识和覆盖指标类型,并通过索引文件查找设计模块在覆盖指标文件中的位置信息,根据查找到的位置信息加载覆盖指标文件中的数据块;通过索引文件和覆盖指标文件之间的配合,达到部分加载的目的,大幅度减少了加载的数据量,解决了在根据用户指定对象访问数据库时数据加载慢的技术问题。
Description
技术领域
本发明涉及电子设计自动化技术领域,特别是涉及一种数据库部分加载***。
背景技术
前端验证的目的是确保设计的逻辑功能的正确性和完备性。覆盖率驱动的验证技术是通过分析RTL代码的功能覆盖率和代码覆盖率来衡量设计完备性的一个指标。其中覆盖率包括多种类型的覆盖指标,如状态机覆盖率、行覆盖率、条件覆盖率和断言覆盖率等。无论是软件还是硬件仿真,包括形式化验证,都可以输出对应测试模块覆盖率的数据,这些交叉数据必须统一到一个最终的覆盖率数据库和访问接口中,在各工具间共享,才能制定高效的测试计划,避免重复测试。目前的覆盖率数据交换标准UCIS(Unified CoverageInteroperability Standard)提供了标准的节点名称命名格式、不同类型覆盖指标中每种节点的类型标识以及标准化接口等。在UCIS标准中,数据库中的所有数据存储为一个xml格式的数据库文件。当用户查看其中某一类覆盖指标时,***将xml格式的整个数据库文件读入内存,然后解析并建立层级关系,获取相应的覆盖指标。由于将覆盖率数据和覆盖指标的结构化数据同时存储在同一个数据库文件中,用户每次都访问整个数据库文件也可能会导致覆盖指标的结构化数据被篡改的数据安全风险。
发明内容
为了解决在根据用户指定对象访问数据库时数据加载慢的技术问题,本发明采用的技术方案为:一种数据库部分加载***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件metrindex和目标文件,其中:sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系;metrindex包括按照覆盖指标分类的N个索引文件{metrindex1,metrindex2,…,metrindexg,…,metrindexN},metrindexg为第g个覆盖指标metricg的索引文件,g的取值范围为1到N;metrindexg包括M1个设计模块索引数据块pos,pos={pos1,pos2,…,posr,…,posR},posr为第r个设计模块索引数据块,r的取值范围为1到R;posr包括第r个设计模块的设计模块身份标识信息ridr和第r个设计模块在目标文件中的位置信息locr;其中第f个设计模块索引数据块posf的设计模块身份标识信息ridf≠ridr,f的取值范围为1到R且f≠r;当计算机程序被处理器执行时,实现以下步骤:
C100,当用户选择部分加载时,加载映射文件sdb和索引文件metrindex;
C200,根据用户指定的第一目标对象获取用户指定的覆盖指标类型metricg和设计模块身份标识ridr;
C300,根据metricg查找metrindex中所有的索引文件,得到metricg的索引文件metrindexg;
C400,根据目标设计模块的设计模块身份标识ridr查找metrindexg中的设计模块索引数据块,得到目标设计模块在目标文件中的目标位置信息locr;
C500,将目标文件中在目标位置信息locr范围内的数据块加载至内存。
本发明提供了一种数据库部分加载***,通过在不同覆盖指标对应的索引文件indxf中配置每个设计模块在目标文件中的位置,使用户在指定对应的设计模块或者实例时,能够快速通过相应的覆盖指标对应的索引文件获取相应设计模块在目标文件中的位置范围,进而加载该位置范围内的数据块,通过索引文件和覆盖指标文件之间的配合,达到部分加载的目的,大幅度减少了加载的数据量,解决了在根据用户指定对象访问数据库时数据加载慢的技术问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为实施例一提供的覆盖指标的结构化数据离散存储***示意图;
图2为本发明实施例二提供的数据定位方法流程图;
图3为本发明实施例三提供的数据可视化定位方法流程图;
图4为本发明实施例四提供的数据库部分加载方法流程图;
图5为本发明实施例五提供的目标文件部分加载方法流程图;
图6为本发明实施例六提供的部分加载目标文件的方法流程图;
图7为本发明实施例七提供的覆盖率存储方法流程图;
图8为本发明实施例八提供的覆盖率获取方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于UCIS提供的数据库包括源文件的基本信息、设计模块的基本信息、实例的基本信息、覆盖指标的结构化数据和不同测试用例得到的覆盖率数据等,其中结构化数据包括不同类型覆盖指标的层级结构关系。在UCIS标准中,数据库中的所有数据存储为一个xml格式的数据库文件。当用户查看其中某一类覆盖指标时,***将xml格式的整个数据库文件读入内存,然后解析并建立层级关系,获取相应的覆盖指标。由于将覆盖率数据和覆盖指标的结构化数据同时存储在同一个数据库文件中,用户每次都访问整个数据库文件也可能会导致覆盖指标的结构化数据被篡改的数据安全风险。针对该技术问题,本发明提出了实施例一。
实施例一
请参阅图1,实施例一提供了一种覆盖指标的结构化数据离散存储***,该***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括N个覆盖指标文件item={item1,item2,…,itemi,…itemN},其中itemi为设计模块的第i类覆盖指标的结构化数据存储文件,i的取值范围为1到N。需要说明的是,由于不同的覆盖指标所需的数据不同,因此用不同的覆盖指标文件存储对应的结构化数据;在同一个覆盖指标文件itemi中可以包括多个不同的设计模块的结构化数据。其中,覆盖指标(metric)的类型包括条件覆盖指标、行覆盖指标、断言覆盖指标、有限状态机覆盖指标、翻转覆盖指标或功能覆盖指标等。
可选的,itemi为行覆盖指标文件、条件覆盖指标文件、有限状态机覆盖指标文件、断言覆盖指标文件、翻转覆盖指标文件或功能覆盖指标文件,现有技术中其他类型的覆盖指标也落入本发明的保护范围之内。其中,第j类覆盖指标文件itemj的类型与itemi不同,j的取值范围为1到N,且i≠j。
其中,设计模块的结构化数据为具有层次结构的树形结构,该树形结构符合UCIS标准,包括:设计模块覆盖域、指标覆盖域(scope)和覆盖项(coveritem objects),在树形层次结构中,设计模块覆盖域为树形结构的根节点,覆盖项为树形结构的叶子节点,指标覆盖域为树形结构的中间节点;其中作为中间节点的指标覆盖域还可以包括多层具有父子嵌套结构的指标覆盖域。需要说明的是,由于一个覆盖指标文件中包括至少一个设计模块,每个设计模块对应一个树形结构。可选的,在覆盖指标文件中的设计模块可以是模块(module)、封装(package)、程序(program)、接口(interface)等。覆盖项为衡量覆盖率的基本单位,所有覆盖项的覆盖状态构成相应父节点覆盖域的覆盖率,以此类推,所有覆盖域的覆盖率构成一个根节点的覆盖率。
作为一个示例,当覆盖指标的类型为有限状态机(Finite-state machine,FSM)时,有限状态机覆盖指标文件中包括多个设计模块,每个设计模块中包括多个有限状态机,此时在覆盖指标文件中包括多个以设计模块为根节点的树形结构,以设计模块为根节点的树形结构中还包括以根节点为父节点的指标覆盖域,每个指标覆盖域为对应的多个有限状态机的指标覆盖域,有限状态机的指标覆盖域的结构相似,不同点在于不同有限状态机的状态配置和状态转换配置。例如,设计模块test1中包括一个有限状态机curr_state1,该有限状态机包括状态覆盖域state和状态转换覆盖域transtation,状态覆盖域包括所有状态覆盖项,例如错误状态、空闲状态、占用状态等;状态转换覆盖域包括所有状态转换覆盖项,例如由错误状态转换为空闲状态、由空闲状态转换为错误状态、由空闲状态转换为占用状态、由占用状态转换为错误状态、由占用状态转换为空闲状态等。则设计模块test1的树形结构中以test1为根节点、以curr_state1为父指标覆盖域、以state和transtation为子指标覆盖域、以所有状态覆盖项和所有状态转换覆盖项为叶子节点,其中父指标覆盖域的父节点为根节点,子指标覆盖域的父节点为父指标覆盖域,父指标覆盖域和子指标覆盖域为具有嵌套结构的中间节点。
作为另一个示例,当指标覆盖域的类型为条件和表达式时,其对应的覆盖指标的结构化数据包括两个树形结构:条件结构和表达式结构,其中条件结构中包括条件覆盖域以及条件覆盖域包括的所有条件覆盖项;表达式结构包括表达式覆盖域以及表达式覆盖域包括的所有表达式覆盖项。其中,每种类型中都可以包括多个指标覆盖域的嵌套结构。
优选的,覆盖指标文件以覆盖指标的类型命名。
进一步,itemi包括:M1个设计模块覆盖域数据块root={root1,root2,…,rootm1,…,rootM1};其中,rootm1为第m1个设计模块覆盖域数据块,包括设计模块身份标识ridm1,m1的取值范围为1到M1。其中,第f个设计模块覆盖域数据块rootf的身份标识ridf与ridm1不同,f的取值范围为1到M1且f≠m1。
优选的,每个设计模块覆盖域数据块还包括设计模块类型标识,其中设计模块类型标识符合UCIS标准。
其中,itemi为json格式的文件,每个数据块为json格式文件中用于描述一个对象的多个基本信息构成的一条数据,具体的,每个数据块中包括B个键值对:{Key1:value1,Key2:value2,…,Keyi:valuei,…,KeyB:valueB},其中每一个键值对表示对象的一种基本信息,在数据块中的键值对是一个无序的键值对集合,键值对的位置可以进行交换。
例如:设计模块覆盖域数据块为{“rid”:1,“type”:“24”,“name”:“fsm”},该设计模块覆盖域数据块共计包括3个键值对,其中设计模块身份标识“rid”作为键和值“1”构成一个键值对,设计模块类型标识type作为键和值“24”构成一个键值对,设计模块名称name作为键和值“fsm”构成一个键值对,该数据块描述的对象为设计模块身份标识为1、类型为24、名为fsm的设计模块对象。
进一步,itemi还包括:M2个指标覆盖域数据块scope,scope={scope1,scope2,…,scopem2,…,scopeM2},其中,scopem2为第m2个指标覆盖域数据块,scopem2包括指标覆盖域身份标识sidm2,m2的取值范围为1到M2。
需要说明的是,指标覆盖域数据块为数据块中的一种类型,每种指标覆盖域数据块包括指标覆盖域的多种基本信息,指标覆盖域数据块为树形结构中的中间节点。
其中,指标覆盖域数据块中包括父指标覆盖域和子指标覆盖域,子指标覆盖域绑定父指标覆盖域。scope中同一个父节点的所有指标覆盖域数据块为并列的节点。在itemi中计算机在将相应数据块加载至内存时按照数据块的分布顺序加载,进而使分布在itemi中位于rootm1下的所有指标覆盖域数据块在加载至内存之后形成以rootm1为父节点,在rootm1下的所有指标覆盖域数据块为子节点的层次结构,rootm1的范围为从rootm1之后的第一个数据块开始向后分布直至没有其他数据块或者执行到下一个设计模块覆盖域数据块为止。
可选的,在一条从根节点到叶子节点的路径中,所经过的中间节点可以包括多个作为指标覆盖域的中间节点,这多个指标覆盖域构成层次结构。当scopem2绑定的父节点为第m2′个指标覆盖域数据块scopem2′时,spidm2=sidm2′,其中sidm2′为scopem2′的指标覆盖域身份标识,m2′的取值范围为1到M2。覆盖域绑定标识用于建立数据块之间的结构化关系。
进一步,itemi还包括:M3个分别绑定scope中指标覆盖域数据块的覆盖项数据块cvitem={cvitem1,cvitem2,…,cvitemm3,…,cvitemM3},其中,cvitemm3为第m3个覆盖项数据块,包括覆盖项身份标识iidm3、覆盖项绑定标识ipidm3,m3的取值范围为1到M3;当cvitemm3绑定scopem2时,ipidm3等于绑定的scopem2的sidm2。其中,每个覆盖项数据块绑定一个指标覆盖域数据块,指标覆盖域数据块和覆盖项数据块不能绑定同一个父节点,同一个父节点下的子节点为同一种数据块类型。例如,子节点全部为子指标覆盖域数据块或者全部为覆盖项数据块,但不能同时包括指标覆盖域数据块和覆盖项数据块。
需要说明的是,覆盖项数据块为数据块中的一种类型,包含覆盖项的多种基本信息。覆盖项为树形结构中的叶子节点。
优选的,每个设计模块覆盖域数据块还包括设计模块类型标识、每个指标覆盖域数据块还包括指标覆盖域类型标识、每个覆盖项数据块还包括覆盖项类型标识,其中,设计模块类型标识、指标覆盖域类型标识和覆盖项类型标识符合UCIS标准。需要说明的是,在UCIS标准中定义了不同覆盖指标对应的树形层次结构,以及每个树形层次结构中每个节点的类型标识。例如,在UCIS标准中有限状态机的代码覆盖率,设计模块覆盖域的类型标识为24、父指标覆盖域FSM的类型标识为22、子指标覆盖域包括状态覆盖域的类型标识为29和状态转换覆盖域的类型标识为30、状态覆盖项和状态转换覆盖项的类型标识均为11。采用符合UCIS标准的类型标识,使本发明实施例所提供的存储***可以作为共享***,一方面可以通过标准UCIS接口从第三方数据库中直接提取相应的覆盖率数据,另一方面还能够将离散存储***对应的覆盖率数据共享给其他数据库使用。
其中,在itemi中同一个覆盖指标类型的树形结构对应的多个不同设计模块中的设计模块类型标识相同。在UCIS标准中定义了每类覆盖指标对应的树形结构以及树形结构中每个节点的类型标识。例如,在UCIS标准中定义了条件覆盖指标、行覆盖指标、断言覆盖指标或有限状态机覆盖指标等,每个覆盖指标对应的标准树形结构以及相应树形结构中每个节点的类型标识。
其中,每个设计模块覆盖域数据块作为树形结构的根节点,在该设计模块覆盖域数据块下的所有数据块均属于该设计模块覆盖域数据块;当存在多个设计模块覆盖域数据块时,则当前设计模块覆盖域数据块rootm1之后且在下一个设计模块覆盖域数据块rootm1+1之前的所有数据块均属于设计模块覆盖域数据块rootm1。子指标覆盖域数据块通过绑定父指标覆盖域数据块的身份标识来建立指标覆盖域之间的结构关系,不同类型的指标覆盖域层次关系符合UCIS标准中的结构定义,同理,覆盖项数据块通过绑定指标覆盖域的身份标识来建立覆盖项与指标覆盖域之间的结构关系,进而形成以一个设计模块为根节点、指标覆盖域为中间节点以及覆盖项为叶子节点的树形结构。
优选的,每个设计模块覆盖域数据块还包括设计模块名称、每个指标覆盖域数据块还包括指标覆盖域名称、每个覆盖项数据块还包括覆盖项名称。
优选的,所述离散化存储***还包括源文件的基本信息文件,所述源文件的基本信息文件包括X1个源文件的基本信息数据块{sorf1,sorf2,…,sorfx1,…,sorfX1},sorfx1为第x1个源文件的基本信息数据块,x1的取值范围1到X1;sorfx1包括源文件身份标识sorfidx1与源文件的绝对路径RLx1的映射关系。可选的,源文件的绝对路径RLx1为源文件的存储路径。
优选的,rootm1还包括源文件身份标识sorfx1。在编译时能够根据该源文件身份标识通过源文件的基本信息文件中的映射关系获取源文件的绝对路径,进而根据源文件的绝对路径访问源文件。通过源文件身份标识替代源文件的绝对路径的方式能够进一步减少绝对路径占用的存储空间。
综上所述,本发明实施例提供的一种覆盖指标的结构化数据离散存储***,该***包括N个覆盖指标文件,每个覆盖指标文件为一类覆盖指标对应的设计模块的结构化数据存储文件,在覆盖指标存储文件中包括M1个设计模块覆盖域数据块、M2个指标覆盖域数据块和M3个覆盖项数据块,其中指标覆盖域数据块和覆盖项数据块之间通过绑定标识建立层次结构关系,由于离散存储***中的数据块采用json格式进行离散存储,同时又通过绑定标识建立数据块之间的层次结构,达到了在保证数据之间层次结构的同时又离散化存储的目的,解决了标准UCIS数据库中由于数据库是一个整体必须将整个数据库读入内存才能建立层级关系的技术问题,同时由于结构化数据不再与覆盖率数据存储在同一个文件中,因此同时解决了结构化数据容易被篡改的技术问题。
作为一个优选实施例,在实施例一的基础上,itemi中所有数据块包括的身份标识全局唯一。具体的,设计模块身份标识、指标覆盖域身份标识和覆盖项身份标识全局唯一。需要说明的是,设计模块身份标识全局唯一是指在该数据库中同一设计模块的身份标识相同,不同设计模块的身份标识不同,且设计模块身份标识、指标覆盖域身份标识和覆盖项身份标识互不相同;也即使用同一个身份标识的设计模块被认为是同一个设计模块,同理其他类型的身份标识。作为一个示例,在itemj中包括与rootm1相同的设计模块A,设计模块A的身份标识同样为ridm1。当用户指定一个唯一的设计模块身份标识时,***能够直接定位到唯一的数据块,不需要分层查找,达到快速定位的目的。
可选的,身份标识的数据类型均为长整型或者通用唯一识别码(UniversallyUnique Identifier,UUID)。当身份标识的数量巨大时,长整型的身份标识会占用较大的存储空间,此时采用UUID能够节省存储空间。
在该优选实施例中itemi中所有数据块包括的身份标识全局唯一的缺陷为:当采用长整型存储时,当需要存储的结构化数据数量非常庞大时,身份标识数据也会非常庞大,进而占用大量的存储空间;当采用UUID时,对于数量庞大的数据可以相对减少空间存储资源的占用,但是当身份标识数据量本身就较少时,UUID又会由于本身固定长度的原因占用更多空间。为了解决身份标识占用大量存储空间的技术问题,本发明提出了以下优选实施例。
作为一个优选实施例,itemi中所有设计模块身份标识全局唯一,指标覆盖域身份标识在同一父节点下唯一、覆盖项身份标识在同一父节点下唯一。需要说明的是,由于在以同一个设计模块为父节点的所有指标覆盖域身份标识统一独立编号且互不相同。其中,覆盖项身份标识的编号方式相同,下面以覆盖项为例进行说明,在同一父节点下的所有覆盖项统一独立编号且互不相同。作为一个示例,当有限状态机中包括两个指标覆盖域:状态覆盖域节点和状态转换覆盖域节点,状态覆盖域作为父节点包括的子节点有:错误状态节点、空闲状态节点、占用状态节点;状态转换覆盖域作为父节点包括的子节点有:由错误状态转换为空闲状态的节点、由空闲状态转换为错误状态的节点、由空闲状态转换为占用状态的节点、由占用状态转换为错误状态的节点、由占用状态转换为空闲状态的节点;其中一种身份标识的组合可以是:在设计模块下的两个状态覆盖域独立编号:身份标识为01的状态覆盖域节点、身份标识为02的状态转换覆盖域节点,属于同一父节点的子节点包括两组,两组分别独立编码,一组为身份标识为01的状态覆盖域的子节点:身份标识为01的错误状态节点、身份标识为02的空闲状态节点、身份标识为03的占用状态节点,另一组为身份标识为02的状态转换覆盖域节点的子节点:身份标识为01的由错误状态转换为空闲状态的节点、身份标识为02的由空闲状态转换为错误状态的节点、身份标识为03的由空闲状态转换为占用状态的节点、身份标识为04的由占用状态转换为错误状态的节点、身份标识为05的由占用状态转换为空闲状态的节点。
通过同一个父节点下身份标识唯一的方法能够使每个父节点下的身份标识独立计数,大幅度降低身份标识占用存储空间的问题,解决了由于身份标识数据量占用巨大的数据存储空间的技术问题。
作为一个优选实施例,itemi中所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、覆盖项身份标识在同一父节点下唯一。指标覆盖域对应的身份标识全局唯一是指itemi中所有设计模块中的指标覆盖域身份标识统一独立编号且互不相同。作为一个示例,itemi中包括第一设计模块中的指标覆盖域数据块和第二设计模块中的指标覆盖域数据块,其中第一设计模块中指标覆盖域数据块的身份标识为001,第二设计模块中指标覆盖域数据块的身份标识为002,其中第一设计模块和第二设计模块中的身份标识001-002即为统一编号且互不相同。
通过指标覆盖域身份标识全局唯一,覆盖项身份标识在同一父节点下唯一的方式,使覆盖项身份标识在每个父节点下重新独立编号,也同样能够解决由于身份标识数据量占用巨大的数据存储空间的技术问题。并在通过指标覆盖域身份标识中全局唯一能够使用户在查找树形结构时,降低查找的层数,提高查找效率。
作为一个优选实施例,itemi中所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、所有覆盖项身份标识全局唯一。需要说明的是,所有覆盖项身份标识全局唯一是指在itemi中所有模块所包括的所有覆盖项的身份标识统一独立编号且互不相同。相对于所有数据块包括的身份标识全局唯一的方案来说,本实施例不仅能够降低身份标识的最大编号长度,而且能够使用户在查找相应的覆盖项时,由于覆盖项身份标识全局唯一,因此可以直接定位,不需要查找树形结构,提高定位效率。
实施例一将覆盖指标的结构化数据单独存储,能够解决用户每次都访问整个数据库文件导致覆盖指标的结构化数据被篡改的数据安全风险的问题。基于UCIS标准中的xml格式的数据库,即使在用户指定的情况下也需要重新将整个数据库文件读入内存,导致***性能慢。为了解决该问题本发明提出了实施二和实施例三。
实施例二
实施例二提供了一种数据定位***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件indxf和覆盖指标文件item。
进一步,sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。需要说明的是,在sdb文件中定义了覆盖指标文件中的所有设计模块身份标识、实例身份标识,且设计模块身份标识、实例身份标识在数据库的所有文件中全局唯一,也即在其他文件中,例如item文件、索引文件indxf等文件中,同一个设计模块的设计模块身份标识相同,不同设计模块的设计模块身份标识不同,同理实例身份标识全局唯一。
作为一个优选实施例,sdb中的映射关系包括Q1个第一映射关系map1和Q2个第二映射关系map2,map1={map11,map12…,map1q1,…,map1Q1},map1q1为第q1个第一映射关系,map1q1包括第q1个设计模块modq1和设计模块身份标识ridq1之间的映射关系,q1的取值范围为1到Q1;map2={map21,map22…,map2q2,…,map2Q2},map2q2为第q2个第二映射关系,map2q2包括第q2个实例instq2、实例身份标识instidq2和设计模块身份标识ridq1之间的映射关系,q2的取值范围为1到Q2。
其中,一个设计模块在进行覆盖率测试时可能会实例化多个实例,也即一个设计模块身份标识ridq1与多个实例之间建立映射关系。
作为一个优选实施例,map2q2中还包括instq2的父节点身份标识。
进一步,indxf包括D个索引数据块ind,ind={ind1,ind2…,indd,…,indD},indd为第d个索引数据块,indd包括设计模块身份标识ridm1、覆盖指标metrici和设计模块在覆盖指标文件中的位置信息mlined,其中d的取值范围为1到D。
可选的,索引文件indxf由若干索引数据块组成,每个索引数据块可采用xml格式或者json格式。
其中,ridm1属于sdb中预先定义好的一个设计模块身份标识。覆盖指标metrici为item文件对应的一种类型的覆盖指标。其中覆盖指标(metric)的类型在实施例一中已经详细说明,不再赘述。
作为一个优选实施例,当itemi为文本格式时,mlined包括起始行的行号和终止行的行号。
作为一个优选实施例,当itemi为二进制格式时,mlined包括起始位置偏移量和数据长度。其中起始位置偏移量为数据块起始位置相对于文件起始位置的偏移量,起始位置偏移量加上数据长度,即为数据块终止位置。
该indxf用于直接根据用户指定的目标设计模块查找相应设计模块在覆盖指标文件中的行范围,使***直接加载相应行范围内的数据块,而不是整个覆盖指标文件全部加载,减少加载的数据量,提高加载速度。
进一步,item={item1,item2,…,itemi,…itemN},itemi为第i类覆盖指标metrici对应的设计单元的结构化数据存储文件,i的取值范围为1到N;itemi中包括M个覆盖指标数据块,第m个覆盖指标数据块包括设计模块身份标识idm和设计模块在源文件中的位置信息slinem。itemi文件的构成已经在实施例一中详细说明,不再赘述。需要说明的是,覆盖指标数据块包括如实施例一中的设计模块覆盖域数据块root、指标覆盖域数据块scope、覆盖项数据块cvitem,且M=M1+M2+M3,实施例一中已经详细说明,不再赘述。在itemi中的slinem用于当***将相应行范围内的数据块加载到内存之后,根据用户选择的目标对象直接定位到相关源文件中的位置。在itemi中包括用于存储设计模块的结构化数据,也即,当覆盖指标数据块为设计模块覆盖域数据块时,包括设计模块身份标识;当覆盖指标数据块为指标覆盖域数据块时,包括指标覆盖域身份标识;当覆盖指标数据块为覆盖项数据块时包括覆盖项身份标识和覆盖项绑定标识;在将itemi文件读入内存并解析之后相应的覆盖指标数据块之间能够通过绑定标识建立结构化数据关系。
作为一个优选实施例,所述slinem包括设计模块在源文件中左侧的行列位置信息和右侧的行列位置信息。
进一步,请参阅附图2,计算机程序被处理器执行时,实现以下步骤:
A100,将映射文件sdb和索引文件indxf读入内存。其中映射文件sdb和索引文件indxf均为数据库中全局共享文件。
A200,获取用户指定的第一目标对象,所述第一目标对象为模块或者实例。需要说明的是,用户在可视化窗口中选择第一目标对象。
A300,根据所述第一目标对象查找内存中的sdb,得到第一目标对象对应的设计模块身份标识ridm1。需要说明的是,当第一目标对象为实例时,查找map2获取设计模块身份标识。当第一目标对象为设计模块时,查找map1获取设计模块身份标识。
A400,根据ridm1和用户指定的覆盖指标metrici查找内存中的indxf,得到mlined。需要说明的是,此时获取到的mlined为itemi中的一个行范围。例如:当itemi为文本格式时,mlined包括起始行的行号为10和终止行的行号为50,说明在itemi文件中第10行到第50行这个范围内的数据块均属于ridm1,需要将第10行到第50行这个范围内的数据块读入内存。
A500,将itemi中mlined包括的所有数据块ablock读入内存。需要说明的是,该步骤能够将itemi中的设计读入内存,将覆盖指标文件转化为具有层次结构关系的内存数据。
A600,根据用户指定的第二目标对象的身份标识查找内存中的ablock得到第二目标对象在源文件中的位置信息sline。需要说明的是,用户在可视化窗口中选择第二目标对象,其中第二目标对象可以是某一个覆盖项,例如用户在想要查看FSM中的一个空闲状态时,指定该空闲状态对象为第二目标对象。
A700,根据ablock和sline定位第二目标对象在源文件中的位置。
作为一个优选实施例,在数据库中还包括源文件的基本信息文件,在该基本信息文件包括源文件标识和源文件的绝对路径之间的映射关系。其中源文件的基本信息文件在实施例一中已经详细说明,不再赘述。
作为一个优选实施例,ablock中包括源文件身份标识,所述A700还包括:根据源文件身份标识查找源文件的基本信息文件得到源文件的绝对路径,根据源文件的绝对路径打开对应的源文件,并根据sline定位设计模块在源文件中的位置。
综上所述,实施例二的数据库中包括映射文件sdb、索引文件indxf和覆盖指标文件item,首先将映射文件sdb和索引文件indxf读入内存;然后通过用户指定的第一目标对象首先通过sdb获取设计模块身份标识,然后通过indxf获取设计模块在item中的行范围信息,然后根据行范围信息读取覆盖指标文件中的数据块,达到部分加载数据块的目的,最后根据用户指定的目标设计模块获取已读入数据块中所携带的源文件位置信息实现在源文件中定位目标设计模块相应行的目的。解决了现有技术中每次读取数据均需要加载整个数据库文件导致的资源消耗问题。
实施例三
实施例三提供了一种数据可视化定位***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件indxf、覆盖指标文件item和扩展信息文件ext。
进一步,sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。需要说明的是,映射文件sdb与实施例二中相同,不再赘述。
进一步,indxf包括多个索引数据块,每个索引数据块包括模块身份标识、覆盖指标、设计模块在覆盖指标文件中的位置信息iline1和设计模块在扩展信息文件中的位置信息eline2。
其中,iline1用于索引设计模块相关的覆盖指标数据块在覆盖指标文件中的位置,eline2用于索引设计模块相关的扩展数据块在扩展信息文件中的位置。iline1包括每个设计模块对应的相关覆盖指标数据块在覆盖指标文件中的起始位置和终止位置,相应的eline2包括与设计模块对应的扩展数据块在扩展信息文件中的起始位置和终止位置。
需要说明的是,在覆盖指标文件中,每个设计模块相关的数据块按照顺序依次分布,当一个设计模块对应的数据块写完之后,再写入另一个设计模块的相关数据块。例如第一个设计模块的相关数据块位于第1-12行,第二个设计模块的相关数据块位于第13-23行。其中,每个设计模块相关的覆盖指标数据块包括设计模块覆盖域数据块、指标覆盖域数据块和覆盖项数据块等。扩展信息文件中对应一个扩展数据块与覆盖指标文件中的覆盖指标数据块对应,也即在扩展信息文件中的每一个扩展数据块,对应于覆盖指标文件中的覆盖指标数据块。例如,第一模块的相关数据块位于第1-12行,则在扩展信息文件中包括对应的12行扩展数据块。其中,在覆盖指标文件中的设计模块覆盖域数据块和指标覆盖域数据块,在扩展信息文件中均存在相应的扩展数据块;在覆盖指标文件中的覆盖项数据块,在扩展信息文件中可以包括对应的扩展数据块,也可以不包括对应的扩展数据块。
进一步,item包括N个覆盖指标文件,其中第i个覆盖指标文件itemi包括M个覆盖指标数据块,其中第m个覆盖指标数据块包括描述对象的身份标识。需要说明的是,对象为每个数据块所描述的对象,描述对象可以是设计模块、指标覆盖域或者覆盖项,描述对象的身份标识可以是设计模块身份标识、指标覆盖域身份标识或者覆盖项身份标识等。其中覆盖指标文件item与实施例一中相同,不再赘述。
进一步,ext包括N个扩展信息文件,其中第i个扩展信息文件exti包括M(i)个扩展数据块,其中第m个扩展数据块包括关联身份标识和对象在源文件中的位置信息slinem,其中M(i)≤M。其中关联身份标识用于与覆盖指标文件中相应的覆盖指标数据块进行关联。需要说明的是,每一个覆盖指标文件对应一个扩展信息文件。相比较实施例二,是将实施例二中的item文件中的覆盖指标数据块中描述对象的身份标识和位置信息拆开分存,也即将覆盖指标数据块中的结构化信息存储到itemi,以及将覆盖指标数据块中的位置信息存储到exti文件中。该方法能够使***根据实际情况加载对象的有用信息,而不是将对象的全部信息进行加载。
作为一个优选实施例,当exti为条件覆盖指标对应的文件时,扩展数据块中还包括条件和参数的键值对,其中条件键值对中的键为条件命名,键值为条件;参数键值对中的键为参数命名,键值为多个参数的数组。作为一个示例,条件表达式“b&((c&d)?(e|f):(e&f))”,其中b、c、d、e、f分别为一个条件参数,条件键值对为“expr”:“b&((c&d)?(e|f):(e&f))”;参数键值对为“subexpr”:[“b”,“c”,“d”,“e”,“f”]。将额外的信息放入扩展文件,能够减少在计算覆盖率时或合并数据库时加载的数据量,从计算覆盖率和显示的两个角度将对象的信息分为覆盖指标文件和扩展信息文件两个文件,在计算覆盖率时,不需要加载图形用户界面显示相关的扩展信息文件,降低了加载的数据量,提高加载效率。
作为一个优选实施例,exti不包括itemi中覆盖项数据块对应的扩展数据块。覆盖项数据块是否有对应的扩展数据块取决于覆盖指标的类型,当覆盖指标的类型为条件覆盖指标时,条件覆盖指标对应的覆盖项在exti中没有对应的位置信息;当覆盖指标的类型为FSM时,FSM对应的覆盖项在exti中有位置信息。当覆盖项都有位置信息时,扩展信息文件中的每一个扩展数据块都与覆盖指标文件中的覆盖指标数据块一一对应;当覆盖项没有位置信息时,扩展信息文件中除了没有覆盖项数据块对应的扩展数据块之外,其他的数据块一一对应。
作为一个优先实施例,当itemi中所有覆盖指标数据块描述对象的身份标识全局唯一,ext中扩展数据块的关联身份标识与itemi中相应的对象身份标识相同。在***加载itemi之后会为每一个覆盖指标数据块建立内存对象,在加载ext文件时,可以根据关联身份标识将扩展数据块中的位置信息绑定到对应的内存对象上,且绑定的内存对象唯一。需要说明的时,itemi中所有覆盖指标数据块描述对象的身份标识全局唯一,在实施例一的优选实施例中已经详细说明,不再赘述。
作为一个优选实施例,当itemi中所有设计模块身份标识全局唯一、指标覆盖域身份标识在同一父节点下唯一、覆盖项身份标识在同一父节点下唯一时,ext的扩展数据块中设计模块对应的关联身份标识与itemi中的设计模块身份标识相同,指标覆盖域和覆盖项对应的关联身份标识分别为itemi中相应的对象身份标识的全路径名。其中,全路径名的获取步骤包括:在itemi中的设计模块下查找目标对象的数据块,依次拼接由指标覆盖域节点查找到目标对象的数据块所在节点的路径上的对象身份标识,得到全路径名。作为一个示例,通过描述对象的身份标识和绑定标识在itemi中查找“Id:1,name:STATE_ERROR”的一条路径为:“Id:1,name:curr_state1”、“Id:2,name:UCIS:STATE”、“Id:1,name:STATE_ERROR”,其中,curr_state1节点和UCIS:STATE节点均为指标覆盖域节点,STATE_ERROR为覆盖项节点;则依次将路径中每个对象身份标识拼接得到在ext中的全路径名为:1.2.1,也即该覆盖项的关联身份标识为1.2.1。若查找的目标对象为“Id:2,name:UCIS:STATE”,则该指标覆盖域的关联身份标识为1.2。以此类推。可选的,对象身份标识拼接字符还可以采用其他字符。可选的,对象身份标识拼接格式还可以采用其他格式。关联身份标识的设置使得相应的指标覆盖域和覆盖项在扩展信息文件中都具有唯一的身份标识,通过关联身份标识能够达到将相应扩展数据块中的位置信息绑定到唯一的内存对象的目的。在进行部分加载时,根据不同的设计模块身份标识加载相应的设计模块,关联身份标识在同一个设计模块内唯一。需要说明的是,在itemi中所有设计模块身份标识全局唯一、指标覆盖域身份标识在同一父节点下唯一、覆盖项身份标识在同一父节点下唯一,在实施例一的优选实施例中已经详细说明,不再赘述。
作为一个优选实施例,当itemi中所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、覆盖项身份标识在同一父节点下唯一时,ext的扩展数据块中设计模块对应的关联身份标识与itemi中的设计模块身份标识相同,指标覆盖域对应的关联身份标识与itemi中的指标覆盖域身份标识相同,覆盖项对应的关联身份标识包括itemi中的覆盖项身份标识和覆盖项绑定标识。由于设计模块身份标识和指标覆盖域身份标识分别全局唯一,且相应的扩展数据块的关联身份标识分别与设计模块身份标识和覆盖域身份标识相同,因此能够将扩展数据块中的位置信息唯一的绑定到相应的内存对象上。而通过覆盖项身份标识和覆盖项绑定标识在扩展信息文件中重新指定覆盖项与指标覆盖域之间的父子关系,进而达到通过覆盖项身份标识和覆盖项绑定标识将扩展数据块中的位置信息唯一绑定到内存对象的目的。需要说明的是,itemi中所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、覆盖项身份标识在同一父节点下唯一,在实施例一的优选实施例中已经详细说明,不再赘述。
作为一个优选实施例,当所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、所有覆盖项身份标识全局唯一时,且ext文件中不包括覆盖项的扩展数据块时,ext中扩展数据块的关联身份标识与itemi中相应的对象身份标识相同。需要说明的是,itemi中所有设计模块身份标识全局唯一、指标覆盖域对应的身份标识全局唯一、所有覆盖项身份标识全局唯一,在实施例一的优选实施例中已经详细说明,不再赘述。
可选的,当itemi中模块身份标识全局唯一、指标覆盖域全局唯一、覆盖项全局唯一时,且ext文件中包括覆盖项的扩展数据块时,设计模块对应的关联身份标识与itemi中的设计模块身份标识相同;指标覆盖域对应的关联身份标识与itemi中的指标覆盖域身份标识相同;覆盖项对应的关联身份标识包括itemi中的覆盖项身份标识和覆盖项类型标识,其中类型标识用于区分覆盖域和覆盖项对应的扩展数据块,通过该方式能够使每个扩展数据块中的位置信息与itemi建立的内存对象进行唯一的绑定。
作为一个优选实施例,当itemi中模块身份标识全局唯一、指标覆盖域全局唯一、覆盖项全局唯一时,且ext文件中包括覆盖项的扩展数据块时,指标覆盖域对应的关联身份标识包括itemi中的指标覆盖域身份标识和指标覆盖域类型标识;设计模块对应的关联身份标识与itemi中的设计模块身份标识相同;覆盖项对应的关联身份标识与itemi中的覆盖项身份标识相同。一般情况下,覆盖项对应的扩展数据块的数量会比较多,指标覆盖域对应的扩展数据块的数量相对较少,通过在指标覆盖域对应的关联身份标识中增加类型标识相对于覆盖项不仅能够节约大量存储空间,而且能够大幅度提高绑定效率。
可选的,对象在源文件中的位置信息为对象在源文件中的行列位置信息。作为一个示例,当对象为FSM的一个状态时,则该位置信息为该状态在源文件中的起始行列号和终止行列号。
进一步,请参阅图3,计算机程序被处理器执行时,实现以下步骤:
B100,将映射文件sdb和索引文件indxf读入内存。
B200,获取用户指定的第一目标对象,所述第一目标对象为设计模块或者实例;根据所述第一目标对象查找内存中的sdb,得到第一目标对象对应的设计模块身份标识ridm1。需要说明的是,设计模块身份标识的查找过程以及第一目标对象与实施例二相同,不再赘述。
B300,根据indxf获取包括ridm1的索引数据块,得到索引数据块中的设计模块在itemi中的位置信息iline1和设计模块在扩展信息文件中的位置信息eline2。优选的,在根据indxf获取包括ridm1的索引数据块之前还包括:根据用户选择的覆盖指标metrici,得到覆盖指标文件itemi。
B400,将itemi中iline1范围内的数据块加载至内存,建立内存对象并绑定对象的身份标识,进而加载itemi中用户指定的模块,达到部分加载的目的。
B500,将ext中eline2范围内的扩展数据块加载至内存,根据扩展数据块中的关联身份标识将对象在源文件中的位置信息slinem与内存对象绑定,进而加载用户指定的模块相关的位置信息,达到部分加载的目的。需要说明的是,在进行覆盖率或合并数据库时计算时,无需加载扩展信息文件ext,能够减少加载的数据量,进而减少占用的内存空间,同时还能够提高加载效率。
B600,根据用户指定的第二目标对象的身份标识查找内存对象绑定的对象的身份标识和对象在源文件中的位置信息,得到第二目标对象在源文件中的位置信息。其中,第二目标对象为用户指定的覆盖项的内存对象。例如,可以是FSM中的某一个状态或者某一个状态转换。
B700,根据第二目标对象在源文件中的位置信息,在源文件中进行定位并可视化显示。
具体的,根据内存对象绑定的源文件身份标识打开对应的源文件,并根据第二目标对象在源文件中的位置信息在源文件中进行定位,并可视化显示第二目标对象在源文件中的位置。其中,由于源文件可以在可视化界面打开,显示出用户指定的第二目标对象在源文件中的位置,例如用户指定的是FSM中的空闲状态这一覆盖项,则在可视化界面中会显示出在ext文件中定义的空闲状态这一行源代码。需要说明的是,在itemi文件中,在设计模块覆盖域数据块中包括源文件身份标识,在itemi文件加载时会为每个数据块建立内存对象,并通过对象身份标识和绑定标识建立层次关系,因此覆盖项数据块对应的内存对象通过查找父节点能够得到绑定的源文件身份标识。源文件身份标识的位置信息保存在源文件的基本信息文件中,其中源文件的基本信息文件在实施例一中已经详细说明,不再赘述。
综上所述,本发明实施例三提供了一种数据可视化定位***,通过将结构化数据和位置信息分别保存在覆盖指标文件和扩展信息文件中的方式,并配合索引文件中保存的模块在覆盖指标文件中的位置信息和在扩展信息文件中的位置信息,不仅能够实现根据用户指定对源文件中的位置进行准确定位的目的,而且在加载的过程中只需要加载相应的设计模块,减少加载的数据量,降低内存资源的占用。同时,将结构化数据和位置信息分别保存在覆盖指标文件和扩展信息文件中,还能够使覆盖率指标整合(merge)的过程中不需要加载不相关的扩展信息,减少加载的数据量,降低内存资源的浪费,提高加载效率。
在根据用户指定的对象访问数据库时,由于在UCIS标准数据库时需要加载整个数据库文件,其中包括大量与用户指定对象无关的冗余信息,导致数据加载慢,针对该技术问题,本发明提出了实施例四、实施例五和实施例六。
实施例四
实施例四提供了一种数据库部分加载***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件metrindex和目标文件。
进一步,sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。映射文件sdb与实施例二中相同,不再赘述。
进一步,metrindex包括按照覆盖指标分类的N个索引文件{metrindex1,metrindex2,…,metrindexg,…,metrindexN},metrindexg为第g个覆盖指标metricg的索引文件,g的取值范围为1到N;metrindexg包括M1个设计模块索引数据块pos,pos={pos1,pos2,…,posr,…,posR},posr为第r个设计模块索引数据块,r的取值范围为1到R;posr包括第r个设计模块的设计模块身份标识信息ridr和第r个设计模块在目标文件中的位置信息locr;其中第f个设计模块索引数据块posf的设计模块身份标识信息ridf≠ridr,f的取值范围为1到R且f≠r。
其中,覆盖指标(metric)的类型包括条件覆盖指标、行覆盖指标、断言覆盖指标或有限状态机覆盖指标、翻转覆盖指标或功能覆盖指标等。
进一步,请参阅图4,当计算机程序被处理器执行时,实现以下步骤:
C100,当用户选择部分加载时,加载映射文件sdb和索引文件metrindex。
C200,根据用户指定的第一目标对象获取用户指定的覆盖指标类型metricg和设计模块身份标识ridr。
可选的,根据第一目标对象查找sdb得到目标设计模块的设计模块身份标识。可选的,所述第一目标对象为设计模块或者实例。需要说明的是,当用户指定的对象为设计模块或者实例时获取设计模块身份标识的方法在实施例二的步骤A300中已经详细说明,不再赘述。
C300,根据metricg查找metrindex中所有的索引文件,得到metricg的索引文件metrindexg。
C400,根据目标设计模块的设计模块身份标识ridr查找metrindexg中的设计模块索引数据块,得到目标设计模块在目标文件中的目标位置信息locr。
可选的,调用标准接口函数,所述标准接口函数的入口参数包括设计模块身份标识和第一目标对象,返回查询获取的目标位置信息。其中,标准接口函数符合UCIS标准。
可选的,所述目标文件为覆盖指标文件、或覆盖指标文件和扩展信息文件。
可选的,当目标文件为覆盖指标文件时,所述覆盖指标文件中的每个覆盖指标数据块包括设计模块身份标识和设计模块在源文件中的位置信息;locr为第r个设计模块在覆盖指标文件中的位置信息。作为一个示例,当设计模块在覆盖指标文件中的行范围为3到13行时,则设计模块索引数据块中的位置信息包括两个键值对,一个键为起始行且键值为3,另一个键为终止行且键值为13。需要说明的是,当目标文件为覆盖指标文件时,覆盖指标文件与实施例二中相同,覆盖指标文件在实施例二已经详细说明不再赘述。
需要说明的是,设计模块在源文件中的位置信息不等于设计模块在覆盖指标文件中的位置信息。源文件为代码源文件,覆盖指标文件为文本格式或二进制格式,在覆盖指标文件中定义了很多对象的数据块,每个数据块中包括结构化信息和相应对象在源文件中的位置信息。而设计模块在覆盖指标中的位置信息是指在树形结构中以设计模块为父节点的所有节点对应的数据块在覆盖指标文件中的行范围。
可选的,当目标文件为覆盖指标文件和扩展信息文件时,所述覆盖指标文件中的每个覆盖指标数据块包括设计模块身份标识,所述扩展信息文件中每个扩展信息数据块包括关联身份标识和对象在源文件中的位置信息;locr为第r个设计模块分别在覆盖指标文件和扩展信息文件中的位置信息。作为一个示例,当设计模块在覆盖指标文件中的行范围为3到13行,且在扩展信息文件中的行范围也是3到13行时,则设计模块索引数据块中的位置信息包括四个键值对,分别为:在覆盖指标文件中的起始行且键值为3,在覆盖指标文件中的终止行且键值为13,在扩展信息文件中的起始行且键值为3,在扩展信息文件中的终止行且键值为13。需要说明的是,当目标文件为覆盖指标文件和扩展信息文件时,覆盖指标文件和扩展信息文件与实施例三中相同,不再赘述。相比较将所有位置信息和结构化信息都放在同一个数据块中的方式,将位置信息和结构化信息放入不同的两个文件,能够根据需要加载,在需要计算覆盖率时,不需要加载位置信息,减少加载的数据量,提高加载效率,同时降低内存负载。
C500,将目标文件中在目标位置信息locr范围内的数据块加载至内存。
可选的,目标文件为覆盖指标文件或者扩展文件。
作为一个优选实施例,当目标文件为文本格式时,locr包括起始行的行号和终止行的行号。需要说明的是,起始行的行号和终止行的行号均是以键值对的形式出现在locr中的。
作为一个优选实施例,当目标文件为二进制格式时,locr包括起始位置偏移量和数据长度。需要说明的是,起始位置偏移量和数据长度均是以键值对的形式出现在locr中的。
综上所述,实施例四提供了一种数据库部分加载***,通过在不同覆盖指标对应的索引文件indxf中配置每个设计模块在目标文件中的位置,使用户在指定对应的设计模块或者实例时,能够快速通过相应的覆盖指标对应的索引文件获取相应设计模块在目标文件中的位置范围,进而加载该位置范围内的数据块,通过索引文件和覆盖指标文件之间的配合,达到部分加载的目的,大幅度减少了加载的数据量,解决了在根据用户指定对象访问数据库时数据加载慢的技术问题。同时按照覆盖指标分类存储相应的位置信息减少了索引文件整体数据量,解决了索引文件数据量大加载慢的技术问题。
实施例五
实施例五提供了一种目标文件部分加载***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件modidx和目标文件。
进一步,sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。映射文件sdb与实施例二中相同,不再赘述。
进一步,modidx包括M1个索引模块{modidx1,modidx2,…,modidxm1,…,modidxM1},modidxm1为第m1个索引模块,m1的取值范围为1到M1;modidxm1包括设计模块身份标识ridm1和N1个覆盖指标组metridx,metridx={metridx1,metridx2,…,metridxn1,…,metridxN1},metridxn1为第n1个覆盖指标组,n1的取值范围为1到N1;metridxn1包括覆盖指标类型和模块在目标文件中的位置信息llocn1,其中第f1个索引模块modidxf1的模块身份标识ridf1≠ridm1,f的取值范围为1到M1且f≠m。
需要说明的是,覆盖指标类型在实施例一已经详细说明不再赘述。
可选的,当目标文件为覆盖指标文件时,位置信息llocn1为设计模块在覆盖指标文件中的行范围信息。需要说明的是,覆盖指标文件与实施例二中相同,不再赘述。
可选的,当目标文件为覆盖指标文件和扩展信息文件时,所述设计模块索引数据块中的位置信息为相应的设计模块分别在覆盖指标文件和扩展信息文件中的行范围信息。需要说明的是,覆盖指标文件和扩展信息文件与实施例三中相同,不再赘述。
作为一个示例,以目标文件为覆盖指标文件为例,在同一个索引文件中按照模块标识划分为不同的索引模块。modidxm1包括{rid:5,“FSM”:{start:1,end:12},COND:{start:13,end:25}…},则其中“rid:5”为模块身份标识为5,FSM和COND分别为覆盖指标类型,“start:1,end:12”为模块身份标识为5的设计模块在覆盖指标文件中的行范围。其中COND为条件覆盖指标。
进一步,请参阅图5,计算机程序被处理器执行时,实现以下步骤:
D100,当用户选择部分加载时,加载映射文件sdb和索引文件modidx。
其中,sdb中的映射关系包括Q1个第一映射关系map1和Q2个第二映射关系map2,map1中包括Q1个设计模块和设计模块身份标识之间的映射关系;map2包括Q2个实例、实例身份标识和设计模块身份标识之间的映射关系。需要说明的是,本实施例五中的sdb与实施例二中的sdb相同,不再赘述。
D200,获取用户指定的第一目标对象查找sdb得到模块身份标识ridm1。其中,第一目标对象为模块或者实例。可选的,当第一目标对象为实例时,根据map2获取模块身份标识;当第一目标对象为模块时,根据map1获取模块身份标识。
D300,根据模块身份标识ridm1和第一目标对象查找modidx,得到用户指定的第一目标对象在目标文件中的位置信息llocn1。
可选的,D300还包括:
D310,根据模块身份标识ridm1查找modidx,得到目标索引模块modidxm1。
D320,根据第一目标对象的覆盖指标类型,查找modidxm1中的metridx得到metridxn1。需要说明的是,覆盖指标类型在实施例一中已经想详细说明,不再赘述。用户指定的第一目标对象为一个内存对象,在***的内存中已经绑定了该对象的相关属性,其中包括覆盖指标类型。
可选的,D300中查找modidx的步骤还包括:调用UCIS标准的查询接口函数,查询接口函数的入口参数包括模块身份标识ridm1和第一目标对象,返回查询获取的目标位置信息llocn1。
D330,根据metridxn1得到第一目标对象在目标文件中的位置信息llocn1。
作为一个优选实施例,当目标文件为文本格式时,llocn1包括起始行的行号和终止行的行号。需要说明的是,起始行的行号和终止行的行号均是以键值对的形式出现在llocn1中的。
作为一个优选实施例,当目标文件为二进制格式时,llocn1包括起始位置偏移量和数据长度。需要说明的是,起始位置偏移量和数据长度均是以键值对的形式出现在llocn1中的。
D400,将目标文件中在位置信息llocn1范围内的数据块加载至内存。
综上所述,实施例五提供了一种数据库部分加载***,通过加载一个索引文件modidx,并在该索引文件中以设计模块身份标识基本单元为每个设计模块配置相应的覆盖指标在目标文件中的位置,加载时只占用一个IO接口,并且能够使用户在指定对应的设计模块或者实例时快速获取相应设计模块在目标文件中的位置范围,进而加载该位置范围内的数据块,通过索引文件和覆盖指标文件之间的配合,达到部分加载的目的,大幅度减少了加载的数据量,解决了在根据用户指定对象访问数据库时数据加载慢的技术问题。在查找时只需要同一个文件中查找,查找效率高。并且按照设计模块身份标识分类,能够使具有相同设计模块身份标识的覆盖指标组共用同一个设计模块身份标识,减少了索引文件中存储的大量相同信息,解决了索引文件中数据量大加载慢的技术问题。
实施例六
请参阅图6,实施例六提供了一种部分加载目标文件的方法,所述方法包括以下步骤:
E100,当用户选择部分加载时,加载映射文件sdb和索引文件mmetrindex;其中sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。
需要说明的是,映射文件sdb与实施例二中相同,不再赘述。
其中,mmetrindex包括N个覆盖指标索引单元{mmetrindex1,mmetrindex2,…,mmetrindexn1,…,mmetrindexN},mmetrindexn1为第n1个覆盖指标索引单元,n1的取值范围为1到N;mmetrindexn1包括覆盖指标类型和N1个模块信息组{modx1,modx2,…,modxn1,…,modxN1},modxn1为第n1个模块信息组,n1的取值范围为1到N1;modxn1包括模块身份标识ridm1和设计模块在目标文件中的位置信息mlocn1,其中第f1个模块信息组modxf1的模块身份标识ridf1≠ridm1,f1的取值范围为1到N1且f1≠m1。其中,覆盖指标类型在实施例一中已经详细说明,不再赘述。
需要说明的是,本发明实施例六中索引文件mmetrindex为一个文件,在加载索引文件时只占用一个IO接口。在该索引文件中以覆盖指标类型分为多个不同的索引单元。
可选的,当目标文件为覆盖指标文件时,位置信息llocn1为设计模块在覆盖指标文件中的行范围信息。需要说明的是,覆盖指标文件与实施例二中相同,不再赘述。
可选的,当目标文件为覆盖指标文件和扩展信息文件时,所述设计模块索引数据块中的位置信息包括设计模块分别在覆盖指标文件和扩展信息文件中的行范围信息。作为一个优选实施例,当exti为条件覆盖指标对应的文件时,拓展数据块中还包括条件和参数的键值对,其中条件键值对中的键为条件命名,键值为条件;参数键值对中的键为参数命名,键值为多个参数的数组。需要说明的是,覆盖指标文件和扩展信息文件与实施例三中相同,不再赘述。
作为一个示例,以目标文件为覆盖指标文件为例,在同一个索引文件中包括四个覆盖指标索引单元,分别为条件覆盖指标对应的第一个覆盖指标索引单元、行覆盖指标对应的第二个覆盖指标索引单元、断言覆盖指标对应的第三个覆盖指标索引单元,以及有限状态机覆盖指标对应的第四个覆盖指标索引单元。在第四个覆盖指标索引单元包括{“FSM”:[{rid:5,start:1,end:12},{rid:6,start:13,end:25}…]},则其中FSM为覆盖指标类型,“rid:5”为模块身份标识为5,其中“start:1,end:12”为模块身份标识为5的设计模块在覆盖指标文件中的行范围。
E200,根据用户指定的第一目标对象得到模块身份标识ridm1和覆盖指标类型。需要说明的是,第一目标对象为设计模块或者实例。用户指定的第一目标对象为内存对象,在该第一目标对象上绑定有该对象的身份标识、类型标识、名称、父节点信息等。
E300,根据模块身份标识ridm1和覆盖指标类型查找索引文件mmetrindex,得到用户指定的设计模块在目标文件中的目标位置信息mlocn1。需要说明的是,在目标文件中包括多个设计模块的数据块,每个设计模块的起始行和截止行范围内的数据块均属于同一个数据块,数据块之间连续相邻。
E400,加载目标文件中在目标位置信息mlocn1范围内的数据块。也即仅加载用户指定的第一目标对象对应的模块,其他模块不进行加载,达到部分加载的目的,减少加载的数据量,提高加载效率,同时减少了占用内存的空间。
作为一个优选实施例,当目标文件为文本格式时,mlocn1包括起始行的行号和终止行的行号。需要说明的是,起始行的行号和终止行的行号均是以键值对的形式出现在mlocn1中的。
作为一个优选实施例,当目标文件为二进制格式时,mlocn1包括起始位置偏移量和数据长度。需要说明的是,起始位置偏移量和数据长度均是以键值对的形式出现在mlocn1中的。
综上所述,本发明实施例提供了一种部分加载目标文件的方法,通过加载一个索引文件mmetrindex,在该索引文件中每一种类型的覆盖指标为一个索引单元,在每个索引单元中包括N1个以设计模块身份标识为分组依据的模块信息组,在加载索引文件时仅需要加载一个索引文件,并且能够使用户指定设计模块或者实例时快速获取设计模块在目标文件中的位置范围,以便在加载时加载该位置范围内的数据块,通过索引文件和覆盖指标文件之间的配合,达到部分加载的目的,大幅度减少了加载的数据量,解决了在根据用户指定对象访问数据库时数据加载慢的技术问题。加载时只需要加载一个索引文件,IO接口占用少且查找效率高;同时减少了索引文件中存储的大量相同信息,解决了索引文件中数据量大加载慢的技术问题。
由于采用标准的UCIS数据库时,用户每执行一次测试用例得到的覆盖状态数据都需要更新到UCIS标准数据库中,也即每执行一个测试用例则需要将数据库文件全部读入内存并更新一次,不仅占用大量的内存资源,而且覆盖指标的结构化数据容易被篡改,为了解决上述问题,本发明提出了实施例七和实施例八。
实施例七
实施例七提供了一种覆盖率存储***,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括N类覆盖指标,N类覆盖指标分别对应的N个覆盖数据文件fdat,fdat中第h个覆盖率数据文件fdath包括:T个实例的覆盖率数据块insth={insth,1,insth,2,…,insth,t,…,insth,T},其中insth,t为第t个实例的覆盖率数据块,t的取值范围为1到T;其中,insth,t包括实例身份标识instidh,t、实例的全路径名instNah,t和覆盖数据datah,t,datah,t中包括覆盖项类型标识itypeh,t、所有覆盖项数量的字段Sumh,t和覆盖值字段Valh,t,Valh,t的二进制位数等于Sumh,t,且每一个二进制位对应一个覆盖项的覆盖状态标识。在对源文件进行编译得到覆盖指标文件之后,用户在利用测试用例测试不同覆盖指标的覆盖率时,会生成相应的覆盖数据;按照覆盖指标类型对覆盖数据进行分类,每一个覆盖数据文件中存储一种类型的覆盖指标对应的覆盖数据,达到编译后的覆盖指标结构化数据与测试后的覆盖数据分离存储的目的,避免编译后的覆盖指标结构化数据被破坏,同时解决了由于UCIS标准中将编译数据和测试数据放入同一个文件导致的编译数据被频繁过度加载的问题。
其中,每个实例具有唯一的身份标识,也即在同一个覆盖数据文件或者不同覆盖数据文件中同一个实例的身份标识相同且不同实例的身份标识不同。实例的身份标识用于将所属数据块中的覆盖指标与覆盖指标文件中的模块数据块关联,以便计算相应模块的覆盖率。
其中,实例的全路径名instNah,t符合UCIS标准中的文件命名格式。其中,insth,t还包括模块数据块的全局标识Sigh,t。其中属于同一个模块的数据块的全局标识相同。其中,覆盖项类型标识用于表示当前覆盖数据在覆盖指标的树形结构中的类型,在UCIS标准中由于不同覆盖指标的树形结构中覆盖项的类型标识不同,因此覆盖项类型能够表示当前覆盖数据所属的覆盖指标以及覆盖项。覆盖值的二进制数据中,0表示测试用例未覆盖对应的覆盖项,1表示测试用例已覆盖对应的覆盖项。覆盖项数量用于表示当前覆盖数据所覆盖的所有覆盖项的数量,其中包括所有待测试的覆盖项,包括未覆盖和已覆盖的所有覆盖项。通过三个字段表示覆盖数据能够准确的表示在item文件中每个数据块建立的内存对象的覆盖状态。
进一步,请参阅图7,所述数据库中还包括映射文件sdb、索引文件和覆盖指标文件,计算机程序被处理器执行时,实现以下步骤:
F100,加载映射文件sdb和索引文件,其中sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系。
可选的,当覆盖指标文件中的覆盖率数据块包括设计模块身份标识和模块在源文件中的位置信息时,索引文件中的索引数据包括设计模块身份标识、覆盖指标和设计模块在覆盖指标文件中的位置信息。需要说明的是,该实施例中的覆盖指标文件和索引文件在实施例二中已经详细说明,不再赘述。
可选的,当覆盖指标文件中的覆盖率数据块包括设计模块身份标识,且不包括位置信息;索引文件中的索引数据块包括模块身份标识、覆盖指标、设计模块在覆盖指标文件中的位置信息和设计模块在扩展信息文件中的位置信息。需要说明的是,该实施例中的覆盖指标文件和索引文件在实施例三中已经详细说明,不再赘述。由于在覆盖指标文件中不包括对象在源文件中的位置信息,且在建立覆盖指标文件与覆盖数据之间的关联时,并不需要定位到对象在源文件中的位置,因此不需要加载扩展信息文件,能够减少加载的数据量,降低内存资源的消耗,提高加载效率。
F200,加载覆盖数据文件fdath,将fdath中的所有覆盖率数据块中的覆盖值数据与覆盖指标文件中的覆盖项数据块之间建立一对一的关联关系。将覆盖值数据与覆盖项之间建立关联关系之后便于计算整体覆盖率。
其中,insth,t的关联关系的建立步骤包括:
F210,获取insth,t的实例身份标识instidh,t。
F220,在sdb中查找与instidh,t构成映射关系的设计模块身份标识ridm1。
F230,在索引文件中查找ridm1对应的设计模块在覆盖指标文件中的目标位置范围。其中,在查找索引文件之前还包括:根据覆盖项类型标识itypeh,t获取覆盖指标类型,根据覆盖指标类型和ridm1查找索引文件得到位置范围。需要说明的是,在UCIS标准中,覆盖项类型标识全局唯一,当得到覆盖项类型标识之后即可获取对应的覆盖指标类型。
F240,在覆盖指标文件中目标位置范围内,获取覆盖项类型标识为itypeh,t的目标覆盖项数据块。
F250,将insth,t中的Valh,t与目标覆盖项数据块进行关联。具体的,Valh,t需要转换为二进制数据,将每一个二进制位按照顺序依次与目标覆盖项数据块进行关联。
可选的,当Valh,t为二进制数据时,每一个二进制位对应一个覆盖项的覆盖状态标识。
作为一种优选实施例,当Valh,t为十六进制的数据时,将Valh,t转化为二进制数据,且每一个二进制位对应一个覆盖项的覆盖状态标识。
综上所述,本发明实施例七提供了一种覆盖率存储***,该***在存储覆盖率数据时,将覆盖值存储于覆盖数据中,并且建立了覆盖项类型标识、覆盖项数量和覆盖值字段之间的映射关系,通过覆盖值和覆盖数量确定在覆盖值中有效数据是哪几位以及每位的覆盖状态,覆盖类型标识明确的指明当前覆盖值所属覆盖指标;并且在覆盖率数据块中还包括实例身份标识,通过实例身份标识能够唯一的确定其对应的设计模块标识,不仅能够通过建立覆盖指标文件和覆盖数据文件之间的关联关系,以便计算覆盖率,而且解决了每次执行测试用例都需要将重新加载并更新整个标准UCIS数据库的技术问题。
实施例八
请参阅图8,实施例八提供了一种覆盖率获取方法,所述方法包括以下步骤:
G200,获取第h个覆盖率数据文件fdath,其中,fdath包括:T个实例的覆盖率数据块insth,insth中的第t个实例的覆盖率数据块insth,t包括实例身份标识instidh,t和覆盖数据datah,t,datah,t包括覆盖项类型标识itypeh,t、所有覆盖项数量的字段Sumh,t和覆盖值字段Valh,t,Valh,t的二进制位数等于Sumh,t,且每一个二进制位对应一个覆盖项的覆盖状态标识。
G400,根据instidh,t查找映射文件sdb,sdb包括模块身份标识和实例身份标识之间的映射关系,获取instidh,t对应的模块身份标识ridm1。
G600,根据itypeh,t得到datah,t的覆盖指标类型。
G800,根据datah,t的覆盖指标类型获取第i类覆盖指标文件itemi,其中itemi中覆盖项数据块中还包括覆盖项类型标识和索引标识,且属于同一个父节点的覆盖项数据块中的索引标识唯一。其中索引标识在同一父节点下唯一是指在该父节点下索引标识独立编号且互不相同。其中itemi文件在实施例一中已经详细说明不再赘述。
G1000,根据itypeh,t查找itemi,得到所有目标覆盖项数据块。
G1200,根据目标覆盖项数据块中的索引标识依次从datah,t中取出每个数据块对应的覆盖状态标识。索引标识的作用相当于在覆盖值数据中的偏移量,能够快速的将对应的覆盖状态标识绑定到对应的目标数据块中,在查找时也能够按照父节点进行快速查找。相比较按照覆盖项数据块身份标识进行排列查找的方法提高了查找效率。需要说明的是,由于每一个父节点下的覆盖项数据块的索引标识唯一,因此父节点的数量决定了datah,t被划分为几段,每段对应一个父节点的指标覆盖域。
G1400,根据每个数据块的覆盖状态标识计算覆盖率。需要说明的是,在将覆盖状态数据绑定到覆盖指标文件itemi中的覆盖项数据块中之后,根据每个覆盖项数据块的覆盖状态计算整体覆盖率。
作为一个优选实施例,所述itemi中不包括用于在图形用户界面显示的扩展信息。可选的,所述扩展信息为对象在源文件中的位置信息。可选的,当itemi为条件覆盖指标文件时,所述扩展信息为条件和参数的键值对、对象在源文件中的位置信息。通过该方式能够进一步的减少加载的数据量,不加载与计算覆盖率无关的相关数据,其中扩展信息可以存储在扩展信息文件中,实施例三已经详细的记载了相关实施例,不再赘述。
作为一个优选实施例,所述insth,t还包括实例的全路径名instNah,t。
本发明还可以通过部分加载的方式加载覆盖指标文件,以减少加载的数据量,减少内存资源的占用。部分加载的方法包括但不限于以下三种方式:
第一种方式,在G1000之前还包括:
G900,部分加载itemi中设计模块身份标识ridm1对应的目标设计模块,包括:
G910,根据datah,t的覆盖指标类型查找所有覆盖指标文件的索引文件,得到目标索引文件,其中索引文件按照覆盖指标分类,每个索引文件中包括设计模块身份标识信息及其在覆盖指标文件中的位置信息。
G920,根据设计模块身份标识ridm1查找目标索引文件中的设计模块索引数据块,得到目标设计模块在itemi中的目标位置信息。
G930,将itemi中在目标位置信息范围内的数据块加载至内存。
需要说明的是,在实施例四已经详细的记载了相关实施例,不再赘述。
第二种方式,所述G1000之前还包括:
G900,部分加载itemi中设计模块身份标识ridm1对应的目标设计模块,包括:
G901,根据模块身份标识ridm1查找索引文件,得到目标索引模块;其中,所述索引文件中包括M1个索引模块,每个索引模块包括设计模块身份标识和按照覆盖指标分组的N1个覆盖指标组,每个覆盖指标组中包括覆盖指标类型和设计模块在覆盖指标文件中的位置信息。
G902,根据datah,t的覆盖指标类型,查找目标索引模块中的覆盖指标组得到目标覆盖指标组。
G903,根据目标覆盖指标组得到目标设计模块在itemi中的目标位置信息。
G904,将itemi中在目标位置信息范围内的数据块加载至内存。
需要说明的是,在实施例五已经详细的记载了相关实施例,不再赘述。
第三种方式,所述G1000之前还包括:
G900,部分加载itemi中设计模块身份标识ridm1对应的目标设计模块,包括:
G9001,根据模块身份标识ridm1和datah,t的覆盖指标类型查找索引文件,得到目标设计模块在itemi中的目标位置信息;其中,所述索引文件包括N个按照覆盖指标类型划分的覆盖指标索引单元,覆盖指标索引单元包括覆盖指标类型和N1个按照设计模块身份标识划分的模块信息组,所述模块信息组包括设计模块身份标识和设计模块在覆盖指标文件中的位置信息。
G9002,加载itemi中在目标位置信息mlocn1范围内的数据块。
需要说明的是,在实施例六已经详细的记载了相关实施例,不再赘述。
作为一个优选实施例,在G1200之前还包括:
G1101,获取itemi中所有目标覆盖项数据块所属的多个父节点。
G1102,将属于同一个父节点的目标覆盖项数据块分为同一个数据组。
G1103,按照父节点在itemi中出现的顺序对数据组进行排序。
作为一个优选实施例,当Valh,t为十六进制的数据时,将Valh,t转化为二进制数据,且每一个二进制位对应一个覆盖项的覆盖状态标识。
综上所述,本发明实施例通过覆盖指标文件配置的索引标识,准确的从覆盖率数据文件的覆盖率数据块中获取覆盖状态标识,进而根据覆盖状态标识计算覆盖率,通过该方式不仅能够使覆盖指标的结构化数据和覆盖率数据分开存储,而且能够准确的将分开存储的结构化数据和覆盖率数据关联起来计算覆盖率,在每次执行测试用例时只需要更新覆盖率数据文件,而不是整个数据库中的所有文件,解决了每次执行测试用例都需要将重新加载并更新整个标准UCIS数据库的技术问题。
Claims (10)
1.一种数据库部分加载***,其特征在于,所述***包括数据库、处理器和存储有计算机程序的存储器,所述数据库包括映射文件sdb、索引文件metrindex和目标文件,其中:
sdb包括设计模块、设计模块身份标识、实例、实例身份标识之间的映射关系;
metrindex包括按照覆盖指标分类的N个索引文件{metrindex1,metrindex2,…,metrindexg,…,metrindexN},metrindexg为第g个覆盖指标metricg的索引文件,g的取值范围为1到N;metrindexg包括M1个设计模块索引数据块pos,pos={pos1,pos2,…,posr,…,posR},posr为第r个设计模块索引数据块,r的取值范围为1到R;posr包括第r个设计模块的设计模块身份标识信息ridr和第r个设计模块在目标文件中的位置信息locr;其中第f个设计模块索引数据块posf的设计模块身份标识信息ridf≠ridr,f的取值范围为1到R且f≠r;
当计算机程序被处理器执行时,实现以下步骤:
C100,当用户选择部分加载时,加载映射文件sdb和索引文件metrindex;
C200,根据用户指定的第一目标对象获取用户指定的覆盖指标类型metricg和设计模块身份标识ridr;
C300,根据metricg查找metrindex中所有的索引文件,得到metricg的索引文件metrindexg;
C400,根据目标设计模块的设计模块身份标识ridr查找metrindexg中的设计模块索引数据块,得到目标设计模块在目标文件中的目标位置信息locr;
C500,将目标文件中在目标位置信息locr范围内的数据块加载至内存。
2.根据权利要求1所述的***,其特征在于,所述目标文件为覆盖指标文件,所述覆盖指标文件中的每个覆盖指标数据块包括设计模块身份标识和设计模块在源文件中的位置信息。
3.根据权利要求2所述的***,其特征在于,所述locr为第r个设计模块在覆盖指标文件中的位置信息。
4.根据权利要求1所述的***,其特征在于,所述目标文件为覆盖指标文件和扩展信息文件,所述覆盖指标文件中的每个覆盖指标数据块包括设计模块身份标识,所述扩展信息文件中每个扩展信息数据块包括关联身份标识和对象在源文件中的位置信息。
5.根据权利要求4所述的***,其特征在于,locr为第r个设计模块分别在覆盖指标文件和扩展信息文件中的位置信息。
6.根据权利要求1所述的***,其特征在于,当目标文件为文本格式时,locr包括第r个设计模块在目标文件中的起始行的行号和终止行的行号。
7.根据权利要求1所述的***,其特征在于,当目标文件为二进制格式时,locr包括第r个设计模块在目标文件中的起始位置偏移量和数据长度。
8.根据权利要求1所述的***,其特征在于,所述sdb中设计模块身份标识和实例身份标识均为全局唯一。
9.根据权利要求1所述的***,其特征在于,所述覆盖指标的类型包括条件覆盖指标、行覆盖指标、断言覆盖指标、有限状态机覆盖指标、翻转覆盖指标或功能覆盖指标。
10.根据权利要求1所述的***,其特征在于,所述用户指定的第一目标对象为设计模块或者实例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310597923.9A CN116820602B (zh) | 2023-05-25 | 2023-05-25 | 一种数据库部分加载*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310597923.9A CN116820602B (zh) | 2023-05-25 | 2023-05-25 | 一种数据库部分加载*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820602A true CN116820602A (zh) | 2023-09-29 |
CN116820602B CN116820602B (zh) | 2024-04-26 |
Family
ID=88140224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310597923.9A Active CN116820602B (zh) | 2023-05-25 | 2023-05-25 | 一种数据库部分加载*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820602B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118035519A (zh) * | 2024-04-12 | 2024-05-14 | 成都融见软件科技有限公司 | 一种分类查找方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292795B1 (en) * | 1998-05-30 | 2001-09-18 | International Business Machines Corporation | Indexed file system and a method and a mechanism for accessing data records from such a system |
CN112306957A (zh) * | 2019-07-30 | 2021-02-02 | 华为技术有限公司 | 获取索引节点号的方法、装置、计算设备和存储介质 |
CN113051181A (zh) * | 2021-04-30 | 2021-06-29 | 腾讯科技(深圳)有限公司 | 确定增量测试覆盖信息的方法、装置、设备和存储介质 |
CN115203004A (zh) * | 2021-04-08 | 2022-10-18 | 北京字节跳动网络技术有限公司 | 代码覆盖率测试方法、装置、存储介质及电子设备 |
CN115237853A (zh) * | 2021-04-22 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 数据查询的方法、装置、电子设备和存储介质 |
-
2023
- 2023-05-25 CN CN202310597923.9A patent/CN116820602B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292795B1 (en) * | 1998-05-30 | 2001-09-18 | International Business Machines Corporation | Indexed file system and a method and a mechanism for accessing data records from such a system |
CN112306957A (zh) * | 2019-07-30 | 2021-02-02 | 华为技术有限公司 | 获取索引节点号的方法、装置、计算设备和存储介质 |
CN115203004A (zh) * | 2021-04-08 | 2022-10-18 | 北京字节跳动网络技术有限公司 | 代码覆盖率测试方法、装置、存储介质及电子设备 |
CN115237853A (zh) * | 2021-04-22 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 数据查询的方法、装置、电子设备和存储介质 |
CN113051181A (zh) * | 2021-04-30 | 2021-06-29 | 腾讯科技(深圳)有限公司 | 确定增量测试覆盖信息的方法、装置、设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118035519A (zh) * | 2024-04-12 | 2024-05-14 | 成都融见软件科技有限公司 | 一种分类查找方法、电子设备及存储介质 |
CN118035519B (zh) * | 2024-04-12 | 2024-06-21 | 成都融见软件科技有限公司 | 一种分类查找方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116820602B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116627972B (zh) | 一种覆盖指标的结构化数据离散存储*** | |
CN116627568B (zh) | 一种数据可视化定位*** | |
CN116610383B (zh) | 一种部分加载目标文件的方法 | |
CN116627973B (zh) | 一种数据定位*** | |
CN108681556B (zh) | 分布式指令域数据的访问方法及其*** | |
CN112434024B (zh) | 面向关系型数据库的数据字典生成方法、装置、设备及介质 | |
CN116820602B (zh) | 一种数据库部分加载*** | |
CN108388640B (zh) | 一种数据转换方法、装置以及数据处理*** | |
Sundarmurthy et al. | m-tables: Representing missing data | |
US20070255685A1 (en) | Method and system for modelling data | |
US20220076151A1 (en) | Computer-implemented system and method having a digital twin and a graph-based structure | |
CN111813744A (zh) | 文件的搜索方法、装置、设备及存储介质 | |
CN114168705B (zh) | 一种基于地址要素索引的中文地址匹配方法 | |
CN113821554B (zh) | 一种实现异构数据库数据采集的方法 | |
CN116954745B (zh) | 一种目标文件部分加载*** | |
CN116627974B (zh) | 一种覆盖率存储*** | |
CN116610577B (zh) | 一种覆盖率获取方法 | |
US20220237500A1 (en) | Test case execution sequences | |
CN109522311A (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN109739910B (zh) | 一种开放性标签管理方法和*** | |
CN108090034B (zh) | 基于集群的单证代码统一编码生成方法和*** | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN111259027A (zh) | 一种数据一致性检测方法 | |
Gür et al. | Multidimensional Enrichment of Spatial RDF Data for SOLAP--Full Version | |
Nordin et al. | Modular lazy search for constraint satisfaction problems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |