CN106294129A - 代码覆盖率测试方法及装置 - Google Patents

代码覆盖率测试方法及装置 Download PDF

Info

Publication number
CN106294129A
CN106294129A CN201610605354.8A CN201610605354A CN106294129A CN 106294129 A CN106294129 A CN 106294129A CN 201610605354 A CN201610605354 A CN 201610605354A CN 106294129 A CN106294129 A CN 106294129A
Authority
CN
China
Prior art keywords
code
current process
file
code coverage
coverage data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610605354.8A
Other languages
English (en)
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201610605354.8A priority Critical patent/CN106294129A/zh
Publication of CN106294129A publication Critical patent/CN106294129A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了代码覆盖率测试方法及装置,其中,所述方法包括:测试目标代码中当前进程的代码覆盖率数据;生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;根据所述目标文件确定所述目标代码的整体代码覆盖率数据。本公开可以区分出主进程和不同的子进程,使得各个进程的覆盖率数据相互独立,不产生干扰,确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。

Description

代码覆盖率测试方法及装置
技术领域
本公开涉及代码测试领域,尤其涉及代码覆盖率测试方法及装置。
背景技术
代码覆盖率测试是衡量软件测试质量的一个重要标准。相关技术中,在分布式多进程环境下进行代码覆盖率测试时,子进程的测试结果很可能会覆盖掉主进程的测试结果,导致主进程的代码覆盖率数据丢失,且各个子进程之间的所述代码覆盖率数据容易相互覆盖,掩盖了代码编写的冗余问题。造成在分布式多进程情况下,测试得到的所述代码覆盖率数据不够准确,也就无法准确反映软件测试质量。
发明内容
有鉴于此,本公开提供了代码覆盖率测试方法及装置,以解决相关技术中的不足。
根据本公开实施例的第一方面,提供一种代码覆盖率测试方法,所述方法包括:
测试目标代码中当前进程的代码覆盖率数据;
生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
可选地,所述测试目标代码中当前进程的代码覆盖率数据,包括:
通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况;
将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间;
对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
可选地,所述生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件,包括:
将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件;
在所述文件中携带所述当前进程的当前进程标识;
根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
可选地,所述在所述文件中携带所述当前进程的当前进程标识,包括:
当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识;
在所述文件的文件数据中携带所述当前进程标识。
可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。
根据本公开实施例的第二方面,提供一种代码覆盖率测试装置,所述装置包括:
测试模块,被配置为测试目标代码中当前进程的代码覆盖率数据;
文件生成模块,被配置为生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
整体覆盖率确定模块,被配置为根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
可选地,所述测试模块包括:
测试子模块,被配置为通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况;
第一写入子模块,被配置为将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间;
分析子模块,被配置为对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
可选地,所述目标文件生成模块包括:
第二写入子模块,被配置为将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件;
携带子模块,被配置为在所述文件中携带所述当前进程的当前进程标识;
合并子模块,被配置为根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
可选地,所述携带子模块包括:
获取单元,被配置为当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识;
携带单元,被配置为在所述文件的文件数据中携带所述当前进程标识。
可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。
根据本公开实施例的第三方面,提供一种代码覆盖率测试装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
测试目标代码中当前进程的代码覆盖率数据;
生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例中,可以分别测试目标代码中当前进程的代码覆盖率数据,进而生成包括了所述目标代码中所述所有进程的所述代码覆盖率数据的目标文件,从而确定出所述目标代码的整体代码覆盖率数据。通过上述过程,可以区分出主进程和不同的子进程,使得各个进程的覆盖率数据相互独立,不产生干扰,确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。
本公开实施例中,当前进程每一行代码是否被执行的执行情况写入了执行栈空间,可以通过分析所述执行栈空间获取当前进程的代码覆盖率数据,实现简便,可用性高。
本公开实施例中,在测试得到当前进程的代码覆盖率数据后,可以将其写入用于表征代码覆盖情况的文件,且所述文件中携带了与当前进程对应的当前进程标识。进一步地,可以对所有不同的所述当前进程标识对应的所述文件进行合并,得到包括所述目标代码中所有所述进程的所述代码覆盖率数据的目标文件。通过不同文件中携带的所述当前进程标识区分出主进程和不同的子进程,在对所述文件进行合并时,同样可以根据所述当前进程标识避免进程之间的代码覆盖率数据相互干扰,确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。
本公开实施例中,在当前进程调用预设函数时,可以根据调用所述预设函数的执行结果得到所述当前进程的当前进程标识,从而在与所述当前进程对应的文件中携带所述当前进程标识。可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。通过上述过程可以快速、准确的确定所述当前进程标识,实现简便,可用性高。
本公开实施例中,基于目标代码中所有所述进程的所述代码覆盖率数据的目标文件来确定所述目标代码的整体代码覆盖率数据,可以准确地将代码编写的冗余问题反映出来,且可以准确反映软件测试质量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种代码覆盖率测试方法流程图;
图2是本公开根据一示例性实施例示出的另一种代码覆盖率测试方法流程图;
图3是本公开根据一示例性实施例示出的另一种代码覆盖率测试方法流程图;
图4是本公开根据一示例性实施例示出的另一种代码覆盖率测试方法流程图;
图5是本公开根据一示例性实施例示出的另一种代码覆盖率测试方法流程图;
图6是本公开根据一示例性实施例示出的一种代码覆盖率测试装置框图;
图7是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图;
图8是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图;
图9是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图;
图10是本公开根据一示例性实施例示出的一种用于代码覆盖率测试装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开实施例提供的代码覆盖率测试方法可以用于分布式多进程环境中的代码测试系统。如图1所示,图1是根据一示例性实施例示出的一种代码覆盖率测试方法,包括以下步骤:
在步骤101中,测试目标代码中当前进程的代码覆盖率数据。
可选地,步骤101如图2所示,图2是在前述图1所示实施例的基础上示出的另一种代码覆盖率测试方法,包括以下步骤:
在步骤101-1中,通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况。
本步骤中,所述代码测试系统可以启动代码覆盖率测试工具,按照相关技术对所述当前进程进行代码覆盖率测试,从而得到所述代码执行情况。
在步骤101-2中,将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间。
本公开实施例中,系统按照相关技术为每个进程预先分配了执行栈空间。所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间。本步骤中,可以在测试出所述代码执行情况后,将所述代码执行情况按照相关技术写入所述执行栈空间。
在步骤101-3中,对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
本步骤中,可以按照相关技术通过分析所述执行栈空间中存放的所述代码执行情况,得到所述当前进程的所述代码覆盖率数据。
例如,所述执行情况为所述当前进程共包括n行代码,其中有m行代码未执行,则所述当前进程的所述代码覆盖率数据为
在步骤102中,生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件。
可选地,步骤102如图3所示,图3是在前述图1所示实施例的基础上示出的另一种代码覆盖率测试方法,包括以下步骤:
在步骤102-1中,将当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件。
本步骤中,可以按照相关技术将所述当前进程的所述代码覆盖率数据写入相应的所述文件中。可选地,所述文件可以是coverage.dat文件。
在步骤102-2中,在所述文件中携带所述当前进程的当前进程标识。
本步骤中,为了避免进程之间的所述代码覆盖率数据相互干扰,需要在与所述当前进程对应的所述文件中携带所述当前进程标识。可选地,所述当前进程标识为所述当前进程的进程号。
可选地,步骤102-2如图4所示,图4是在前述图3所示实施例的基础上示出的另一种代码覆盖率测试方法,包括以下步骤:
在步骤102-21中,当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识。
可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。例如,fork函数。
相关技术中,当所述当前进程调用所述预设函数时,执行结果至少包括了所述当前进程的所述当前进程标识。因此,本步骤中,可以根据调用fork函数的执行结果得到所述当前进程标识。
在步骤102-22中,在所述文件的文件数据中携带所述当前进程标识。
本步骤中,可以按照相关技术在所述文件的文件数据中携带所述当前进程标识。
在本公开实施例中,如果所述当前进程的所述代码覆盖率数据写入相应的coverage.dat文件,则在该文件的文件数据中还需要携带所述当前进程标识,即所述当前进程的进程号。最终得到多个与进程号对应的coverage.dat文件,如表1所示。
表1
用于表征代码覆盖情况的文件 进程标识
coverage1.dat A
coverage2.dat B
coverage3.dat C
在步骤102-3中,根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
本步骤中,可以按照相关技术对所述目标代码中所有不同的所述当前进程标识对应的所述文件进行合并,从而得到所述目标文件。
通过所述文件中携带的所述当前进程标识对进程进行区分,在对所述文件进行合并时,可以根据所述当前进程标识避免进程之间的代码覆盖率数据相互干扰,确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。
在步骤103中,根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
本步骤中,由于所述目标文件中包括了所述目标代码中所述所有进程的所述代码覆盖率数据,则可以按照相关技术计算所述整体覆盖率数据。
可选地,所述整体覆盖率数据可以是每个进程的所述代码覆盖率数据的平均值。例如,目标代码中包括3个进程,对应的所述代码覆盖率数据分别为a、b和c,则所述整体覆盖率数据可以是(a+b+c)/3。
进一步地,还可以根据所述目标文件生成代码覆盖率报告。所述代码覆盖率报告中除了可以包括每个进程的所述代码覆盖率数据和所述整体覆盖率数据外,还可以包括用于表征所述目标代码中每个进程的返回值是否是满足预设需求的返回值的第一执行结果,用于表征当前函数是否得到正确返回值的第二执行结果,用于表征所有边界条件是否覆盖到了所有的所述目标代码的第三执行结果,以及用于表征所述目标代码中是否有冗余代码的第四执行结果等。
上述实施例中,可以分别测试目标代码中当前进程的代码覆盖率数据,进而生成包括了所述目标代码中所述所有进程的所述代码覆盖率数据的目标文件,从而确定出所述目标代码的整体代码覆盖率数据。通过上述过程,可以区分出主进程和不同的子进程,使得各个进程的覆盖率数据相互独立,不产生干扰,确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。
如图5所示,图5是根据一示例性实施例示出的另一种代码覆盖率测试方法流程图,包括以下步骤:
在步骤201中,通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况。
在步骤202中,将所述代码执行情况写入预先分配的执行栈空间。
其中,所述执行栈空间是所述代码测试系统预先分配的与所述当前进程对应的且用于存放所述代码执行情况的栈空间。
在步骤203中,对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
本步骤中,可以按照相关技术通过分析所述代码执行情况,获取所述当前进程的所述代码覆盖率数据。
在步骤204中,将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件。
本步骤中,可以按照相关技术将所述当前进程的所述代码覆盖率数据写入相应的所述文件中。可选地,所述文件可以是coverage.dat文件。
在步骤205中,当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识。
可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。例如,fork函数。
当所述当前进行调用了fork函数时,调用fork函数的执行结果中包括了所述当前进程标识,即所述当前进程的进程号。
在步骤206中,在所述文件的文件数据中携带所述当前进程标识。
本步骤中,在coverage.dat文件的文件数据中还需要携带所述当前进程的进程号,最终得到多个与进程号对应的coverage.dat文件。
在步骤207中,根据所述文件携带的所述当前进程标识对所述目标代码中所有进程对应的所述文件进行合并,得到包括所述目标代码中所述所有进程的所述代码覆盖率数据的目标文件。
本步骤中,由于所有的coverage.dat文件中均携带了相应的进程号,在进行合并时,保留不同进程号对应的所述代码覆盖率数据。因此,不会产生进程之间的所述代码覆盖率数据相互干扰或覆盖的情况。
在步骤208中,根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
本步骤中,由于所述目标文件中包括了所述目标代码中所有进程的所述代码覆盖率数据,则可以按照相关技术计算所述整体覆盖率数据。计算方式与上述实施例提供的计算方式相同,在此不再赘述。
上述实施例中,当前进程每一行代码是否被执行的执行情况写入了执行栈空间,可以通过分析所述执行栈空间获取当前进程的代码覆盖率数据。在测试得到当前进程的代码覆盖率数据后,可以将其写入用于表征代码覆盖情况的文件,且所述文件中携带了与当前进程对应的当前进程标识。进一步地,可以对所有不同的所述当前进程标识对应的所述文件进行合并,得到包括所述目标代码中所有所述进程的所述代码覆盖率数据的目标文件。通过不同文件中携带的所述当前进程标识区分出主进程和不同的子进程,在对所述文件进行合并时,同样可以根据所述当前进程标识避免进程之间的代码覆盖率数据相互干扰。基于目标代码中所有所述进程的所述代码覆盖率数据的目标文件来确定所述目标代码的整体代码覆盖率数据,可以确保最终整体覆盖率数据的准确性,将代码编写的冗余问题反映出来,准确反映软件测试质量。
与前述方法实施例相对应,本公开还提供了装置的实施例。
如图6所示,图6是本公开根据一示例性实施例示出的一种代码覆盖率测试装置框图,包括:
测试模块310,被配置为测试目标代码中当前进程的代码覆盖率数据;
文件生成模块320,被配置为生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
整体覆盖率确定模块330,被配置为根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
如图7所示,图7是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图,该实施例在前述图6所示实施例的基础上,所述测试模块310包括:
测试子模块311,被配置为通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况;
第一写入子模块312,被配置为将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间;
分析子模块313,被配置为对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
如图8所示,图8是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图,该实施例在前述图6所示实施例的基础上,所述文件生成模块320包括:
第二写入子模块321,被配置为将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件;
携带子模块322,被配置为在所述文件中携带所述当前进程的当前进程标识;
合并子模块323,被配置为根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
如图9所示,图9是本公开根据一示例性实施例示出的另一种代码覆盖率测试装置框图,该实施例在前述图8所示实施例的基础上,所述携带子模块322包括:
获取单元3221,被配置为当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识;
携带单元3222,被配置为在所述文件的文件数据中携带所述当前进程标识。
可选地,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本公开还提供一种代码覆盖率测试装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
测试目标代码中当前进程的代码覆盖率数据;
生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
如图10所示,图10是根据一示例性实施例示出的一种用于代码覆盖率测试装置1000的一结构示意图。例如,装置1000可以被提供为代码测试系统的服务器。参照图10,装置1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述代码覆盖率测试方法。
装置1000还可以包括一个电源组件1026被配置为执行装置1000的电源管理,一个有线或无线网络接口1050被配置为将装置1000连接到网络,和一个输入输出(I/O)接口1058。装置1000可以操作基于存储在存储器1032的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或者惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (11)

1.一种代码覆盖率测试方法,其特征在于,所述方法包括:
测试目标代码中当前进程的代码覆盖率数据;
生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
2.根据权利要求1所述的方法,其特征在于,所述测试目标代码中当前进程的代码覆盖率数据,包括:
通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况;
将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间;
对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
3.根据权利要求1所述的方法,其特征在于,所述生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件,包括:
将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件;
在所述文件中携带所述当前进程的当前进程标识;
根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
4.根据权利要求3所述的方法,其特征在于,所述在所述文件中携带所述当前进程的当前进程标识,包括:
当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识;
在所述文件的文件数据中携带所述当前进程标识。
5.根据权利要求4所述的方法,其特征在于,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。
6.一种代码覆盖率测试装置,其特征在于,所述装置包括:
测试模块,被配置为测试目标代码中当前进程的代码覆盖率数据;
文件生成模块,被配置为生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
整体覆盖率确定模块,被配置为根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
7.根据权利要求6所述的装置,其特征在于,所述测试模块包括:
测试子模块,被配置为通过代码覆盖率测试工具对所述当前进程进行测试,获得用于表征所述当前进程每一行代码是否被执行的代码执行情况;
第一写入子模块,被配置为将所述代码执行情况写入预先分配的执行栈空间,所述执行栈空间是与所述当前进程对应的且用于存放所述代码执行情况的栈空间;
分析子模块,被配置为对所述执行栈空间中存放的所述代码执行情况进行分析,获取所述当前进程的所述代码覆盖率数据。
8.根据权利要求6所述的装置,其特征在于,所述目标文件生成模块包括:
第二写入子模块,被配置为将所述当前进程的所述代码覆盖率数据写入与所述当前进程对应的用于表征代码覆盖情况的文件;
携带子模块,被配置为在所述文件中携带所述当前进程的当前进程标识;
合并子模块,被配置为根据所述文件携带的所述当前进程标识对所述目标代码中所述所有进程对应的所述文件进行合并,得到所述目标文件。
9.根据权利要求8所述的装置,其特征在于,所述携带子模块包括:
获取单元,被配置为当所述当前进程调用预设函数时,根据调用所述预设函数的执行结果得到所述当前进程的所述当前进程标识;
携带单元,被配置为在所述文件的文件数据中携带所述当前进程标识。
10.根据权利要求9所述的装置,其特征在于,所述预设函数为将所述当前进程的所有值复制到另一进程,使得所述另一进程执行与所述当前进程相同动作的函数。
11.一种代码覆盖率测试装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
测试目标代码中当前进程的代码覆盖率数据;
生成包括所述目标代码中所有进程的所述代码覆盖率数据的目标文件;
根据所述目标文件确定所述目标代码的整体代码覆盖率数据。
CN201610605354.8A 2016-07-27 2016-07-27 代码覆盖率测试方法及装置 Pending CN106294129A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610605354.8A CN106294129A (zh) 2016-07-27 2016-07-27 代码覆盖率测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610605354.8A CN106294129A (zh) 2016-07-27 2016-07-27 代码覆盖率测试方法及装置

Publications (1)

Publication Number Publication Date
CN106294129A true CN106294129A (zh) 2017-01-04

Family

ID=57662759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610605354.8A Pending CN106294129A (zh) 2016-07-27 2016-07-27 代码覆盖率测试方法及装置

Country Status (1)

Country Link
CN (1) CN106294129A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582557A (zh) * 2017-09-29 2019-04-05 中国石油化工股份有限公司 基于代价的测试质量评估方法及系统
CN110008115A (zh) * 2019-02-27 2019-07-12 北京三快在线科技有限公司 代码覆盖率统计方法、装置、电子设备及可读存储介质
CN110515829A (zh) * 2019-07-10 2019-11-29 平安普惠企业管理有限公司 应用测试方法、装置、设备及计算机可读存储介质
CN111581084A (zh) * 2020-04-28 2020-08-25 南方电网数字电网研究院有限公司 基于智能电表操作系统的进程测试方法和装置
CN113392033A (zh) * 2021-08-17 2021-09-14 北京安普诺信息技术有限公司 一种确定被动iast测试api覆盖率的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050210339A1 (en) * 2004-03-22 2005-09-22 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US20060101419A1 (en) * 2004-10-21 2006-05-11 Babcock David J Program code coverage
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN105589805A (zh) * 2015-12-16 2016-05-18 北京奇虎科技有限公司 一种代码覆盖率报告的生成方法和装置
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050210339A1 (en) * 2004-03-22 2005-09-22 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US20060101419A1 (en) * 2004-10-21 2006-05-11 Babcock David J Program code coverage
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN105589805A (zh) * 2015-12-16 2016-05-18 北京奇虎科技有限公司 一种代码覆盖率报告的生成方法和装置
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
淘杰: "多进程下的测试覆盖率", 《HTTP://TAOBAOFED.ORG/BLOG/2015/12/15/NODEJS-CLUSTER-COV/》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582557A (zh) * 2017-09-29 2019-04-05 中国石油化工股份有限公司 基于代价的测试质量评估方法及系统
CN110008115A (zh) * 2019-02-27 2019-07-12 北京三快在线科技有限公司 代码覆盖率统计方法、装置、电子设备及可读存储介质
CN110515829A (zh) * 2019-07-10 2019-11-29 平安普惠企业管理有限公司 应用测试方法、装置、设备及计算机可读存储介质
CN111581084A (zh) * 2020-04-28 2020-08-25 南方电网数字电网研究院有限公司 基于智能电表操作系统的进程测试方法和装置
CN113392033A (zh) * 2021-08-17 2021-09-14 北京安普诺信息技术有限公司 一种确定被动iast测试api覆盖率的方法及装置

Similar Documents

Publication Publication Date Title
CN106294129A (zh) 代码覆盖率测试方法及装置
US11263116B2 (en) Champion test case generation
US20140310051A1 (en) Methods and Apparatus for Project Portfolio Management
CN109697500B (zh) 数据处理方法、装置、电子设备及存储介质
US9483385B2 (en) Method, program, and system for generating test cases
US20170192880A1 (en) Defect prediction
WO2016188170A1 (zh) 测试方法和装置、设备、计算机存储介质
Chan et al. Detecting concerted demographic response across community assemblages using hierarchical approximate Bayesian computation
JP2019204482A (ja) 並行脆弱性検出
US10089109B2 (en) System and method for evaluating human resources in a software development environment
CN106254144A (zh) 故障定位平台、故障定位方法及装置
CN107622008B (zh) 一种应用页面的遍历方法和装置
CN106980571A (zh) 一种测试用例集的构建方法和设备
US11080179B2 (en) Device, system, and method for automatically detecting and repairing a bug in a computer program using a genetic algorithm
US9286195B2 (en) Derivation of generalized test cases
US20090172643A1 (en) Program verification apparatus, program verification method, and program storage medium
US11663113B2 (en) Real time fault localization using combinatorial test design techniques and test case priority selection
CN109063483B (zh) 一种基于路径追踪的漏洞检测方法及系统
CN108958941B (zh) 图像处理方法和装置
CN110032505A (zh) 软件质量确定装置、软件质量确定方法和软件质量确定程序
CN104133768A (zh) 一种程序代码复查方法和装置
JP2020102209A (ja) ソフトウェアプログラム不良位置の識別
CN107710154A (zh) 用于处理数据对象变量的计算机实现的方法
US11656977B2 (en) Automated code checking
CN110928941B (zh) 一种数据分片抽取方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104

RJ01 Rejection of invention patent application after publication