CN110990265B - 一种覆盖率确定方法、装置及存储介质 - Google Patents
一种覆盖率确定方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110990265B CN110990265B CN201911102315.6A CN201911102315A CN110990265B CN 110990265 B CN110990265 B CN 110990265B CN 201911102315 A CN201911102315 A CN 201911102315A CN 110990265 B CN110990265 B CN 110990265B
- Authority
- CN
- China
- Prior art keywords
- data
- coverage
- statistics
- coverage rate
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004458 analytical method Methods 0.000 claims description 35
- 230000003068 static effect Effects 0.000 claims description 22
- 238000012360 testing method Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 17
- 230000001360 synchronised effect Effects 0.000 description 9
- 238000009825 accumulation Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 239000000523 sample Substances 0.000 description 5
- 238000013522 software testing Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000004153 renaturation Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- 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
Abstract
本申请公开了一种覆盖率确定方法,包括:获取至少两次覆盖率统计中的第一数据;获取至少两次覆盖率统计中的第二数据;基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;基于所述累积覆盖信息确定所述第一数据的覆盖率;本申请还公开了一种覆盖率确定装置及存储介质;通过本申请实施例,可以将至少两次覆盖率统计中的第一数据的覆盖信息进行累积,提升软件测试的效率和有效性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种覆盖率确定方法、装置及存储介质。
背景技术
大型高复杂度的软件在敏捷迭代的过程中,为了检测新版本中是否存在漏洞,需要对新版本中的代码进行测试。常用的代码测试方法是覆盖测评,代码测试过程中覆盖率越高,表示源数据中被测试的比例越高。在测试过程中,代码发生变更,就会重新采集覆盖率,且各个版本采集到的覆盖率的结果是孤立存在的。因此,如何将多个测试版本的覆盖率进行累积,提升软件测试的效率和有效性是需要解决的技术问题。
发明内容
本申请实施例提供一种覆盖率确定方法、装置及存储介质,使得在敏捷迭代的过程中,将多个测试版本的覆盖率进行累积,提升软件测试的效率和有效性。
本申请实施例的技术方案是这样实现的:
获取至少两次覆盖率统计中的第一数据;
获取所述至少两次覆盖率统计中的第二数据;
基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;
基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;
基于所述累积覆盖信息确定所述第一数据的覆盖率。
上述方案中,所述获取至少两次覆盖率统计中的第二数据包括:
获取所述至少两次覆盖率统计中,第一数据所属的文件的序号。
上述方案中,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:
针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化;其中,
所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
上述方案中,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:
针对同一个第二数据,在第一覆盖率统计中的第一数据与第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化;
或者,针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化;
或者,针对同一个第二数据,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;
或者,针对同一个第二数据,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
上述方案中,基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
上述方案中,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述至少两次覆盖率统计中的第一数据发生变化的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
上述方案中,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述第一覆盖率统计中的第一数据为新增数据的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
上述方案中,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
上述方案中,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;
或者,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;
或者,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据。
本申请实施例还提供一种覆盖率确定装置,所述装置包括:
获取单元,用于获取至少两次覆盖率统计中的第一数据;用户获取至少两次覆盖率统计中的第二数据;
确定单元,用于基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;基于所述累积覆盖信息确定所述第一数据的覆盖率;
累积单元,用于基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。
上述方案中,所述获取单元,用于获取所述至少两次覆盖率统计中,第一数据所属的文件的序号。
上述方案中,所述确定单元,还用于针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化;其中,
所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
上述方案中,所述确定单元,还用于执行下述中的至少一项:
针对同一个第二数据,在第一覆盖率统计中的第一数据与第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化;
针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化;
针对同一个第二数据,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;
针对同一个第二数据,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
上述方案中,所述累积单元,还用于在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
上述方案中,所述累积单元,还用于在所述至少两次覆盖率统计中的第一数据发生变化的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
上述方案中,所述累积单元,还用于第一覆盖率统计中的第一数据为新增数据的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计。
上述方案中,所述累积单元,还用于在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
上述方案中,所述装置还包括:
合并单元,用于在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;
或者,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;
或者,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据。
本申请实施例还提供一种存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述方案的覆盖率确定方法。
本申请实施例还提供一种覆盖率确定装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行上述的覆盖率确定方法。
本申请实施例提供的覆盖率确定方法、装置及存储介质,服务器获取至少两次覆盖率统计中的第一数据;获取至少两次覆盖率统计中的第二数据;基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。基于所述累积覆盖信息确定所述第一数据的覆盖率,达到了将所述至少两次覆盖率统计的覆盖信息进行累积的目的,各个覆盖率统计中的覆盖信息不再是孤立存在,而是在累积覆盖信息中得到体现。在至少两个覆盖率统计的敏捷迭代过程中减少了大量重复性测试工作,提升测试的效率和有效性。本申请实施例中,服务器还基于所述累积覆盖信息,合并所述第一覆盖率统计中的第一数据和第二覆盖率统计中的第一数据,使得在后续满足测试等级的情况下,服务器不再对存在覆盖信息的第一数据进行测试,只测试不存在覆盖信息的第一数据,提升测试效率。
附图说明
图1为本申请实施例提供的一种覆盖率确定方法的可选流程示意图一;
图2为本申请实施例提供的一种覆盖率确定方法的可选流程示意图二;
图3示出了本申请提供的基于所述累积覆盖信息,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据的示意图;
图4为本申请实施例提供的一种覆盖率确定方法的可选流程示意图三;
图5为本申请实施例提供的覆盖率确定方法的示意图;
图6为本申请实施例提供的一种覆盖率确定方法的可选流程示意图四;
图7为本申请实施例提供的覆盖率确定装置的可选结构示意图;
图8为本申请实施例提供的覆盖率确定装置的硬件组成结构示意图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在对本申请实施例进行详细描述之前,首先对相关技术中的覆盖率确定方法进行简要说明。
大型高复杂度的软件在敏捷迭代过程中,为了检测软件的新版本中是否存在漏洞,需要对开发的新版本软件中的代码进行测试。对安全至上的系统而言,常用的测试方法是基于代码的测试覆盖,代码的覆盖率越高,表示源数据中被测试的比例越高。但是,由于软件体量庞大,在版本迭代的过程中,不会在同一个版本上进行所有用例或者较长时间的测试。现有方法中使用的白盒测试覆盖率工具部署在后台,用于采集所有执行代码的覆盖率。在采集过程中,若代码发生变化,所述白盒测试覆盖率工具会重新采集发生变化后的代码的覆盖率。每一个发布版本采集的结果都是孤立存在的,对于每天会发布多个软件版本的情况,白盒测试覆盖率工具在每个版本上进行一部分用例,并不是根据瀑布模型在后续版本上进行所有用例或者较长时间的测试,因此,通过现有的白盒测试覆盖率工具在不同版本采集的代码的覆盖率没有过高的价值。进一步,由于每一个发布版本采集的结果都是孤立存在的,无法进行测试覆盖率累积,导致软件测试的效率和有效性低。
基于目前软件测试方法中存在的问题,本申请提出一种覆盖率确定方法,能够解决现有技术方案中无法解决的技术难题和缺点。
图1示出了本申请实施例提供的覆盖率确定方法的可选流程示意图一,将根据各个步骤进行说明。
步骤S101,获取至少两次覆盖率统计中的第一数据。
在一些实施例中,服务器获取至少两次覆盖率统计中的第一数据,所述第一数据包括:静态分析数据和动态分析数据。
在一些实施例中,所述静态分析数据可以包括:源数据的函数;所述源数据的函数包括:源数据的函数名、源数据的参数、源数据包括的if条件语句中的条件。
在另一些实施例中,服务器获取静态分析数据,包括:服务器在对所述至少两次覆盖率统计中的源数据分析的过程中,通过分析所述至少两次覆盖率统计中的源数据的语法获取所述源数据的块信息,所述块信息包括所述至少两次覆盖率统计中每一个源数据的块的情况。
在一些实施例中,所述动态分析数据包括:在源数据的分析的过程中,植入探针,所述程序运行过程中,运行到的块的信息。例如,在程序运行过程中,探针探测到文件中第2个源数据的第3个块和第4个块被运行,所述文件中第2个源数据的第3个块和第4个块为动态分析数据。
在另一些实施例中,所述服务器获取至少两次覆盖率统计中的第一数据,还包括:服务器在对所述至少两次覆盖率统计中的源数据分析的过程中,通过计算所述至少两次覆盖率统计中的源数据获得的与所述源数据对应的函数的唯一标识。
在一些实施例中,所述服务器略去所述至少两次覆盖率统计中的源数据中的注释和格式变化,通过计算所述至少两次覆盖率统计中的源数据获得与所述源数据对应的函数的唯一标识。
在一些实施例中,所述服务器存储所述唯一标识,和/或,服务器存储所述至少两次覆盖率统计中的第一数据。
在一些实施例中,所述覆盖率统计包括:针对相同的第一数据所属的文件的序号,对文件中的第一数据进行测试,将所述第一数据中已测试的块标记为被覆盖的块,统计所述第一数据的覆盖率情况。
在一些实施例中,所述至少两次最新覆盖率统计包括:针对相同的文件序号,按照时间顺序,分别统计所述文件中第一数据在不同时间的覆盖率情况。
所述至少两次最新覆盖率统计的信息包括:所述至少两次覆盖率统计中的第一数据。
步骤S102,获取至少两次覆盖率统计中的第二数据。
在一些实施例中,服务器获取至少两次覆盖率统计中的第二数据,包括:服务器获取所述至少两次覆盖率统计中,第一数据所属的文件的序号。
步骤S103,基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化。
在一些实施例中,所述服务器基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化。
在另一些实施例中,所述服务器将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,包括:服务器比对所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同的情况下,服务器比对所述第一覆盖率统计中的第一数据的唯一标识符和所述第二覆盖率统计中的第一数据的唯一标识符。
在一些实施例中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的任意一次覆盖率统计。
在一些实施例中,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化。
在另一些实施例中,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化。
在再一些实施例中,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;或者,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据。
步骤S104,基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。
在一些实施例中,在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,服务器累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
在另一些实施例中,在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,服务器累积所述至少两次覆盖率统计中的第一数据的覆盖信息,直至所述至少两次覆盖率统计中的第一数据的覆盖信息完成累积。
在一些实施例中,所述第一数据的覆盖信息包括:第一数据中块的被覆盖情况。
在一些实施例中,在所述至少两次覆盖率统计中的第一数据发生变化的情况下,服务器累积所述第一覆盖率统计中的第一数据的覆盖信息。
在另一些实施例中,在所述至少两次覆盖率统计中的第一数据发生变化的情况下,以按照时间顺序最近的覆盖率统计中的第一数据的覆盖信息为准,即第一覆盖率统计中的第一数据的覆盖信息,服务器累积所述第一覆盖率统计中的第一数据的覆盖信息,并停止所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据的比对。
在一些实施例中,在所述第一覆盖率统计中的第一数据为新增数据的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
在一些实施例中,在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
步骤S105,基于所述累积覆盖信息确定所述第一数据的覆盖率。
在一些实施例中,服务器基于所述累积覆盖信息确定所述第一数据的覆盖率,包括:服务器基于所述至少两次覆盖率统计中的第一数据的累积覆盖信息,确定所述第一数据的覆盖率。
如此,服务器针对至少两次覆盖率统计,通过以第一覆盖率统计中的第一数据为基础数据,与第二覆盖率统计中的第一数据比对,确定所述至少两次覆盖率统计中的数据变化;基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;达到了将所述至少两次覆盖率统计的覆盖信息进行累积的目的,各个覆盖率统计中的覆盖信息不再是孤立存在,而是在累积覆盖信息中得到体现。在至少两个覆盖率统计的敏捷迭代过程中减少了大量重复性测试工作,提升测试的效率和有效性。
图2示出了本申请实施例提供的覆盖率确定方法的可选流程示意图二,将根据各个步骤进行说明。
在一些实施例中,步骤S201至步骤S203的具体方案与步骤S101至步骤S103的方案相同,此处不再赘述。
步骤S201,获取至少两次覆盖率统计中的第一数据。
步骤S202,获取至少两次覆盖率统计中的第二数据。
步骤S203,基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化。
步骤S204,基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。
在一些实施例中,在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
在一些实施例中,所述第一数据的覆盖信息包括:第一数据中块的被覆盖情况。
在一些实施例中,所述至少两次覆盖率统计中的第一数据没有发生变化包括:针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化。
步骤S205,基于所述累积覆盖信息,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据。
在一些实施例中,服务器基于所述累积覆盖信息,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,并根据所述第一覆盖率统计中的第一数据的覆盖信息及第二覆盖率统计中的第一数据的覆盖信息,标记所述合并后的数据。
在一些实施例中,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;服务器标记所述第一覆盖数据的第二数据为已被测试的数据。
在另一些实施例中,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;服务器标记所述第二覆盖数据的第二数据为已被测试的数据。
在再一些实施例中,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据;服务器标记所述第一未覆盖数据的第二数据为未被测试的数据。
图3示出了本申请提供的基于所述累积覆盖信息,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据的示意图,将结合步骤S205进行详细说明。
图3中,一行“*”表示一次覆盖率统计中一个文件的一个第一数据,所述一个第一数据包括至少一句源代码。“*”表示第一数据中的块。“*”表示所述第一数据中的块“*”被覆盖。文件1(File1)至File3表示覆盖率统计中分别对应于文件序号为1、文件序号为2、文件序号为3的第一数据的集合。所述File1对应的第二数据为文件序号为1、所述File2对应的第二数据为文件序号为2、所述File3对应的第二数据为文件序号为3。V1至V3表示按照时间顺序,由远及近的三次覆盖率统计的序号,分别对应于第一次覆盖率统计、第二次覆盖率统计和第三次覆盖率统计。例如,V1-File1为第一次覆盖率统计中文件序号为1的第一数据,相对应的覆盖信息为:第一行第一数据的块全部被覆盖、第二行除第3个和第4个第一数据的块以外,全部被覆盖。
如图3所示,在V1至V3三次覆盖率统计中,文件序号为1的第一数据,均未发生变化;且在V1至V3三次覆盖率统计中,V1-File1、V2-File1以及V3-File1的第一数据均包含覆盖信息,因此,服务器合并所述V1-File1、V2-File1以及V3-File1的第一数据及相应的覆盖信息,并将合并后的第一覆盖数据,即合并版本File1,标记为已被测试的数据。
如图3所示,在V1至V3三次覆盖率统计中,文件序号为2的第一数据,均未发生变化;在第一次覆盖率统计和第三次覆盖率中,第一数据均包含覆盖信息,第二次覆盖率统计中的第一数据不包含覆盖信息的情况下,服务器合并所述V1-File2、V2-File2以及V3-File2的第一数据及相应的覆盖信息,并将合并后的第二覆盖数据,即合并版本File2,标记为已被测试的数据。
如图3所示,在V1至V3三次覆盖率统计中,文件序号为3的第一数据,均未发生变化;且在V1至V3三次覆盖率统计中,V1-File3、V2-File3以及V3-File3的第一数据均不包含覆盖信息,因此,服务器合并所述V1-File3、V2-File3以及V3-File3的第一数据及相应的覆盖信息,并将合并后的第一未覆盖数据,即合并版本File3,标记为未被测试的数据。
如此,在后续测试过程中,在满足测试等级(如测试第一数据的覆盖率达到70%)的情况下,不再对已被测试的源代码重复测试,而是直接对未被测试的源代码进行测试,提高测试的效率。
图4示出了本申请实施例提供的覆盖率确定方法的可选流程示意图三,将根据各个步骤进行说明。
图5示出了本申请提供的覆盖率确定方法的示意图,将与图4示出的覆盖率确定方法的可选流程示意图三配合说明。
步骤S301,获取至少两次覆盖率统计中的第一数据。
在一些实施例中,服务器获取至少两次覆盖率统计中的第一数据,所述第一数据包括:静态分析数据和动态分析数据。
在一些实施例中,所述静态分析数据可以包括:源数据的函数;所述源数据的函数包括:源数据的函数名、源数据的参数、源数据包括的if条件语句中的条件。
在另一些实施例中,服务器获取静态分析数据,包括:服务器在对所述至少两次覆盖率统计中的源数据分析的过程中,通过分析所述至少两次覆盖率统计中的源数据的语法获取所述源数据的块信息,所述块信息包括所述至少两次覆盖率统计中每一个源数据的块的情况。
在一些实施例中,所述动态分析数据包括:在源数据的分析的过程中,植入探针,所述程序运行过程中,运行到的块的信息。例如,在程序运行过程中,探针探测到文件中第2个源数据的第3个块和第4个块被运行,所述文件中第2个源数据的第3个块和第4个块为动态分析数据。
在另一些实施例中,所述服务器获取至少两次覆盖率统计中的第一数据,还包括:服务器在对所述至少两次覆盖率统计中的源数据分析的过程中,通过计算所述至少两次覆盖率统计中的源数据获得的与所述源数据对应的函数的唯一标识。
在一些实施例中,所述服务器略去所述至少两次覆盖率统计中的源数据中的注释和格式变化,通过计算所述至少两次覆盖率统计中的源数据获得与所述源数据对应的函数的唯一标识。
在一些实施例中,所述服务器存储所述唯一标识,和/或,服务器存储所述至少两次覆盖率统计中的第一数据。
步骤S302,获取至少两次覆盖率统计中的第二数据。
在一些实施例中,服务器获取至少两次覆盖率统计中的第二数据,包括:服务器获取所述至少两次覆盖率统计中,第一数据所属的文件的序号。
如图5所示,一行“*”表示一次覆盖率统计中一个文件的一个第一数据,所述一个第一数据包括至少一句源代码。“*”表示第一数据中的块。“*”表示所述第一数据中的块“*”被覆盖。File4至File7表示覆盖率统计中分别对应于文件序号为4、文件序号为5、文件序号为6、文件序号为7的的第一数据。V1至V3表示按照时间顺序,由远及近的三次覆盖率统计的序号,分别对应于第一次覆盖率统计、第二次覆盖率统计和第三次覆盖率统计。例如,V1-File4为第一次覆盖率统计中文件序号为4的第一数据,相对应的覆盖信息为:第一行第一数据的块全部被覆盖、第二行除第3个和第4个第一数据的块以外,全部被覆盖。图5中只有V3-File6,并没有相对应的V1-File6和V2-File6,说明V3-File6是新增数据,在第一次覆盖率统计和第二次覆盖率统计中并不存在。图5中有V1-File7和V2-File7,并没有相对应的V3-File7,说明在第三次覆盖率统计中,File7的数据被删除。
步骤S303,基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化。
在一些实施例中,所述服务器基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化。
在一些实施例中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的任意一次覆盖率统计。
例如在图5中,针对同一个第二数据,如文件序号为4的第二数据,V3-File4为第一覆盖率统计中的第一数据,V2-File4或V1-File4为第二覆盖率统计中的第一数据。按照时间顺序,将V3-File4作为第一覆盖率统计中的第一数据,V2-File4作为第二覆盖率统计中的第一数据进行比对;然后将V3-File4作为第一覆盖率统计中的第一数据,V1-File4作为第二覆盖率统计中的第一数据进行比对。
在另一些实施例中,所述服务器将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,包括:服务器比对所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同的情况下,服务器比对所述第一覆盖率统计中的第一数据的唯一标识符和所述第二覆盖率统计中的第一数据的唯一标识符。
例如,V3-File4与V2-File4比对,所述V3-File4与V2-File4相同的情况下,服务器比对V3-File4的唯一标识符与V2-File4的唯一标识符。
在一些实施例中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
在一些实施例中,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化。
例如,V3-File4与V2-File4比对,所述V3-File4与V2-File4相同的情况下,服务器比对V3-File4的唯一标识符与V2-File4的唯一标识符。在V3-File4的唯一标识符与V2-File4的唯一标识符相同的情况下,确定第三次覆盖率统计中的第一数据相比第二次覆盖率统计中的第一数据没有发生变化。然后,服务器比对V3-File4与V1-File4,所述V3-File4与V1-File4相同的情况下,服务器比对V3-File4的唯一标识符与V1-File4的唯一标识符,在V3-File4的唯一标识符与V1-File4的唯一标识符相同的情况下,确定第三次覆盖率统计中的第一数据相比第一次覆盖率统计中的第一数据没有发生变化。综上,服务器确定所述第一次覆盖率统计中的第一数据至第三次覆盖率统计中的第一数据没有发生变化。
在一些实施例中,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化。
例如,V3-File5与V2-File5比对,确定第三次覆盖率统计中的第一数据与第二次覆盖率统计中的第一数据中第三行的第一数据发生变化,服务器累积第三次覆盖率统计中的第一数据与第二次覆盖率统计中的第一数据中第一行、第二行和第四行的覆盖信息。第三行的覆盖信息以第三次覆盖率统计中的第一数据的第三行覆盖信息为准,并在后续第三次覆盖率统计中的第一数据与第一次覆盖率统计中的第一数据的比对过程中,不再比对第三行的第一数据,只比对除第三行以外的其他第一数据。在图5中,服务器后续只比对V3-File5与V1-File5的第一行、第二行和第四行第一数据,确定V3-File5与V1-File5的第一行和第四行数据均发生变化。综上,服务器确定所述第一次覆盖率统计中的第一数据至第三次覆盖率统计中的第一数据均发生变化,服务器累积第二次覆盖率统计中的第一数据的第一行、第二行和第四行的覆盖信息和第三次覆盖率统计中的第一数据的第一行、第二行和第四行的覆盖信息,并累积第三次覆盖率统计中的第一数据的第三行覆盖信息。
在一些实施例中,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据。
例如,图5中只有V3-File6,并没有相对应的V1-File6和V2-File6,说明V3-File6是新增数据,在第一次覆盖率统计和第二次覆盖率统计中并不存在。在后续操作中,服务器以V3-File6的覆盖信息为准。
在一些实施例中,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据。
图5中有V1-File7和V2-File7,并没有相对应的V3-File7,说明在第三次覆盖率统计中,File7的数据被删除。在后续操作中,服务器不再考虑File7的覆盖信息。
步骤S304,基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。
在一些实施例中,在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,服务器累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
在另一些实施例中,在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,服务器累积所述至少两次覆盖率统计中的第一数据的覆盖信息,直至所述至少两次覆盖率统计中的第一数据的覆盖信息完成累积。
如图5所示的不同覆盖率统计中的File4,在所述第一次覆盖率统计中的第一数据至第三次覆盖率统计中的第一数据没有发生变化的情况下,服务器累积所述第一次覆盖率统计中的第一数据至第三次覆盖率统计中的第一数据,即服务器累积V1-File4至V3-File4的覆盖信息,得到累积版本File4,即File4的第一行、第二行和第四行第一数据均被覆盖。
在一些实施例中,在所述至少两次覆盖率统计中的第一数据发生变化的情况下,服务器累积所述第一覆盖率统计中的第一数据的覆盖信息。
在另一些实施例中,在所述至少两次覆盖率统计中的第一数据发生变化的情况下,以按照时间顺序最近的覆盖率统计中的第一数据的覆盖信息为准,即第一覆盖率统计中的第一数据的覆盖信息,服务器累积所述第一覆盖率统计中的第一数据的覆盖信息,并停止所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据的比对。
例如,V3-File5与V2-File5比对,确定第三次覆盖率统计中的第一数据与第二次覆盖率统计中的第一数据中第三行的第一数据发生变化,服务器累积第三次覆盖率统计中的第一数据与第二次覆盖率统计中的第一数据中第一行、第二行和第四行的覆盖信息。第三行的覆盖信息以第三次覆盖率统计中的第一数据的第三行覆盖信息为准,并在后续第三次覆盖率统计中的第一数据与第一次覆盖率统计中的第一数据的比对过程中,不再比对第三行的第一数据,只比较除第三行以外的其他第一数据。在图5中,服务器后续只比对V3-File5与V1-File5的第一行、第二行和第四行第一数据,确定V3-File5与V1-File5的第一行和第四行数据均发生变化。综上,服务器确定所述第一次覆盖率统计中的第一数据至第三次覆盖率统计中的第一数据均发生变化,服务器累积第二次覆盖率统计中的第一数据的第一行、第二行和第四行的覆盖信息和第三次覆盖率统计中的第一数据的第一行、第二行和第四行的覆盖信息,并累积第三次覆盖率统计中的第一数据的第三行覆盖信息。
在一些实施例中,在所述第一覆盖率统计中的第一数据为新增数据的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
例如,图5中只有V3-File6,并没有相对应的V1-File6和V2-File6,说明V3-File6是新增数据,在第一次覆盖率统计和第二次覆盖率统计中并不存在。在后续操作中,服务器以V3-File6的覆盖信息为准。
在一些实施例中,在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
图5中有V1-File7和V2-File7,并没有相对应的V3-File7,说明在第三次覆盖率统计中,File7的数据被删除。在后续操作中,服务器不再考虑File7的覆盖信息。
步骤S305,基于所述累积覆盖信息确定所述第一数据的覆盖率。
在一些实施例中,服务器基于所述累积覆盖信息确定所述第一数据的覆盖率,包括:服务器基于所述至少两次覆盖率统计中的第一数据的累积覆盖信息,确定所述第一数据的覆盖率。
如此,服务器针对至少两次覆盖率统计,通过以第一覆盖率统计中的第一数据为基础数据,与第二覆盖率统计中的第一数据比对,确定所述至少两次覆盖率统计中的数据变化;基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;达到了将所述至少两次覆盖率统计的覆盖信息进行累积的目的,各个覆盖率统计中的覆盖信息不再是孤立存在,而是在累积覆盖信息中得到体现。在至少两个覆盖率统计的敏捷迭代过程中减少了大量重复性测试工作,提升测试的效率和有效性。
图6示出了本申请实施例提供的一种覆盖率确定方法的可选流程示意图四,将根据各个步骤进行说明。
步骤S401,获取需要进行覆盖率累积的测试版本的静态分析数据和动态分析数据。
如图5所示,需要累积的是V1、V2、V3三个测试版本,这三个版本按照创建时间顺序为V1早于V2,V2早于V3。
在一些实施例中,所述静态分析数据包括:在源代码分析的时候,通过分析语法获取到的源代码的分块信息,包括每一个块对应的序号信息;所述动态分析数据包括:在源代码分析过程中植入了探针,程序运行过程中运行到的块信息。
在一些实施例中,在获取静态分析数据的过程中,通过每个函数的源代码计算该函数的唯一标识并保存,唯一标识的计算可以自动略去注释和代码的格式变化。
步骤S402,以所述最新的测试版本的静态分析数据为基础数据,与每一个测试版本的静态分析数据分别进行比较。
在一些实施例,最新版本是进行覆盖率累积的测试版本中最近一次发布的版本。系统可以保存并记录测试版本的创建时间。如图5,选取V3版本的静态分析数据为基础数据。
在一些实施例中,服务器按照版本创建时间顺序由近及远与其它参与累积的每一个测试版本的静态分析数据与基础数据进行比对。如图5所示,按照V3先与V2,然后V3与V1的顺序进行比对。
在一些实施例中,比对的过程中,服务器首先确定两者是否为同一个函数,如果是同一个函数再比对函数的唯一标识,得到数据比对结果:
如果函数的唯一标识相同,则说明函数的代码是没有经过修改的代码;
如果函数的唯一标识不相同,则说明函数的代码是出现了变化的代码;
如果与基础数据进行比对确定不是同一个函数,则说明函数的代码是新增代码;
如果测试版本中存在没有与基础数据进行比对的函数,则说明函数在最新版本中已经删除,函数的代码是已删除代码。
步骤S403,结合静态分析数据和动态分析数据,确定已测试的代码与未测试的代码。
在一些实施例中,服务器根据数据比对结果进行覆盖情况累积,累积的过程是一边进行比对一边累积。
在一些实施例中,如果代码没有修改,进行步骤S4041;如果代码有修改,进行步骤S4042;如果最新的测试版本中的代码是新增代码,进行步骤S4043;如果最新的测试版本中的代码被删除,进行步骤S4044。
步骤S4041,覆盖情况直接累积,直至所有参与累积的测试版本完成比对。
步骤S4042,以最新版本的代码为准,进行覆盖情况的累积,同时停止后续版本比对。
步骤S4043,以最新版本的代码为准,进行覆盖情况的累积,同时停止后续版本比对。
步骤S4044,不进行覆盖率的累积。
以块作为累积的基本单位,将确定没有经过修改的代码中序号相同的块的覆盖情况进行合并:已测试的块与已测试的块合并为已测试的块,已测试的块与未测试的块合并为已测试的块,未测试的块与未测试的块合并为未测试的块。
如图5所示,通过与基础数据的比对,得到如下结果:
V2、V1两个版本中文件File4中的函数代码都没有经过修改,则将这一部分代码覆盖情况直接累积;
V3与V2两个版本中文件File5中的函数代码没有经过修改,则将这一部分代码覆盖情况直接累积;当与V1版本中文件File5进行数据比对的时候,发现函数的代码都发生了变化,则保留文件File5已累积的结果,发生了变化的代码覆盖情况不进行累积,并不再进行后续版本比对。
当与V2版本进行比对时,发现V2版本中不存在文件File6,证明这一部分代码是新增代码,则只统计V3版本中文件File6的代码覆盖情况,并不再进行后续版本比对。
V1版本中文件File7的代码不参与比对,不统计这一部分代码的覆盖情况。
步骤S405,统计所有代码覆盖情况,生成累积的版本。
图7示出了本申请提供的覆盖率确定装置的可选结构示意图,将根据各个部分进行说明。
获取单元701,用于获取至少两次覆盖率统计中的第一数据;用户获取至少两次覆盖率统计中的第二数据;
确定单元702,用于基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;用于基于所述累积覆盖信息确定所述第一数据的覆盖率。
累积单元703,用于基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息。
所述获取单元701,用于获取所述至少两次覆盖率统计中,第一数据所属的文件的序号。。
所述确定单元702,还用于针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化;其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
所述确定单元702,还用于执行下述中的至少一项:
针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化;
针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化;
针对同一个第二数据,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;
针对同一个第二数据,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据。
所述累积单元703,还用于执行下述中的至少一项:
在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息;
在所述至少两次覆盖率统计中的第一数据发生变化的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
在所述第一覆盖率统计中的第一数据为新增数据的情况下,,累积所述第一覆盖率统计中的第一数据的覆盖信息。
在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
合并单元704,用于在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;
或者,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;
或者,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据。
图8为本申请实施例提供的覆盖率确定装置的硬件组成结构示意图,装置800包括:至少一个处理器801、存储器802和至少一个网络接口804。装置800中的各个组件通过总线系统805耦合在一起。可理解,总线系统805用于实现这些组件之间的连接通信。总线系统805除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统805。
可以理解,存储器802可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是ROM、可编程只读存储器(ProgrammableRead-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random AccessMemory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CompactDisc Read-Only Memory,CD-ROM);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RandomAccess Memory,SRAM)、同步静态随机存取存储器(Synchronous Static Random AccessMemory,SSRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、同步动态随机存取存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced Synchronous DynamicRandom Access Memory,ESDRAM)、同步连接动态随机存取存储器(SyncLink DynamicRandom Access Memory,SLDRAM)、直接内存总线随机存取存储器(Direct Rambus RandomAccess Memory,DRRAM)。本发明实施例描述的存储器802旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储器802用于存储各种类型的数据以支持装置800的操作。这些数据的示例包括:用于在装置800上操作的任何计算机程序,如应用程序8022。实现本发明实施例方法的程序可以包含在应用程序8022中。
上述本发明实施例揭示的方法可以应用于处理器801中,或者由处理器801实现。处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器801可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器802,处理器801读取存储器802中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable LogicDevice,PLD)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、FPGA、通用处理器、控制器、MCU、MPU、或其他电子元件实现,用于执行前述方法。
本申请实施例还提供了一种存储介质,用于存储计算机程序。
可选的,该存储介质可应用于本申请实施例中的终端设备,并且该计算机程序使得计算机执行本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种覆盖率确定方法,其特征在于,所述方法包括:
获取至少两次覆盖率统计中的第一数据;
获取所述至少两次覆盖率统计中的第二数据;
基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;
基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;
基于所述累积覆盖信息确定所述第一数据的覆盖率;
其中,所述第一数据包括静态分析数据和动态分析数据;所述静态分析数据包括源代码的分块信息;所述动态分析数据包括程序运行过程中运行到的块信息;所述第二数据包括第一数据所属的文件的序号;
其中,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:
针对同一个第二数据,在第一覆盖率统计中的第一数据与第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化;
针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化;
针对同一个第二数据,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;
针对同一个第二数据,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化,包括:
针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化;其中,
所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
3.根据权利要求1所述的方法,其特征在于,基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
4.根据权利要求1所述的方法,其特征在于,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述至少两次覆盖率统计中的第一数据发生变化的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息。
5.根据权利要求1所述的方法,其特征在于,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述第一覆盖率统计中的第一数据为新增数据的情况下,累积所述第一覆盖率统计中的第一数据的覆盖信息;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计。
6.根据权利要求1所述的方法,其特征在于,所述基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息,包括:
在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
7.根据权利要求3所述的方法,其特征在于,
在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;
或者,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;
或者,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据。
8.一种覆盖率确定装置,其特征在于,所述装置包括:
获取单元,用于获取至少两次覆盖率统计中的第一数据;用户获取至少两次覆盖率统计中的第二数据;
确定单元,用于基于所述第一数据和所述第二数据,确定所述至少两次覆盖率统计中的数据变化;基于累积覆盖信息确定所述第一数据的覆盖率;
累积单元,用于基于所述数据变化,对所述至少两次覆盖率统计中的第一数据的覆盖信息进行累积,得到累积覆盖信息;
其中,所述第一数据包括静态分析数据和动态分析数据;所述静态分析数据包括源代码的分块信息;所述动态分析数据包括程序运行过程中运行到的块信息;所述第二数据包括第一数据所属的文件的序号;
其中,所述确定单元,还用于执行:
针对同一个第二数据,在第一覆盖率统计中的第一数据与第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符相同的情况下,确定所述至少两次覆盖率统计中的第一数据没有发生变化;
针对同一个第二数据,在所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据相同,且所述第一覆盖率统计中的第一数据的唯一标识符与所述第二覆盖率统计中的第一数据的唯一标识符不相同的情况下,确定所述至少两次覆盖率统计中的第一数据发生变化;
针对同一个第二数据,在所述第二覆盖率统计中不存在第一数据的情况下,确定所述第一覆盖率统计中的第一数据为新增数据;
针对同一个第二数据,在所述第一覆盖率统计中不存在第一数据的情况下,确定所述第二覆盖率统计中的第一数据为已删除数据;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
9.根据权利要求8所述的装置,其特征在于,
所述确定单元,还用于针对同一个第二数据,按照时间顺序将第一覆盖率统计中的第一数据分别与第二覆盖率统计中的第一数据进行比对,得到所述第一覆盖率统计中的第一数据与所述第二覆盖率统计中的第一数据之间的数据变化;其中,
所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计,所述第二覆盖率统计为所述至少两次覆盖率统计中除所述第一覆盖率统计以外的覆盖率统计。
10.根据权利要求8所述的装置,其特征在于,
所述累积单元,还用于在所述至少两次覆盖率统计中的第一数据没有发生变化的情况下,累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
11.根据权利要求8所述的装置,其特征在于,
所述累积单元,还用于在所述至少两次覆盖率统计中的第一数据发生变化的情况下,累积第一覆盖率统计中的第一数据的覆盖信息;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计。
12.根据权利要求8所述的装置,其特征在于,
所述累积单元,还用于在所述第一覆盖率统计中的第一数据为新增数据的情况下,累积第一覆盖率统计中的第一数据的覆盖信息;
其中,所述第一覆盖率统计为所述至少两次覆盖率统计中统计时间最新的覆盖率统计。
13.根据权利要求8所述的装置,其特征在于,
所述累积单元,还用于在所述第一数据为已删除数据的情况下,不累积所述至少两次覆盖率统计中的第一数据的覆盖信息。
14.根据权利要求10所述的装置,其特征在于,所述装置还包括:
合并单元,用于在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一覆盖数据;
或者,在所述第一覆盖率统计中的第一数据存在覆盖信息,且所述第二覆盖率统计中的第一数据不存在覆盖信息的情况下,或者,在所述第一覆盖率统计中的第一数据不存在覆盖信息,且所述第二覆盖率统计中的第一数据存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第二覆盖数据;
或者,在所述第一覆盖率统计中的第一数据和所述第二覆盖率统计中的第一数据均不存在覆盖信息的情况下,合并所述第一覆盖率统计中的第一数据及第二覆盖率统计中的第一数据,形成第一未覆盖数据。
15.一种存储介质,存储有可执行程序,其特征在于,所述可执行程序被处理器执行时,实现权利要求1至7任一项所述的覆盖率确定方法。
16.一种覆盖率确定装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,其特征在于,所述处理器运行所述可执行程序时执行如权利要求1至7任一项所述覆盖率确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102315.6A CN110990265B (zh) | 2019-11-12 | 2019-11-12 | 一种覆盖率确定方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102315.6A CN110990265B (zh) | 2019-11-12 | 2019-11-12 | 一种覆盖率确定方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990265A CN110990265A (zh) | 2020-04-10 |
CN110990265B true CN110990265B (zh) | 2023-10-03 |
Family
ID=70083935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911102315.6A Active CN110990265B (zh) | 2019-11-12 | 2019-11-12 | 一种覆盖率确定方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990265B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699476A (zh) * | 2012-09-27 | 2014-04-02 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法及系统 |
CN104331361A (zh) * | 2014-09-17 | 2015-02-04 | 赵明 | 一种用于白盒测试覆盖率计算可视化的测试装置及方法 |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
CN106502901A (zh) * | 2016-10-24 | 2017-03-15 | 网易(杭州)网络有限公司 | 覆盖率检测方法、装置和设备 |
CN106547698A (zh) * | 2016-11-30 | 2017-03-29 | 网易(杭州)网络有限公司 | 覆盖率数据的处理方法、装置和服务器 |
CN107480066A (zh) * | 2017-08-18 | 2017-12-15 | 网易(杭州)网络有限公司 | 代码覆盖率统计方法、装置、存储介质、处理器和终端 |
US20180101468A1 (en) * | 2015-04-15 | 2018-04-12 | Entit Software Llc | Code coverage information |
CN108519945A (zh) * | 2018-03-21 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
CN108829580A (zh) * | 2018-05-07 | 2018-11-16 | 百度在线网络技术(北京)有限公司 | 多版本测试数据处理方法、装置、设备及存储介质 |
CN108959059A (zh) * | 2017-05-19 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种测试方法以及测试平台 |
CN109388566A (zh) * | 2018-09-27 | 2019-02-26 | 北京城市网邻信息技术有限公司 | 一种代码覆盖率分析方法、装置、设备及存储介质 |
CN109857631A (zh) * | 2018-11-02 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于人工智能的代码覆盖率统计方法、装置、设备及存储介质 |
-
2019
- 2019-11-12 CN CN201911102315.6A patent/CN110990265B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699476A (zh) * | 2012-09-27 | 2014-04-02 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法及系统 |
CN104331361A (zh) * | 2014-09-17 | 2015-02-04 | 赵明 | 一种用于白盒测试覆盖率计算可视化的测试装置及方法 |
US20180101468A1 (en) * | 2015-04-15 | 2018-04-12 | Entit Software Llc | Code coverage information |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
CN106502901A (zh) * | 2016-10-24 | 2017-03-15 | 网易(杭州)网络有限公司 | 覆盖率检测方法、装置和设备 |
CN106547698A (zh) * | 2016-11-30 | 2017-03-29 | 网易(杭州)网络有限公司 | 覆盖率数据的处理方法、装置和服务器 |
CN108959059A (zh) * | 2017-05-19 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种测试方法以及测试平台 |
CN107480066A (zh) * | 2017-08-18 | 2017-12-15 | 网易(杭州)网络有限公司 | 代码覆盖率统计方法、装置、存储介质、处理器和终端 |
CN108519945A (zh) * | 2018-03-21 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
CN108829580A (zh) * | 2018-05-07 | 2018-11-16 | 百度在线网络技术(北京)有限公司 | 多版本测试数据处理方法、装置、设备及存储介质 |
CN109388566A (zh) * | 2018-09-27 | 2019-02-26 | 北京城市网邻信息技术有限公司 | 一种代码覆盖率分析方法、装置、设备及存储介质 |
CN109857631A (zh) * | 2018-11-02 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于人工智能的代码覆盖率统计方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
嵌入式软件目标码测试分析;王永孟;《科技经济市场》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110990265A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN106874187B (zh) | 代码覆盖率收集方法和装置 | |
CN106326067B (zh) | 一种在压力测试下对cpu性能进行监控的方法及装置 | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN110543420B (zh) | 一种软件测试方法、系统、终端及存储介质 | |
CN110737594B (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
CN106469049B (zh) | 一种文件扫描的方法及装置 | |
CN110389874B (zh) | 日志文件异常检测方法和装置 | |
CN103092748A (zh) | 一种确定需要进行回归测试的测试用例的方法及系统 | |
CN111090593A (zh) | 确定崩溃归属的方法、装置、电子设备及存储介质 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
CN102521135B (zh) | 线性系统的测试方法和装置 | |
CN110990265B (zh) | 一种覆盖率确定方法、装置及存储介质 | |
CN114637510A (zh) | 代码分析的方法和相关设备 | |
CN112256532A (zh) | 测试界面生成方法、装置、计算机设备及可读存储介质 | |
CN110688173B (zh) | 一种跨平台界面框架中组件的定位方法、装置及电子设备 | |
JP2007206069A (ja) | 最も適合する試験結果タイプに基づいて自動的にデータをフォーマットする方法及び装置 | |
CN111124894A (zh) | 代码覆盖率的处理方法、装置和计算机设备 | |
CN109189672A (zh) | 微服务的自动测试方法、服务器及计算机可读存储介质 | |
CN115248783A (zh) | 软件测试方法、系统、可读存储介质及计算机设备 | |
CN112463431B (zh) | 一种bios错误定位方法、装置、设备及存储介质 | |
CN110795129B (zh) | 一种数据刷写方法、装置和设备 | |
CN111078549B (zh) | 代码覆盖率的处理方法、装置和计算机设备 | |
CN113282504A (zh) | 一种增量代码覆盖率检测方法及业务开发方法、装置 | |
CN113868137A (zh) | 埋点数据的处理方法、装置、系统和服务器 |
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 |