CN111221737B - 一种覆盖率确定方法、装置及存储介质 - Google Patents

一种覆盖率确定方法、装置及存储介质 Download PDF

Info

Publication number
CN111221737B
CN111221737B CN202010023133.6A CN202010023133A CN111221737B CN 111221737 B CN111221737 B CN 111221737B CN 202010023133 A CN202010023133 A CN 202010023133A CN 111221737 B CN111221737 B CN 111221737B
Authority
CN
China
Prior art keywords
block information
test case
determining
function
coverage rate
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
Application number
CN202010023133.6A
Other languages
English (en)
Other versions
CN111221737A (zh
Inventor
赵明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Dongchayun Information Technology Co ltd
Original Assignee
Suzhou Dongchayun Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Dongchayun Information Technology Co ltd filed Critical Suzhou Dongchayun Information Technology Co ltd
Priority to CN202010023133.6A priority Critical patent/CN111221737B/zh
Publication of CN111221737A publication Critical patent/CN111221737A/zh
Application granted granted Critical
Publication of CN111221737B publication Critical patent/CN111221737B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种覆盖率确定方法,包括:获取测试用例运行的第一块信息;基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率;本申请还公开了一种覆盖率确定装置及存储介质;通过本申请实施例,可以获得源代码中一个测试用例的测试状态。

Description

一种覆盖率确定方法、装置及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种覆盖率确定方法、装置及存储介质。
背景技术
大型高复杂度的软件在敏捷迭代的过程中,为了检测新版本中是否存在漏洞,需要对新版本中的代码进行测试。常用的代码测试方法是覆盖测评,代码测试过程中覆盖率越高,表示源代码中被测试的比例越高。相关技术中,覆盖率反应的是代码整体的测试状态,如何获得源代码中一个测试用例的测试状态尚未明确。
发明内容
本申请实施例提供一种覆盖率确定方法、装置及存储介质,能够获得源代码中一个测试用例的覆盖率,进而获得所述用例的测试状态。
本申请实施例的技术方案是这样实现的:
获取测试用例运行的第一块信息;
基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;
基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。
上述方案中,所述方法还包括:
选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
上述方案中,所述获取测试用例运行的第一块信息包括:
在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息;
和/或,在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
上述方案中,所述方法还包括:
确定所述第一块信息所属的函数。
上述方案中,所述确定所述第一块信息所属的函数包括:
根据静态分析数据,确定所述第一块信息所属的函数。
上述方案中,所述确定所述测试用例对应的第二块信息包括:
确定所述第一块信息所属的函数中包含的全部块信息为第二块信息。
上述方案中,所述确定所述测试用例的覆盖率包括:
确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
本申请实施例还提供一种覆盖率确定装置,包括:
获取单元,用于获取测试用例运行的第一块信息;
确定单元,用于基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;用于基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。
上述方案中,所述装置还包括:
筛选单元,用于选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
上述方案中,所述获取单元还用于:
在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息;
和/或,在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
上述方案中,所述确定单元还用于:
确定所述第一块信息所属的函数。
上述方案中,所述确定单元还用于:
根据静态分析数据,确定所述第一块信息所属的函数。
上述方案中,确定单元还用于:
确定所述第一块信息所属的函数中包含的全部块信息为第二块信息。
上述方案中,确定单元还用于:
确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
本申请实施例提供的覆盖率确定方法、装置及存储介质,获取测试用例运行的第一块信息;基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。如此,可以挑选出与被测试用例相关的函数,过滤掉与被测试用例不相关的函数,只统计所述测试用例相关函数的覆盖率,从而得到相对较高的覆盖率,有利于进行后续的覆盖率分析。在测试用例的覆盖率较低的情况下,可以对所述测试用例进行针对性的测试用例补充,从而有效提升测试效率。
附图说明
图1为本申请实施例提供的覆盖率确定方法的可选流程示意图一;
图2为本申请实施例提供的覆盖率确定方法的可选流程示意图二;
图3为本申请实施例提供的覆盖率确定方法的可选示意图一;
图4为本申请实施例提供的覆盖率确定方法的可选示意图二;
图5为本申请实施例提供的覆盖率确定方法的可选示意图三;
图6为本申请实施例提供的覆盖率确定装置的可选结构示意图;
图7为本申请实施例提供的覆盖率确定装置的硬件组成结构示意图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在敏捷迭代场景下,有时只测试了源代码的部分功能。在某个版本只是进行某个用例的测试时,传统白盒测试覆盖率工具所采集到的覆盖率信息是全局维度的,该测试用例类别的总体覆盖率很低,无法统计一个测试用例类别相关代码范围的覆盖率,进而无法进行缺陷定位和深度分析。
基于目前覆盖率统计方法中存在的问题,本申请提出一种覆盖率确定方法,能够解决现有技术方案中无法解决的技术难题和缺点。
图1示出了本申请实施例提供的覆盖率确定方法的可选流程示意图一,将根据各个步骤进行说明。
步骤S101,获取测试用例运行的第一块信息。
在一些实施例中,覆盖率确定装置获取测试用例运行的第一块信息。所述第一块信息包括:一个测试用例类别中包括的全部测试用例在运行的过程中,运行的块信息。
在一些实施例中,源代码包括至少一个测试用例,所述至少一个测试用例包括至少一个函数,所述至少一个函数包括至少一个快。
在另一些实施例中,源代码包括至少一个测试用例类别,所述测试用例类别对应至少一个测试用例。
在一些实施例中,所述覆盖率确定装置获取测试用例运行的第一块信息包括:所述覆盖率确定装置在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息。所述覆盖率确定装置在所述源代码未被运行的情况下,对所述源代码分析的过程中植入探针,在所述源代码的一个用例类别被运行的情况下,所述探针获取的被运行的块信息。
在另一些实施例中,所述覆盖率确定装置获取测试用例运行的第一块信息包括:所述覆盖率确定装置在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
在一些实施例中,所述第一块信息包括以下至少一种:被运行的函数标识(Identitify,ID)、所述函数中被运行的起始块的ID和所述函数中被运行的结束块的ID。
步骤S102,基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息。
在一些实施例中,覆盖率确定装置基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息包括:所述覆盖率确定装置根据静态分析数据,确定所述第一块信息所属的函数,根据所述函数确认所述函数包括的全部块信息。
在一些实施例中,所述静态分析数据包括:所述源代码包括的测试用例类别信息、所述测试用例类别包括的函数的信息和所述函数包括的块信息中至少一种。
在一些实施例中,覆盖率确定装置获取所述静态分析数据包括:在源代码分析的过程中,所述覆盖率确定装置通过分析所述源代码的语法获取到的所述源代码的块信息,以及每一个块对应的ID的信息,和/或所述覆盖率确定装置通过分析语法获取到的所述源代码包括的函数的信息,以及所述函数包括的块信息。所述源代码包括的函数的信息包括以下至少一种:源代码中包括的所有函数的ID、所述源代码中包括的函数的数量、所述源代码中包括的函数的测试用例类别和所述源代码中函数包括的块信息;所述源代码中函数包括的块信息包括以下至少一种:所述函数中包含的总块数、所述函数包含的起始块的ID和所述函数包括的结束块的ID。
在一些实施例中,所述覆盖率确定装置根据静态分析数据,确定所述第一块信息所属的函数,根据所述函数确认所述函数包括的全部块信息包括:所述覆盖率确定装置根据所述静态分析数据和所述第一块信息,确认所述第一块信息所属的函数;所述覆盖率确定装置,根据所述第一块信息所属的函数和所述静态分析数据,确认所述第一块信息所属的函数包括的全部块信息。
在一些实施例中,所述第二块信息包括:所述函数包括的总块数、所述函数包括的起始块的ID和所述函数包括的结束块的ID中至少一种。
步骤S103,基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。
在一些实施例中,所述覆盖率确定装置基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率包括:确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
如此,通过本申请实施例提供的覆盖率确定方法,可以挑选出与测试用例相关的函数,过滤掉与被测试用例不相关的函数,只统计所述测试用例相关函数的覆盖率,从而得到相对较高的覆盖率,有利于进行后续的覆盖率分析。在测试用例的覆盖率较低的情况下,可以对所述测试用例进行针对性的测试用例补充,从而有效提升测试效率。
图2示出了本申请实施例提供的覆盖率确定方法的可选流程示意图二,将根据各个步骤进行说明。
图3示出了使用本申请提供的覆盖率确定方法确认覆盖率的可选示意图一,将结合图2进行说明。
步骤S201,获取源代码的静态分析数据。
在一些实施例中,覆盖率确定装置获取源代码的静态分析数据包括:在源代码分析的过程中,所述覆盖率确定装置通过分析所述源代码的语法获取到的所述源代码的块信息,以及每一个块对应的ID的信息,和/或所述覆盖率确定装置通过分析语法获取到的所述源代码包括的函数的信息,以及所述函数包括的块信息。
在一些实施例中,所述静态分析数据包括:所述源代码包括的测试用例类别信息、所述测试用例类别包括的函数的信息和所述函数包括的块信息中至少一种。例如,在源代码中包括第一测试用例类别、第二测试用例类别和第三测试用例类别的情况下,所述静态分析数据可以是:所述第一测试用例类别包括第一测试用例,第二测试用例;所述第二测试用例类别包括第三测试用例;所述第三测试用例类别包括第四测试用例和第五测试用例。如图3所示,“*”表示函数中的块。“*”表示所述函数中的块“*”被运行。所述第一测试用例包括函数Method1和Method5;所述第二测试用例包括Method4和Method7;所述第三测试用例包括Method2;所述第四测试用例包括Method3、Method8和Method9;所述第五测试用例包括Method6和Method10。每个函数均包含20个块。即所述源代码包括10个函数,分别为Method1、Method2、Method3、Method4、Method5、Method6、Method7、Method8、Method9和Method10。
步骤S202,选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
在一些实施例中,覆盖率确定装置选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例包括:所述覆盖率确定装置从所述源代码包括的全部测试用例类别中,选取一个测试用例类别;并从所述源代码包括的全部测试用例中,筛选出于所述测试用例类别相关的所有测试用例。
例如,所述静态分析数据可以是:所述第一测试用例类别包括第一测试用例,第二测试用例;所述第二测试用例类别包括第三测试用例;所述第三测试用例类别包括第四测试用例和第五测试用例。在所述覆盖率确定装置选取第三测试用例类别的情况下,所述覆盖率确定装置从源代码中选育与所述第三测试用例类别相关的第四测试用例和第五测试用例。
步骤S203,获取测试用例运行的第一块信息。
在一些实施例中,所述覆盖率确定装置获取测试用例运行的第一块信息包括:所述覆盖率确定装置在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息。所述覆盖率确定装置在所述源代码未被运行的情况下,对所述源代码分析的过程中植入探针,在所述源代码的一个用例类别被运行的情况下,所述探针获取的被运行的块信息。
在一些实施例中,覆盖率确定装置获取测试用例运行的第一块信息。所述第一块信息包括:一个测试用例类别中包括的全部测试用例在运行的过程中,运行的块信息。
图3中,源代码中包括第一测试用例类别、第二测试用例类别和第三测试用例类别。所述第一测试用例类别包括:第一测试用例,第二测试用例;所述第二测试用例类别包括:第三测试用例;所述第三测试用例类别包括:第四测试用例、第五测试用例。所述第一测试用例包括函数Method1和Method5;所述第二测试用例包括Method4和Method7;所述第三测试用例包括Method2;所述第四测试用例包括Method3、Method8和Method9;所述第五测试用例包括Method6和Method10。每个函数均包含20个块。即所述源代码包括10个函数,分别为Method1、Method2、Method3、Method4、Method5、Method6、Method7、Method8、Method9和Method10。第一测试用例类别中包括的第一测试用例和第二测试用例所包括的全部函数为Method1、Method4、Method5和Method7。在所述第一测试用例和所述第二测试用例被运行测试的情况下,所述Method1中第4个块到第9个块被运行,所述Method4中第1个块到第10个块被运行,所述Method5中第1个块到第20个块被运行,所述Method7中第7个块到第11个块被运行,则所述测试用例运行的第一块信息包括:所述Method1中第4个块到第9个块、所述Method4中第1个块到第10个块、所述Method5中第1个块到第20个块和所述Method7中第7个块到第11个块。
步骤S204,基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息。
在一些实施例中,覆盖率确定装置基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息包括:所述覆盖率确定装置根据静态分析数据,确定所述第一块信息所属的函数,根据所述函数确认所述函数包括的全部块信息。
在一些实施例中,所述覆盖率确定装置根据静态分析数据,确定所述第一块信息所属的函数,根据所述函数确认所述函数包括的全部块信息包括:所述覆盖率确定装置根据所述静态分析数据和所述第一块信息,确认所述第一块信息所属的函数;所述覆盖率确定装置,根据所述第一块信息所属的函数和所述静态分析数据,确认所述第一块信息所属的函数包括的全部块信息。
在一些实施例中,所述第二块信息包括:所述函数包括的总块数、所述函数包括的起始块的ID和所述函数包括的结束块的ID中至少一种。
如图3所示,在所述第一块信息包括:所述Method1中第4个块到第9个块、所述Method4中第1个块到第10个块、所述Method5中第1个块到第20个块和所述Method7中第7个块到第11个块的情况下,所述覆盖率确定装置根据静态分析数据,确定所述第一块信息所属的函数包括:Method1、Method4、Method5和Method7。所述覆盖率确定装置,根据所述第一块信息所属的函数和所述静态分析数据,确认所述Method1、Method4、Method5和Method7包括的全部块信息,即所述覆盖率确定装置确定所述测试用例对应的第二块信息为:每个函数包括20个块。
步骤S205,基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。
在一些实施例中,所述覆盖率确定装置基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率包括:确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
在一些实施例中,在所述测试用例的覆盖率低于第一阈值的情况下,所述覆盖率确定装置发送报警信息;所述报警信息用于指示所述测试用例的覆盖率较低,需要对所述测试用例进行补充。所述第一阈值为预先设定的值。
如图3所示,所述第一块信息包括:所述Method1中第4个块到第9个块、所述Method4中第1个块到第10个块、所述Method5中第1个块到第20个块和所述Method7中第7个块到第11个块,即所述测试用例被运行的总块数为41。所述第二块信息包括:Method1、Method4、Method5和Method7,每个函数包括20个块,即Method1、Method4、Method5和Method7包含的总块数为80。所述测试用例的覆盖率=第一块信息/第二块信息=41/80=51.25%。
在使用相关覆盖率确认方法的情况下,被测试的总块数为41,所述源代码包括的总块数为200。覆盖率=被测试的总块数/源代码包括的总块数=41/200=20.5%。
如此,通过本申请实施例,将一个测试用例包括的函数的全部块作为分母计算覆盖率,有利于在敏捷迭代场景下,对于部分测试用例的覆盖率统计。本申请实施例提供的覆盖率确定方法,可以根据需求对任意测试用例类别进行覆盖率统计,在选择一个测试用例类别的情况下,可以自动移除非所述测试用例类别的代码。通过本申请实施例得到的覆盖率,可以明确表明一个测试用例类别的测试覆盖充分程度,还可以明确表明所述测试用例类别包括的测试用例或函数的测试覆盖情况。在一个测试用例或函数的覆盖率较低的情况下,可以针对性地进行测试用例的补充,提升测试效果。
图4示出了使用本申请提供的覆盖率确定方法确认覆盖率的可选示意图二,将根据各个部分进行说明。
在对“内容管理功能模块”进行测试的过程中,使用本申请实施例提供的可选流程步骤S101至步骤S103,或者步骤S201至步骤S204。
如图4所示,函数Methed1中的ID为32到35的块被运行;函数Methed2中的ID为44到63的块被运行;函数Methed3中的ID为64到71的块被运行;函数Methed4中的ID为72到97的块被运行;函数Methed5中的ID为98到125的块被运行;函数Methed6中的ID为205到220的块被运行。
进一步,函数Methed1的总块数为4,覆盖块数为4,覆盖率为100%;函数Methed2的总块数为20,被运行块数为20,覆盖率为100%;函数Methed3的总块数为8,被运行块数为8,覆盖率为100%;函数Methed4的总块数为26,被运行块数为14,覆盖率为53.85%;函数Methed5的总块数为28,被运行块数为20,覆盖率为71.43%;函数Methed6的总块数为16,被运行块数为14,覆盖率为87.5%,所以所述测试用例类别覆盖到的函数总块数为102,被运行块数为80,因此所述测试用例类别的相关覆盖率为78.43%。
图5示出了使用本申请提供的覆盖率确定方法确认覆盖率的可选示意图三,将根据各个部分进行说明。
源代码包括两个函数:A函数和B函数;所述A函数中包括5个块,在进行源代码分析的过程中,所述覆盖率确定装置会在block表写入Block ID分别为1、2、3、4、5的五条块信息,且在所述A函数包括的5个块中,每一个块中分别加入一个探针,对应5个块,在Methed表中写入MethedID为1的一个函数,且所述函数的起始块ID为1,结束块ID为5;B函数包括3个块,在进行源代码分析的过程中,所述覆盖率确定装置会在block表写入BlockID分别为6、7、8的三条块信息,且在所述B函数包括的3个块中,每一个块中分别加入一个探针,在Methed表中写入MethedID为2的一个函数,且所述B函数的起始块ID为6,结束块ID为8。这样,在测试用例只接收到对应1、3、5号探针信息的情况下,通过查找静态分析数据获取到所述测试用例覆盖到了A函数中,且可以获取到A函数总块是5。
图6示出了本申请实施例提供的覆盖率确定装置的可选结构示意图,将根据各个部分进行说明。
获取单元301,用于获取测试用例运行的第一块信息。
确定单元302,用于基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;用于基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率。
所述覆盖率确定装置300还包括:
筛选单元303,用于选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
所述获取单元301,还用于在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息;和/或,在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
所述确定单元302,还用于确定所述第一块信息所属的函数。
所述确定单元302,还用于根据静态分析数据,确定所述第一块信息所属的函数。
所述确定单元302,还用于确定所述第一块信息所属的函数中包含的全部块信息为第二块信息。
所述确定单元302,还用于确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
图7为本申请实施例提供的覆盖率确定装置的硬件组成结构示意图,覆盖率确定装置400包括:至少一个处理器401、存储器402和至少一个网络接口404。覆盖率确定装置400中的各个组件通过总线系统405耦合在一起。可理解,总线系统405用于实现这些组件之间的连接通信。总线系统405除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统405。
可以理解,存储器402可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是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)。本申请实施例描述的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例中的存储器402用于存储各种类型的数据以支持覆盖率确定装置400的操作。这些数据的示例包括:用于在覆盖率确定装置400上操作的任何计算机程序,如应用程序4022。实现本申请实施例方法的程序可以包含在应用程序4022中。
上述本申请实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器401可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,覆盖率确定装置400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、FPGA、通用处理器、控制器、MCU、MPU、或其他电子元件实现,用于执行前述方法。
本申请实施例还提供了一种存储介质,用于存储计算机程序。
可选的,该存储介质可应用于本申请实施例中的终端设备,并且该计算机程序使得计算机执行本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种覆盖率确定方法,其特征在于,所述方法包括:
获取测试用例运行的第一块信息;所述第一块信息包括:一个测试用例类别中包括的全部测试用例在运行的过程中,运行的块信息;
基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;
基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率;
其中,所述确定所述测试用例对应的第二块信息包括:
确定所述第一块信息所属的函数中包含的全部块信息为第二块信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
3.根据权利要求1所述的方法,其特征在于,所述获取测试用例运行的第一块信息包括:
在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息;
和/或,在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一块信息所属的函数。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一块信息所属的函数包括:
根据静态分析数据,确定所述第一块信息所属的函数。
6.根据权利要求1所述的方法,其特征在于,所述确定所述测试用例的覆盖率包括:
确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
7.一种覆盖率确定装置,其特征在于,所述装置包括:
获取单元,用于获取测试用例运行的第一块信息;所述第一块信息包括:一个测试用例类别中包括的全部测试用例在运行的过程中,运行的块信息;
确定单元,用于基于所述第一块信息所属的函数,确定所述测试用例对应的第二块信息;用于基于所述第一块信息和所述第二块信息,确定所述测试用例的覆盖率;
其中,所述确定单元还用于:
确定所述第一块信息所属的函数中包含的全部块信息为第二块信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
筛选单元,用于选取一个测试用例类别,从源代码中筛选出与所述测试用例类别相关的所有测试用例。
9.根据权利要求7所述的装置,其特征在于,所述获取单元还用于:
在源代码分析的过程中植入探针,获取所述源代码运行过程中运行的块信息;
和/或,在源代码的每一个函数包含的块中,分别植入一个探针,获取在所述源代码运行的过程中所述探针采集到的运行的块信息。
10.根据权利要求7所述的装置,其特征在于,所述确定单元还用于:
确定所述第一块信息所属的函数。
11.根据权利要求10所述的装置,其特征在于,所述确定单元还用于:
根据静态分析数据,确定所述第一块信息所属的函数。
12.根据权利要求7所述的装置,其特征在于,确定单元还用于:
确定所述第一块信息除以所述第二块信息得到的商为所述测试用例的覆盖率。
13.一种存储介质,存储有可运行程序,其特征在于,所述可运行程序被处理器运行时,实现权利要求1至6任一项所述的覆盖率确定方法。
14.一种覆盖率确定装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可运行程序,其特征在于,所述处理器运行所述可运行程序时运行如权利要求1至6任一项所述的覆盖率确定方法的步骤。
CN202010023133.6A 2020-01-09 2020-01-09 一种覆盖率确定方法、装置及存储介质 Active CN111221737B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010023133.6A CN111221737B (zh) 2020-01-09 2020-01-09 一种覆盖率确定方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010023133.6A CN111221737B (zh) 2020-01-09 2020-01-09 一种覆盖率确定方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN111221737A CN111221737A (zh) 2020-06-02
CN111221737B true CN111221737B (zh) 2023-11-14

Family

ID=70832209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010023133.6A Active CN111221737B (zh) 2020-01-09 2020-01-09 一种覆盖率确定方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN111221737B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557413A (zh) * 2015-09-25 2017-04-05 伊姆西公司 基于代码覆盖率获取测试用例的方法和设备
CN107515826A (zh) * 2017-08-28 2017-12-26 广州阿里巴巴文学信息技术有限公司 测试用例精准推荐方法、装置、系统、设备及存储介质
CN107957956A (zh) * 2017-12-26 2018-04-24 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质
CN110245073A (zh) * 2019-05-21 2019-09-17 北京字节跳动网络技术有限公司 终端代码覆盖率监测方法、系统、介质和电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699476B (zh) * 2012-09-27 2018-07-27 腾讯科技(深圳)有限公司 覆盖率测试方法及系统
IN2015DE01249A (zh) * 2015-05-06 2015-06-05 Hcl Technologies Ltd
CN110196801B (zh) * 2018-02-24 2022-11-11 武汉斗鱼网络科技有限公司 一种基于代码覆盖率的测试方法及装置
CN108519945A (zh) * 2018-03-21 2018-09-11 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557413A (zh) * 2015-09-25 2017-04-05 伊姆西公司 基于代码覆盖率获取测试用例的方法和设备
CN107515826A (zh) * 2017-08-28 2017-12-26 广州阿里巴巴文学信息技术有限公司 测试用例精准推荐方法、装置、系统、设备及存储介质
CN107957956A (zh) * 2017-12-26 2018-04-24 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质
CN110245073A (zh) * 2019-05-21 2019-09-17 北京字节跳动网络技术有限公司 终端代码覆盖率监测方法、系统、介质和电子设备

Also Published As

Publication number Publication date
CN111221737A (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
US9317400B2 (en) Code coverage rate determination method and system
US8397104B2 (en) Creation of test plans
CN110082666B (zh) 芯片测试分析方法、装置、设备及存储介质
CN107133244B (zh) 一种数据库迁移的测试方法和装置
CN106776334A (zh) 基于注释生成测试用例方法及装置
CN107329889B (zh) 一种c编译器自动化测试的方法
US6707313B1 (en) Systems and methods for testing integrated circuits
CN115952757A (zh) 一种寄存器测试方法和装置
CN110019067A (zh) 一种日志分析方法及系统
CN111552475B (zh) 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN113065300A (zh) 芯片eda仿真中回溯仿真波形的方法、系统及装置
CN111897711A (zh) 代码中bug的定位方法、装置、电子设备及可读存储介质
CN109992511B (zh) 获取代码测试覆盖率的装置及方法
CN109669436B (zh) 一种基于电动汽车的功能需求的测试用例生成方法和装置
CN111221737B (zh) 一种覆盖率确定方法、装置及存储介质
JP2007206069A (ja) 最も適合する試験結果タイプに基づいて自動的にデータをフォーマットする方法及び装置
CN113391998A (zh) 回归测试方法、装置、电子设备及存储介质
CN112181812A (zh) 一种版本测试的方法及装置
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
US20130311962A1 (en) Instruction-by-instruction checking on acceleration platforms
CN115840704A (zh) 一种仿真软件测试方法、装置、存储介质及电子设备
CN110990265B (zh) 一种覆盖率确定方法、装置及存储介质
CN112286803A (zh) 一种测试用例的检测方法及装置
CN107102938B (zh) 测试脚本的更新方法及装置
CN112949214B (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