CN110209568A - 覆盖率测试方法、装置及存储设备 - Google Patents
覆盖率测试方法、装置及存储设备 Download PDFInfo
- Publication number
- CN110209568A CN110209568A CN201810374770.0A CN201810374770A CN110209568A CN 110209568 A CN110209568 A CN 110209568A CN 201810374770 A CN201810374770 A CN 201810374770A CN 110209568 A CN110209568 A CN 110209568A
- Authority
- CN
- China
- Prior art keywords
- code
- coverage
- version
- line identifier
- old version
- 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
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
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
技术领域
本发明实施例涉及软件测试技术领域,特别是涉及一种覆盖率测试方法、装置及存储设备。
背景技术
覆盖率是软件测试中的一种度量,其描述程序中代码被执行的比例和程度。覆盖率测试是一种有效发现问题的手段,通过对代码覆盖率进行分析,可以快速定位到哪些代码是没有运行的,从而构造相应的测试用例来覆盖这些代码,以发现软件设计中存在的缺陷和错误。
目前,软件代码覆盖率测试方案多以本地部署工具或IDE集成插件的方式实现。大部分覆盖率工具以代码行号标记代码覆盖记录,一旦代码发生变更导致行号偏移,覆盖率数据就会产生偏差,因此仅支持在某个固定版本下执行测试用例统计代码覆盖率(例如Xdebug、Jacoco等)。
可见,目前覆盖率测试工具只能得到某一个版本的覆盖率信息,但是,在实际测试过程中,整个迭代周期内的业务代码都会频繁变更,如开发人员会不断地对业务代码进行漏洞修复、需求开发,这是一个不断迭代的过程,使得业务代码往往会存在多个版本。然而,目前覆盖测试工具不支持多版本业务代码的整体覆盖率测试。
发明内容
本发明实施例提供了一种覆盖率测试方法、装置及存储设备,可以支持多版本业务代码的整体覆盖率测试。
本发明实施例提供了一种覆盖率测试方法,包括:
获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
根据所述代码差异信息对所述映射关系进行修改;
根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
根据整合后的代码覆盖行标识获取代码的整体覆盖率。
本发明实施例提供了一种覆盖率测试装置,包括:
差异获取单元,用于获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
修改单元,用于根据所述代码差异信息对所述映射关系进行修改;
映射单元,用于根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
整合单元,用于当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
覆盖率获取单元,用于根据整合后的代码覆盖行标识获取代码的整体覆盖率。
本发明实施例还提供了一种存储设备,所述存储设备用于储存多条指令,所述指令适于由处理器加载并执行本发明实施例所提供的覆盖率测试方法。
本发明实施例采用获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;根据代码差异信息对映射关系进行修改;根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;根据整合后的代码覆盖行标识获取代码的整体覆盖率。通过该方案可以测试代码的整体覆盖率,便于测试人员可以对代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持,并且还可以有效地避免多版本业务代码的重复测试和分析,提升了测试效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的覆盖率测试方法的应用场景示意图。
图1b是本发明实施例提供的覆盖率测试方法的流程示意图。
图1c是本发明实施例提供的覆盖数据储存示意图。
图1d是本发明实施例提供的映射关系修改示意图。
图1e是本发明实施例提供的数据整合示意图。
图2a是本发明实施例提供的覆盖率测试方法的另一流程示意图。
图2b是本发明实施例提供的全迭代流程代码覆盖行累积意图。
图3a是本发明实施例提供的覆盖率测试装置的结构示意图。
图3b是本发明实施例提供的覆盖率测试装置的另一结构示意图。
图3c是本发明实施例提供的覆盖率测试装置的又一结构示意图。
图4是本发明实施例所提供的服务器的结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。
在以下的说明中,本申请的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存***中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实***置,其具有由该数据格式所定义的特定特性。但是,本申请原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本文所使用的术语“模块”可看做为在该运算***上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算***上的实施对象。而本文所述的装置及方法可以以软件的方式进行实施,当然也可在硬件上进行实施,均在本申请保护范围之内。
本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、***、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供了一种覆盖率测试方法、装置及存储介质,该覆盖率测试方法的执行主体可以是本发明实施例提供的覆盖率测试装置,该覆盖率测试装置可以采用硬件或者软件的方式实现。在一个具体的实施例中,该覆盖率测试装置可以集成在服务器中,例如集成在网页web服务器。
请参阅图1a,图1a为本申请实施例提供的覆盖率测试方法的应用场景示意图,以覆盖率测试装置集成在服务器为例,开发人员可以将编写的应用程序的各个版本的源代码存储在服务器的代码库中,比如,开发人员在编写出某应用程序的第一版本的源代码之后,将第一版本的源代码存储在服务器中,该第一版本的源代码即为该APP的第一版本代码,服务器将该第一版本代码编译后发送给测试设备进行测试,从测试设备获取测试第一版本代码得到的第一覆盖信息数据;如果开发人员发现该第一版本代码存在缺陷,则对该第一版本代码进行修改,得到第二版本的源代码,该第二版本的源代码即为应用程序的第二版本代码(第二版本代码即为当前版本代码,此时,第一版本的源代码即为历史版本代码),同样,将该第二版本代码编译后发送给测试设备进行测试,从测试设备获取测试第二版本代码得到的第二覆盖数据,所述第一覆盖数据中包括所述第一版本代码的代码覆盖行标识(比如,代码覆盖行号),所述第二覆盖数据中包括所述第二版本代码的代码覆盖行标识(比如,代码覆盖行号)。
当服务器检测到第一版本代码发生变更,如变更到第二版本代码时,服务器可以获取新版本代码(即第二版本代码)与相邻历史版本代码(即第一版本代码)之间的代码差异信息(比如存在差异的行号),和映射关系;根据代码差异信息对映射关系进行修改;根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;根据整合后的代码覆盖行标识获取代码的整体覆盖率。
比如,在需要计算整体覆盖率时,服务器可以将之前所有历史版本代码的映射后代码覆盖行数(根据行号可得)和当前版本代码的代码覆盖行的行数(根据行号可得)相加,将相加的结果与当前版本代码的可执行代码行的行数的比值作为应用程序的整体覆盖率,以便于测试人员可以对应用程序代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持。
以下分别进行详细说明。
本实施例将从覆盖率测试装置的角度进行描述,该覆盖率测试装置可以集成在服务器,如图1b所示,本实施例的方法的具体流程可以如下:
101、获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
其中,新版本代码可以为应用程序的当前最新版本代码。其中,相邻历史版本代码为距离当前最新版本最近的历史版本的应用程序代码。比如,为当前版本代码的上一版本代码。
比如,开发人员针对某个应用程序先后编写出了三版代码,版本一、版本二和版本三,其中,版本二为修改版本一得到的,版本三为修改版本二得到的,则版本三是当前版本代码即最新版本,相邻历史版本代码可以是版本二。
其中,应用程序的各版本代码,通常是由开发人员编写的,开发人员可以将编写的应用程序的各版本代码存储在服务器的代码库中。
其中,代码差异信息可以为当版本代码与相邻历史版本代码之间的代码行差异信息,可以包括变更代码行标识(如变更代码行的行号)以及变更类型等等。其中,变更类型包括:删除、新增、替换等等。
本发明实施例中,可以对当前版本代码与相邻历史版本代码进行对比分析,得到二者之间的代码差异信息。
比如,可以从代码库中调取当前版本代码和相邻历史版本代码进行对比分析,例如采用预设比较工具(比如diff工具,具体地调用diff接口分析差异信息)对当前版本代码和相邻历史版本代码进行对比分析,得到当前版本代码和相邻历史版本代码之间的代码差异信息,比如,可以得到变更代码行标识及变更类型等信息。例如,当前版本代码中,第13、14、15为新增代码行、相邻历史版本代码中第2、3、4为删除代码行,相邻历史版本代码中第7行代码被当前版本代码中第9行替换,等等。
在一实施例中,为了便于计算覆盖率,提升覆盖率测试速度,还可以将代码差异信息转化成标签格式表示,其中,代码差异标签可以表示代码行之间的差异信息,比如,变更代码行标识和变更类型等等。例如:代码差异标签可以包括用于表示代码变更类型的变更类型标识、以及用于标识变更代码行的变更代码行标识;如下:
[insert,a,b]:表示在当前版本代码中的第[a,b]行都是新增行;
[delete,c,d]:表示在历史相邻版本代码中的第[c,d]行都是删除行;
[replace,a,b,c,d]:表示历史相邻版本代码中第[a,b]行被当前版本代码的第[c,d]行替换。
本发明实施例以标签格式记录版本代码之间的差异信息,可以节省存储空间,并便于后续快速调用,提升覆盖率测试速度和效率。
在一实施例中,每类标识可以重复出现,并且还可以按照变更代码行标识如行号进行排序,如按照行号从小到大、或者从大到小进行排序。
其中,当前版本代码与相邻历史版本代码之间的映射关系可以为当前版本代码中代码行与相邻历史版本代码行之间的对应关系;可以通过对当前版本代码与相邻历史版本代码进行对比分析得到。其中,映射关系的表现形式可以由多种,比如可以是表格形式等等。
例如,相邻历史版本代码中第1、2、3、4行分别对应当前版本代码中第1、2、3、4行、相邻历史版本代码中第5行对应当前版本代码中的第5、6、7行、相邻历史版本代码中第6行对应当前版本代码中第8行等等。
在一实施例中,可以在检测到当前测试的代码发生变更,或者检测到新版本代码时,对新版本代码与相邻历史版本代码进行对比,得到新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
比如,当检测到即将部署或者测试变更版本代码(即新版本代码)时,获取当前版本代码(即新版本代码)和变更前的版本代码(即旧版本代码,也即相邻历史版本代码);当成功获取旧版本代码时,可以调用Diff接口通过Diff比较工具获取二者之间的差异信息;当旧版本代码不存在时,表明该新版本代码为初始版本代码,此时,可以将新版本代码全部作为差异代码。同时,可以获取新旧版本代码之间的映射关系。
在一实施例中,在步骤101之前还包括:收集代码的代码覆盖数据,其中,代码覆盖数据包括代码覆盖行标识如行号。
比如,还可以包括:获取测试设备上报的当前测试版本代码的代码覆盖数据,其中,代码覆盖数据可以包括代码覆盖行标识如行号,此外,该代码覆盖数据还可以包括:数据存储路径、时间信息(如时间戳)等信息。
其中,数据存储路径为代码覆盖数据存储的路径,该路径可以为数据存储的绝对路径,如“demo_file”等。
例如,在一实施例中,可以获取测试设备上报的当前测试版本代码的覆盖信息文件,该覆盖信息文件包括代码覆盖数据,此时,数据存储路径即为覆盖信息文件的文件存储路径。
在一实施例中,代码覆盖数据还可以包括分支覆盖数据,该分支覆盖数据可以包括:分支代码行标识、跳转行标识、时间信息(如时间戳)、数据存储路径。
通常,在开发某个APP时,开发人员首先编写出该APP的第一版本的源代码,即第一版本代码,将第一版本代码存储在代码库中。测试人员需要对第一版本代码进行测试,测试人员可以通过测试设备向服务器发送下载请求,下载请求中可以包括需要测试的应用程序的名称、版本号等信息。服务器在接收到下载请求之后,可以对第一版本代码进行编译,比如可以将第一版本代码编译成二进制可执行代码,并去除无效代码行和非逻辑代码行,比如去除空行、注释、括号行、声明语句等,得到第一版本代码的有效代码行。比如,第一版本代码的可执行代码共有15行,其中,有效代码行为2、3、4、5、6以及8、9、10、11、12行,共10行。编译之后,服务器可以将第一版本代码的编译结果发送给测试设备,以由测试人员在测试设备上利用所设计的测试用例对编译结果进行测试,得到第一版本代码的代码覆盖数据或者执行数据,服务器从测试设备获取该覆盖数据或执行数据。其中,覆盖数据或者执行数据可以包括代码覆盖行标识等。
之后,开发人员可以根据需求对第一版本代码进行修改,得到该APP的第二版本代码,同样,服务器可以对第二版本代码进行编译,比如可以将第二版本代码编译成二进制可执行代码,并去除无效代码行和非逻辑代码行,比如去除空行、注释、括号行、声明语句等,得到第二版本代码的有效代码行。比如,在上面的例子中,在第一版本代码的第2行之前,新增了5行,得到第二版本代码,则第二版本代码中共有20行,其中,2、3、4、5、6、7、8、9、10、11以及13、14、15、16、17行为有效代码行,共15行。编译之后,服务器可以将第二版本代码的编译结果发送给测试设备,以由测试人员在测试设备上利用所设计的测试用例对编译结果进行测试,得到覆盖数据或者执行数据,服务器从测试设备获取第二版本代码的覆盖数据或执行数据。其中,覆盖数据或者执行数据可以包括代码覆盖行标识。
比如,在开发APP1时,开发人员首先编写出APP1的第一版本代码1.1,当测试人员需要对1.1版本进行测试时,服务器可以对1.1版本进行编译,编译之后,将编译结果发送给测试设备进行测试,测试之后,从测试设备获取1.1版本的覆盖信息文件APP1 1.1.txt;开发人员对APP1 1.1.txt进行分析之后,对1.1版本进行了修改,得到1.2版本,对1.2版本编译之后,将编译结果发送给测试设备进行测试,测试之后,从测试设备获取1.2版本的覆盖信息文件APP11.2.txt。
在一实施例中,为了便于后续对覆盖数据的处理和应用,提升覆盖率测试效率,可以对覆盖数据进行格式处理,简化覆盖数据。也即,本发明实施例方法还包括:
获取测试设备上报的当前测试版本代码的代码覆盖数据,代码覆盖数据包括代码覆盖行标识、数据存储路径、以及时间信息;
对代码覆盖数据进行数据格式化处理,得到格式化后的代码覆盖数据。
其中,代码覆盖数据的格式可以有多种,例如,在测试设备包括覆盖信息文件时,行覆盖数据格式,可以包括:
时间戳:{文件绝对路径:[已覆盖行号]}
例:20170101000000:{“demo_file”:[2,3,5,8]}
分支覆盖数据格式,可以包括:
时间戳:{文件绝对路径:{分支行号:{分支行号标记*:{跳转行号标记*A:1|0,跳转行号标记*B:0|1}}}}
例:
20170101000000:{“demo_file”:{"3":{"op5":{"4_op6":1,"8_op12":0}}}}。
此外,在一实施例中,为了便于后续提取代码覆盖数据,还可以按照代码版本、数据存储路径、时间信息等将代码覆盖数据归类存储。例如,按照项目、开发流、代码版本、文件路径、时间段等归类存储落地,参考图1c。
102、根据代码差异信息对映射关系进行修改。
比如,可以根据代码差异信息对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行修改。
比如,在一实施例中,代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;此时,可以根据变更类型和变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
例如,对于新增代码行,可以消除新版本代码中新增代码行所在代码块的映射关系;对于删除的代码行,可以消除相邻历史版本代码中删除代码行所在代码块的映射关系;对于替换代码行,可以在新版本代码和相邻历史版本代码中替换代码行所在代码块的映射关系。
在实际应用中,可以通过对新版本代码和/或相邻历史版本代码进行代码静态分析,得到新版本代码和/或相邻历史版本代码中变更代码行所在的代码块。
譬如,当将代码差异信息以标签的格式表示时,修改映射关系可以包括:
对于insert标签,分析新版本代码文件,并消除新增行所在代码块的映射关系;
对于delete标签,分析旧版本代码文件,并消除删除行所在代码块的映射关系;
对于replace标签,分析新旧版本代码文件,并标记替换行所在代码块的映射关系。
本发明实施,可以对覆盖过而后产生变更的代码,做特殊标记可以便于测试团队回归用例。
参考图1d,当检测到新版本代码文件时,可以获取并备份当前版本(旧版本代码文件),然后,获取变更文件列表(由发布平台传参或本地对比代码文件md5得到),从列表中获取新版本代码文件;判断是否查找到旧版本代码文件,若查找到,则可以调用Diff接口通过Diff比较工具获取二者之间的差异信息;若查找不到旧版本代码,表明该新版本代码为初始版本代码,此时,可以将新版本代码全部作为差异代码,作差异化记录。同时,通过对比可以获取新旧版本代码之间的映射关系。然后,将代码差异信息以标签格式存储(insert/delete/replace)。
通过对应语言的代码静态分析工具,确定新旧代码文件中变更代码行所在执行代码块,并基于标签类型对代码的映射关系进行修改。其中:
对于insert标签,分析新版本代码文件,并消除新增行所在代码块的映射关系;
对于delete标签,分析旧版本代码文件,并消除删除行所在代码块的映射关系;
对于replace标签,分析新旧版本代码文件,并标记替换行所在代码块的映射关系。
103、根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识。
其中,历史版本代码为新版本即当前版本之前版本的代码,如上一版本代码等。其中,历史版本代码的数量可以有一个或者多个,比如,开发人员针对某个应用程序先后编写出了五版代码,版本一、版本二、版本三、版本四以及版本五,其中,版本五为新版代码、版本一、版本二、版本三、版本四为历史版本代码,版本四为新版本代码的相邻历史版本代码。
比如,在存在两个或者两个以上版本代码的情况下,可以根据修改后的映射关系,将之前各个历史版本代码的代码覆盖行号映射成新版本代码中的代码覆盖行号。
其中,历史版本代码的代码覆盖标识可以通过测试设备对历史版本代码测试得到,如获取测试设备上报的原始代码覆盖数据,其中原始代码覆盖数据可以包括代码覆盖行标识如行号。
比如,在一实施例中,当根据数据存储路径、测试代码所属的版本以及时间信息,对格式化后的代码覆盖数据进行存储的情况下,可以从本地存储提取历史版本代码的代码覆盖数据;根据修改后的映射关系将历史版本代码的代码覆盖数据中的代码覆盖行标识,映射成当前版本代码中的代码覆盖行标识。
例如,开发人员首先针对某个应用程序编写出第一版本代码,并保存在服务器的代码库中,需要测试时,服务器将第一版本代码编译后发送给测试设备,测试设备对第一版本代码进行测试,并上报第一版本代码的代码覆盖数据,该代码覆盖数据包括代码覆盖行号。
之后,开发人员在第一版本代码的基础上修改了代码,得到第二版本代码,当检测到新版本代码出现时通过执行上述步骤101至103,根据修改后的映射关系,将第一版本代码的代码覆盖行号映射成第二版本代码中的代码覆盖行号。
例如,第一版本代码的代码覆盖行为2、3、4行,第二版本代码为在第一版本代码的第2行之前新增了5行代码得到的,则第一版本代码的代码覆盖行2、3、4映射至第二版本代码,得到的第一版本代码的代码覆盖行为7、8、9行。
在一实施例中,当存在两个以上的版本代码情况下,历史版本代码的代码覆盖标识还可以为已经映射过的代码覆盖行标识或者原始代码覆盖行标识,如将历史版本代码的原始代码覆盖行标识映射到新版本代码的相邻历史版本代码的代码覆盖行标识。
比如,当存在三个版本代码的情况,即第一、二、三版本代码;当检测到第二版本代码时,将测试设备上报的第一版本代码(历史版本)的原始代码覆盖行号映射成第二版本代码中的代码覆盖行号;当检测第三版本代码出现时,将第一版本代码的映射后代码覆盖行号再次映射成第三版本代码中的代码覆盖行号;将测试设备上报的第二版本代码的元素代码覆盖行号映射成第三版本代码中的代码覆盖行号。
例如,第一版本代码的代码覆盖行为2、3、4行,第二版本代码为在第一版本代码的第2行之前新增了5行代码得到的,则第一版本代码的代码覆盖行2、3、4映射至第二版本代码,得到的第一版本代码的代码覆盖行为7、8、9行。第三版本代码为在第二版本代码的第2行之前删除了2行代码得到的;此时,第一版本代码的代码覆盖行7、8、9行映射到第三版本代码,得到的第一版本代码的代码覆盖行为5、6、7行。第二版本代码的代码覆盖行15、16、17行映射到第三版本代码,得到第二版本代码的代码覆盖行为12、14、15行。
本发明实施例,通过映射可以使得之前的各个历史版本代码的代码覆盖行映射或者偏移至当前最新版本。
本发明实施例方法的核心目的在于,尽可能地保留历史版本的测试成果,在当前版本中展现,避免重复测试;同时,对于产生变更的代码,不保留历史代码覆盖记录,避免产生干扰;另外,对于曾经覆盖过而后产生变更的代码,做特殊标记以便测试团队回归用例。
104、当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合。
比如,可以对新版本代码的代码覆盖行标识以及各个历史版本代码的映射后代码覆盖行标识进行整合。
例如,开发人员针对某个应用程序先后编写出了五版代码,版本一、版本二、版本三、版本四以及版本五,其中,版本五为新版代码、版本一、版本二、版本三、版本四为历史版本代码,版本四为新版本代码的相邻历史版本代码。
当接收到覆盖率获取指令时,可以对版本一、版本二、版本三、版本四的映射后代码覆盖行号,以及版本五的代码覆盖行号进行整合。
其中,标识整合可以包括对标识的合并去重。
其中,覆盖率获取指令可以由***自动触发,比如,可以当覆盖率获取时间达到时,自动触发覆盖率获取指令;该覆盖率获取指令还可以由测试人员或者开发人员触发,比如,测试人员输入覆盖率获取指令。
其中,新版本代码的代码覆盖行标识(如行号)可以通过对新版本代码进行测试得到,比如,测试设备可以基于测试用例对新版本代码进行测试,得到新版本代码的代码覆盖数据,该代码覆盖数据包括:代码覆盖行标识等。此时,服务器可以从测试设备获取新版本代码的代码覆盖数据,从而得到代码覆盖行标识。
在一实施例中,为了提升覆盖率的准确性和测试效率,可以先对历史版本代码内代码覆盖行标识进行整合,即版本内部整合,然后,再进行历史版本代码与新版本代码的代码覆盖行标识进行整合,即跨版本整合。比如,步骤“对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合”可以包括:
针对每个历史版本代码,对历史版本代码的映射后代码覆盖行标识进行整合,得到历史版本代码的整合后代码覆盖行标识;
当所有历史版本代码内的代码覆盖行标识整合完成时,对新版本代码的代码覆盖行标识以及各个历史版本代码的整合后代码覆盖行标识进行整合。
例如,开发人员针对某个应用程序先后编写出了五版代码,版本一、版本二、版本三、版本四以及版本五,可以依次对版本一的代码覆盖行标识进行整合,对版本二的代码覆盖行标识进行整合,对版本三的代码覆盖行标识进行整合,对版本四的代码覆盖行标识进行整合;然后,对版本一、版本二、版本三、版本四的整合后代码覆盖行标识,以及版本五的代码覆盖行标识进行整合。
由于历史版本代码即旧版本代码的测试数据(如代码覆盖数据)可能会持续更新(如测试团队没有基于最新版本执行测试),那么如果按照之前的数据计算得到的覆盖率会不准确。为了提升覆盖率的准确性,本发明实施例可以在对每个历史版本代码的代码覆盖行标识进行整合时考虑历史版本代码新上报的代码覆盖标识。比如,步骤“对历史版本代码的映射后代码覆盖行标识进行整合”,可以包括:
当检测到历史版本代码存在新的代码覆盖行标识时,对新的代码覆盖行标识进行合并处理,得到合并后代码覆盖行标识;
根据修改后的映射关系将合并后代码覆盖行标识映射成新版本代码中的代码覆盖行标识;
根据映射后的代码覆盖行标识更新历史版本代码的代码覆盖行标识。
其中,新的代码覆盖行标识可以由测试设备测试历史版本代码得到,比如,测试设备测试历史版本代码得到新的代码覆盖数据,并上报至服务器。
例如,开发人员针对某个应用程序先后编写出两版代码的情况下,在需要计算覆盖率的情况下,如果检测到版本一存在新的代码覆盖行号时,可以对新的代码覆盖行号进行合并处理(如合并去重,例如对多个代码覆盖行号去重后,合成一个代码覆盖行号组),然后,根据当前修改后的映射关系将合并后代码符合覆盖行号映射成新版本代码中的代码覆盖行号。
在一实施例中,可以基于代码覆盖行标识的时间信息如时间戳来确定是否新的代码覆盖行标识;比如,可以根据时间戳检测历史版本代码新上报的代码覆盖行标识。
在一实施例中,为了避免重复计算,便于计算覆盖率和生成覆盖率报告,可以将各版本代码的代码覆盖行数据如代码覆盖行标识保存在缓存,当下次计算覆盖率时,先作缓存校验,当缓存的数据有效时,执行采用缓存历史版本代码的代码覆盖行数据如代码覆盖行标识;当缓存的数据失效时,比如,当有历史版本代码有新的代码覆盖行标识时,确定缓存的数据失效,此时,可以历史版本代码的新代码覆盖行标识进行整合(如对新代码覆盖行号进行合并处理,然后进行行号映射),从而提升覆盖率和报告生成的效率。
参考图1e,为一种数据整合方式,具体地:
开始整合时,顺序选取下一版本;
判断是否能够从该版本对应的缓存读取代码覆盖数据;若是,对缓存内的数据进行校验;
当缓存内存在数据并数据有效时,从该缓存内直接读取该版本代码的代码覆盖数据,并执行判断是否还有其他版本代码的步骤;
当缓存内不存在数据或缓存内的数据失效时,可以获取待整合数据,其中待整合数据包括选取版本代码的新代码覆盖数据,如该版本代码新上报的代码覆盖数据,可以包括代码覆盖行号等;
对待整合数据进行数据合并处理,得到原始整合结果;如将该版本的新上报的代码覆盖数据合并在一起并去重;
调用源码解析模块对该版本代码进行静态分析,并调用版本合并模块基于当前修改后的映射关系对原始整合结果中代码覆盖行号进行偏移,即将该代码覆盖行号映射成当前最新版本代码的代码覆盖行号,得到版本内整合结果,并将版本内整合结果同步至该缓存中;然后,从该缓存中读取选取版本代码对应的代码覆盖数据;
判断是否还存在其他版本代码,若存在,则表明有多个代码版本,此时,返回顺序选取下一版本的步骤进行下一版本内的数据整合,直到所有版本代码均完成数据整合为止;也即对每个版本都进行上述的版本内数据整合。
在所有版本代码均完成数据整合时,对所有版本代码的整合数据进行整合,比如,将所有版本代码的整合数据合并在一起并去重。
105、根据整合后的代码覆盖行标识获取代码的整体覆盖率。
具体地,根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;获取新版本代码的可执行代码行数量;将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
例如,整合后的代码覆盖行为4、5、7、8、9行,新版本的可执行代码行数量为20行,此时,代码的整体覆盖率为5/20,即25%。
在一实施例中,服务器还可以根据所有版本代码整合后的代码覆盖数据生成覆盖率测试报告并展示,覆盖率测试报告中,可以包括应用程序的整体覆盖率、代码覆盖行等等。
本发明实施例提供的测试方案可以适用于多种覆盖率作为统计指标,比如,分支覆盖率、函数覆盖率、语句覆盖率等等。通常,函数维度统计覆盖率实现成本较低,但精确度不高,对测试团队帮助不大;语句覆盖和分支覆盖同样需要精确匹配不同版本的行号,相较而言,代码分支更能直观体现业务实现原理,便于测试理解代码逻辑,提高分析效率。因此,测试人员可以根据实际需求选择所需的覆盖率作为统计指标。
由上可知,本发明实施例采用获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;根据代码差异信息对映射关系进行修改;根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;根据整合后的代码覆盖行标识即可得到代码的整体覆盖率,便于测试人员可以对代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持。
此外,该测试方案可以保留历史版本的测试成果,并应用在最新版本的测试中,可以有效地避免多版本业务代码的重复测试和分析,提升了测试效率。
进一步地,本发明实施例提供的测试方案能够在项目迭代的全流程中持续监控代码执行和累积整体测试成果。通过在各个阶段实时计算对应若干版本的累积代码覆盖率,准确反映整体测试质量,帮助测试团队感知到高风险的代码变更,及时补充测试用例。尤其对于临近版本发布前的代码改动,能够快速定位变更和影响范围,通过持续整合后的代码覆盖情况,指导测试团队调整测试策略,从而有效避免重复测试和分析工作,提升测试效率。
上述实施例所描述的方法,以下将举例作进一步详细说明。如图2a所示,本实施例的覆盖率测试方法的具体流程可以如下:
201、收集测试设备上报的当前版本代码的代码覆盖数据,该代码覆盖数据包括代码覆盖行标识。
其中,代码覆盖数据可以包括代码覆盖行标识如行号,此外,该代码覆盖数据还可以包括:数据存储路径、时间信息(如时间戳)等信息。
其中,代码覆盖行标识可以包括分支覆盖行标识等,此时,即以分支覆盖率作为统计指标。
其中,数据存储路径为代码覆盖数据存储的路径,该路径可以为数据存储的绝对路径,如“demo_file”等。
例如,在一实施例中,可以获取测试设备上报的当前测试版本代码的覆盖信息文件,该覆盖信息文件包括代码覆盖数据,此时,数据存储路径即为覆盖信息文件的文件存储路径。
在一实施例中,代码覆盖数据还可以包括分支覆盖数据,该分支覆盖数据可以包括:分支代码行标识、跳转行标识、时间信息(如时间戳)、数据存储路径。
通常,在开发某个APP时,开发人员首先编写出该APP的第一版本的源代码,即第一版本代码,将第一版本代码存储在代码库中。测试人员需要对第一版本代码进行测试,测试人员可以通过测试设备向服务器发送下载请求,下载请求中可以包括需要测试的应用程序的名称、版本号等信息。服务器在接收到下载请求之后,可以对第一版本代码进行编译,比如可以将第一版本代码编译成二进制可执行代码,并去除无效代码行和非逻辑代码行,比如去除空行、注释、括号行、声明语句等,得到第一版本代码的有效代码行。比如,第一版本代码的可执行代码共有15行,其中,有效代码行为2、3、4、5、6以及8、9、10、11、12行,共10行。编译之后,服务器可以将第一版本代码的编译结果发送给测试设备,以由测试人员在测试设备上利用所设计的测试用例对编译结果进行测试,得到第一版本代码的代码覆盖数据或者执行数据,服务器从测试设备获取该覆盖数据或执行数据。其中,覆盖数据或者执行数据可以包括代码覆盖行标识等。
之后,开发人员可以根据需求对第一版本代码进行修改,得到该APP的第二版本代码,同样,服务器可以对第二版本代码进行编译,比如可以将第二版本代码编译成二进制可执行代码,并去除无效代码行和非逻辑代码行,比如去除空行、注释、括号行、声明语句等,得到第二版本代码的有效代码行。比如,在上面的例子中,在第一版本代码的第2行之前,新增了5行,得到第二版本代码,则第二版本代码中共有20行,其中,2、3、4、5、6、7、8、9、10、11以及13、14、15、16、17行为有效代码行,共15行。编译之后,服务器可以将第二版本代码的编译结果发送给测试设备,以由测试人员在测试设备上利用所设计的测试用例对编译结果进行测试,得到覆盖数据或者执行数据,服务器从测试设备获取第二版本代码的覆盖数据或执行数据。其中,覆盖数据或者执行数据可以包括代码覆盖行标识。
202、对代码覆盖数据进行格式化处理,并对格式化后的代码覆盖数据进行归类存储。
为了便于后续对覆盖数据的处理和应用,提升覆盖率测试效率,可以对覆盖数据进行格式处理,简化覆盖数据。
其中,代码覆盖数据的格式可以有多种,例如,在测试设备包括覆盖信息文件时,行覆盖数据格式,可以包括:
时间戳:{文件绝对路径:[已覆盖行号]}
例:20170101000000:{“demo_file”:[2,3,5,8]}
分支覆盖数据格式,可以包括:
时间戳:{文件绝对路径:{分支行号:{分支行号标记*:{跳转行号标记*A:1|0,跳转行号标记*B:0|1}}}}
例:
20170101000000:{“demo_file”:{"3":{"op5":{"4_op6":1,"8_op12":0}}}}。
此外,在一实施例中,为了便于后续提取代码覆盖数据,还可以按照代码版本、数据存储路径、时间信息等将代码覆盖数据归类存储。例如,按照项目、开发流、代码版本、文件路径、时间段等归类存储落地,参考图1c。
203、当检测到新版本代码时,将新版本代码与之前的相邻历史版本代码进行对比分析,得到新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
其中,新版本代码可以为应用程序的当前最新版本代码。其中,相邻历史版本代码为距离当前最新版本最近的历史版本的应用程序代码。比如,为当前版本代码的上一版本代码。
比如,开发人员针对某个应用程序先后编写出了三版代码,版本一、版本二和版本三,其中,版本二为修改版本一得到的,版本三为修改版本二得到的,则版本三是当前版本代码即最新版本,相邻历史版本代码可以是版本二。
在一实施例中,可以通过预设比较工具实现新版本代码与相邻历史版本代码之间的对比,比如,可以采用diff工具等。
其中,代码差异信息可以为当版本代码与相邻历史版本代码之间的代码行差异信息,可以包括变更代码行标识(如变更代码行的行号)以及变更类型等等。其中,变更类型包括:删除、新增、替换等等。
在一实施例中,为了便于计算覆盖率,提升覆盖率测试速度,还可以将代码差异信息转化成标签格式表示,其中,代码差异标签可以表示代码行之间的差异信息,比如,变更代码行标识和变更类型等等。例如:代码差异标签可以包括用于表示代码变更类型的变更类型标识、以及用于标识变更代码行的变更代码行标识;如下:
[insert,a,b]:表示在当前版本代码中的第[a,b]行都是新增行;
[delete,c,d]:表示在历史相邻版本代码中的第[c,d]行都是删除行;
[replace,a,b,c,d]:表示历史相邻版本代码中第[a,b]行被当前版本代码的第[c,d]行替换。
本发明实施例以标签格式记录版本代码之间的差异信息,可以节省存储空间,并便于后续快速调用,提升覆盖率测试速度和效率。
其中,当前版本代码与相邻历史版本代码之间的映射关系可以为当前版本代码中代码行与相邻历史版本代码行之间的对应关系;可以通过对当前版本代码与相邻历史版本代码进行对比分析得到。其中,映射关系的表现形式可以由多种,比如可以是表格形式等等。
例如,相邻历史版本代码中第1、2、3、4行分别对应当前版本代码中第1、2、3、4行、相邻历史版本代码中第5行对应当前版本代码中的第5、6、7行、相邻历史版本代码中第6行对应当前版本代码中第8行等等。
204、根据代码差异信息对映射关系进行修改。
比如,可以根据代码差异信息对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行修改。
比如,在一实施例中,代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;此时,可以根据变更类型和变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
譬如,当将代码差异信息以标签的格式表示时,修改映射关系可以包括:
对于insert标签,分析新版本代码文件,并消除新增行所在代码块的映射关系;
对于delete标签,分析旧版本代码文件,并消除删除行所在代码块的映射关系;
对于replace标签,分析新旧版本代码文件,并标记替换行所在代码块的映射关系。
本发明实施,可以对覆盖过而后产生变更的代码,做特殊标记可以便于测试团队回归用例。
比如,可以采用图1d所示的方式获取代码差异信息以及修改映射关系。
205、根据修改后的映射关系将历史版本代码的代码覆盖数据中代码覆盖行标识,映射成新版本代码中的代码覆盖行标识。
其中,历史版本代码为新版本即当前最新版本之前的版本代码,如上一版本代码等。
例如,开发人员首先针对某个应用程序编写出第一版本代码,并保存在服务器的代码库中,需要测试时,服务器将第一版本代码编译后发送给测试设备,测试设备对第一版本代码进行测试,并上报第一版本代码的代码覆盖数据,该代码覆盖数据包括代码覆盖行号。
之后,开发人员在第一版本代码的基础上修改了代码,得到第二版本代码,当检测到新版本代码出现时通过执行上述步骤,根据修改后的映射关系,将第一版本代码的代码覆盖行号映射成第二版本代码中的代码覆盖行号。
例如,第一版本代码的代码覆盖行为2、3、4行,第二版本代码为在第一版本代码的第2行之前新增了5行代码得到的,则第一版本代码的代码覆盖行2、3、4映射至第二版本代码,得到的第一版本代码的代码覆盖行为7、8、9行。
206、当接收到覆盖率获取指令时,对所有版本代码的代码覆盖数据进行整合,得到整合后代码覆盖数据。
通过上述步骤可以将各版本代码的代码覆盖数据中的代码覆盖行标识映射至当前最新版本,并按照代码版本维度各自存储。然后,本发明实施例对所有版本代码的代码覆盖数据进行整合,比如,合并去重。
比如,可以对所有版本代码的代码覆盖数据中的代码覆盖行标识进行整合,如对代码覆盖行标识进行合并去重。
其中,覆盖率获取指令可以由***自动触发,比如,可以当覆盖率获取时间达到时,自动触发覆盖率获取指令;该覆盖率获取指令还可以由测试人员或者开发人员触发,比如,测试人员输入覆盖率获取指令。
在一实施例中,为了提升覆盖率的准确性和测试效率,可以先对各版本代码进行版本内的代码覆盖数据进行整合(如对代码覆盖行标识进行合并去重),即版本内部数据整合;然后,将所有版本代码的整合后代码覆盖数据进行整合,即跨版本整合,如对所有版本代码的整合后数据中代码覆盖行标识进行整合。
在一实施例中,考虑到历史版本代码即旧版本代码的测试数据(如代码覆盖数据)可能会持续更新(如测试团队没有基于最新版本执行测试),那么如果按照之前的数据计算得到的覆盖率会不准确。为了提升覆盖率的准确性,版本内部数据整合可以包括:
当检测到版本代码存在新的代码覆盖数据时,对新的代码覆盖数据进行合并处理,得到合并后代码覆盖数据;比如,对新的代码覆盖数据中的代码覆盖行标识进行合并去重处理;
根据修改后的映射关系将合并后代码覆盖数据中的代码覆盖行标识映射成新版本代码中的代码覆盖行标识。
通过上述步骤可以针对每个版本代码进行版本内数据整合,得到每个版本代码的版本内整合后数据,该版本内整合后数据可以包括整合后代码覆盖行标识等等。
在所有版本代码的版本内数据整合完成时,对所有版本代码的版本内部整合结果进行合并处理。如,对所有版本代码的版本内部整合结果中的代码覆盖行标识进行合并处理。
其中,新的代码覆盖数据可以由测试设备测试该版本代码得到,比如,测试设备测试该版本代码得到新的代码覆盖数据,并上报至服务器。
例如,开发人员针对某个应用程序先后编写出两版代码的情况下,在需要计算覆盖率的情况下,如果检测到版本一存在新的代码覆盖行号时,可以对新的代码覆盖行号进行合并处理(如合并去重,例如对多个代码覆盖行号去重后,合成一个代码覆盖行号组),然后,根据当前修改后的映射关系将合并后代码符合覆盖行号映射成新版本代码中的代码覆盖行号。
在一实施例中,可以基于代码覆盖数据的时间信息如时间戳来确定是否新的代码覆盖行标识;比如,可以根据时间戳检测历史版本代码新上报的代码覆盖数据。
在一实施例中,为了避免重复计算,便于计算覆盖率和生成覆盖率报告,可以将各版本代码的代码覆盖行数据如代码覆盖行标识保存在缓存,当下次计算覆盖率时,先作缓存校验,当缓存的数据有效时,执行采用缓存历史版本代码的代码覆盖行数据如代码覆盖行标识;当缓存的数据失效时,比如,当有历史版本代码有新的代码覆盖行标识时,确定缓存的数据失效,此时,可以历史版本代码的新代码覆盖行标识进行整合(如对新代码覆盖行号进行合并处理,然后进行行号映射),从而提升覆盖率和报告生成的效率。例如,在需要计算覆盖率时,可以通过图1e所示的数据整合方式进行数据整合。
207、根据整合后代码覆盖数据中代码覆盖标识获取代码的整体覆盖率。
具体地,根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;获取新版本代码的可执行代码行数量;将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
例如,整合后的代码覆盖行为4、5、7、8、9行,新版本的可执行代码行数量为20行,此时,代码的整体覆盖率为5/20,即25%。
在一实施例中,还可以跨版本整合后代码覆盖数据生成相应覆盖率测试报告并展示,比如,根据代码覆盖数据对新版本内的代码行进行渲染,得到最终覆盖率报告,该报告还可以包括整体覆盖率。
本发明实施例提供的测试方案可以适用于多种覆盖率作为统计指标,比如,分支覆盖率、函数覆盖率、语句覆盖率等等。通常,函数维度统计覆盖率实现成本较低,但精确度不高,对测试团队帮助不大;语句覆盖和分支覆盖同样需要精确匹配不同版本的行号,相较而言,代码分支更能直观体现业务实现原理,便于测试理解代码逻辑,提高分析效率。因此,测试人员可以根据实际需求选择所需的覆盖率作为统计指标。
其中,不同的覆盖率对应的上报的代码覆盖数据不相同,比如,计算分支覆盖率时测试设备上报分支覆盖数据。
由上可知,本发明实施例提供的测试方案可以测试代码的整体覆盖率,便于测试人员可以对代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持。
此外,该测试方案可以保留历史版本的测试成果,并应用在最新版本的测试中,可以有效地避免多版本业务代码的重复测试和分析,提升了测试效率。
进一步地,本发明实施例提供的测试方案能够在项目迭代的全流程中持续监控代码执行和累积整体测试成果,如参考图2b,为某个应用的全迭代流程中已覆盖代码行持续累积的示意图。通过在各个阶段实时计算对应若干版本的累积代码覆盖率,准确反映整体测试质量,帮助测试团队感知到高风险的代码变更,及时补充测试用例。尤其对于临近版本发布前的代码改动,能够快速定位变更和影响范围,通过持续整合后的代码覆盖情况,指导测试团队调整测试策略,从而有效避免重复测试和分析工作,提升测试效率。
为了更好地实施以上方法,本发明实施例还提供一种覆盖率测试装置,如图3a所示,该覆盖率测试装置包括:差异获取单元301修改单元302、映射单元303、整合单元304以及覆盖率获取单元305,如下:
差异获取单元301,用于获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
修改单元302,用于根据所述代码差异信息对所述映射关系进行修改;
映射单元303,用于根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
整合单元304,用于当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
覆盖率获取单元305,用于根据整合后的代码覆盖行标识获取代码的整体覆盖率。
在一些实施例中,所述代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;
所述修改单元303,用于根据所述变更类型和所述变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
在一些实施例中,参考图3b,所述整合单元304,可以包括:
版本内整合子单元3041,用于针对每个历史版本代码,对历史版本代码的映射后代码覆盖行标识进行整合,得到历史版本代码的整合后代码覆盖行标识;
跨版本整合子单元3042,用于当所有历史版本代码内的代码覆盖行标识整合完成时,对新版本代码的代码覆盖行标识以及各个历史版本代码的整合后代码覆盖行标识进行整合。
在一些实施例中,所述版本内整合子单元3041,可以用于:
当检测到历史版本存在新的代码覆盖行标识时,对新的代码覆盖行标识进行合并处理,得到合并后代码覆盖行标识;
根据修改后的映射关系将所述合并后代码覆盖行标识映射成新版本代码中的代码覆盖行标识;
根据映射后的代码覆盖行标识更新所述历史版本代码的代码覆盖行标识。
在一些实施例中,所述覆盖率获取单元305,用于:
根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;
获取新版本代码的可执行代码行数量;
将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
在一实施例中,差异获取单元301,可以用于当检测到新版本代码时,对新版本代码与相邻历史版本代码进行对比,得到新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
在一些实施例中,参考图3c,还包括:覆盖数据获取单元306;
覆盖数据获取单元306,用于:
获取测试设备上报的当前测试版本代码的代码覆盖数据,所述代码覆盖数据包括代码覆盖行标识、数据存储路径、以及时间信息;
对所述代码覆盖数据进行数据格式化处理,得到格式化后的代码覆盖数据;
根据数据存储路径、测试代码所属的版本以及时间信息,对格式化后的代码覆盖数据进行存储;
所述映射单元304,用于根据修改后的映射关系将历史版本代码的代码覆盖数据中代码覆盖行标识,映射成当前版本代码中的代码覆盖行标识。
需要说明的是,上述实施例提供的覆盖率测试装置在进行覆盖率测试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的覆盖率测试装置与覆盖率测试方法属于同一构思,其具体实现过程详见方法实施例,此处不再赘述。
本实施例提供的覆盖率测试装置可以通过差异获取单元301获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;由修改单元302根据所述代码差异信息对所述映射关系进行修改;由映射单元303根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;由整合单元304当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;由覆盖率获取单元305根据整合后的代码覆盖行标识获取代码的整体覆盖率。通过该方案可以测试代码的整体覆盖率,便于测试人员可以对代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持,并且还可以有效地避免多版本业务代码的重复测试和分析,提升了测试效率。
本发明实施例还提供一种服务器,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、射频(Radio Frequency,RF)电路403、电源405、输入单元405、以及显示单元406等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
RF电路403可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器401处理;另外,将涉及上行的数据发送给基站。通常,RF电路403包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路403还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
服务器还包括给各个部件供电的电源404(比如电池),优选的,电源404可以通过电源管理***与处理器401逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源404还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元405,该输入单元405可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元405可包括触敏表面以及其他输入设备。
该服务器还可包括显示单元406,该显示单元406可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
尽管未示出,服务器还可以包括蓝牙模块等其他模块,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
根据所述代码差异信息对所述映射关系进行修改;
根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
根据整合后的代码覆盖行标识获取代码的整体覆盖率。
一实施例中,所述代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;
在根据所述代码差异信息对所述映射关系进行修改时,处理器401具体用于执行以下步骤:
根据所述变更类型和所述变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
一实施例中,在对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合时,处理器401具体用于执行以下步骤:
针对每个历史版本代码,对历史版本代码的映射后代码覆盖行标识进行整合,得到历史版本代码的整合后代码覆盖行标识;
当所有历史版本代码内的代码覆盖行标识整合完成时,对新版本代码的代码覆盖行标识以及各个历史版本代码的整合后代码覆盖行标识进行整合。
一实施例中,在对所述历史版本代码的映射后代码覆盖行标识进行整合时,处理器401具体用于执行以下步骤:
当检测到历史版本存在新的代码覆盖行标识时,对新的代码覆盖行标识进行合并处理,得到合并后代码覆盖行标识;
根据修改后的映射关系将所述合并后代码覆盖行标识映射成新版本代码中的代码覆盖行标识;
根据映射后的代码覆盖行标识更新所述历史版本代码的代码覆盖行标识。
一实施例中,在根据整合后的代码覆盖行标识获取代码的整体覆盖率时,处理器401具体用于执行以下步骤:
根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;
获取新版本代码的可执行代码行数量;
将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
一实施例中,在获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系时,处理器401具体用于执行以下步骤:
当检测到新版本代码时,对新版本代码与相邻历史版本代码进行对比,得到新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
本实施例的服务器,获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;根据所述代码差异信息对所述映射关系进行修改;根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;根据整合后的代码覆盖行标识即可得到代码的整体覆盖率。通过该方案可以测试代码的整体覆盖率,便于测试人员可以对代码的整体覆盖率信息进行分析,准确地把握代码迭代过程中的整体测试进度和质量,可以为代码的版本迭代提供强有力的支持,并且还可以有效地避免多版本业务代码的重复测试和分析,提升了测试效率。
本申请实施例还提供一种存储设备,所述存储设备存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述任一实施例中的会话信息处理方法,比如:获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;根据所述代码差异信息对所述映射关系进行修改;根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;根据整合后的代码覆盖行标识获取代码的整体覆盖率。
在本申请实施例中,存储设备可以是磁碟、光盘、只读存储器(Read Only Memory,ROM,)、或者随机存取记忆体(Random Access Memory,RAM)等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对本申请实施例的覆盖率测试方法而言,本领域普通决策人员可以理解实现本申请实施例的覆盖率测试方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在电子设备的存储器中,并被该电子设备内的至少一个处理器执行,在执行过程中可包括如覆盖率测试方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器、随机存取记忆体等。
对本申请实施例的覆盖率测试装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
以上对本申请实施例所提供的一种覆盖率测试方法、终端及存储设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种覆盖率测试方法,其特征在于,包括:
获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
根据所述代码差异信息对所述映射关系进行修改;
根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
根据整合后的代码覆盖行标识获取代码的整体覆盖率。
2.如权利要求1所述的覆盖率测试方法,其特征在于,所述代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;
根据所述代码差异信息对所述映射关系进行修改,包括:
根据所述变更类型和所述变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
3.如权利要求1所述的覆盖率测试方法,其特征在于,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合,包括:
针对每个历史版本代码,对历史版本代码的映射后代码覆盖行标识进行整合,得到历史版本代码的整合后代码覆盖行标识;
当所有历史版本代码内的代码覆盖行标识整合完成时,对新版本代码的代码覆盖行标识以及各个历史版本代码的整合后代码覆盖行标识进行整合。
4.如权利要求3所述的覆盖率测试方法,其特征在于,对所述历史版本代码的映射后代码覆盖行标识进行整合,包括:
当检测到历史版本存在新的代码覆盖行标识时,对新的代码覆盖行标识进行合并处理,得到合并后代码覆盖行标识;
根据修改后的映射关系将所述合并后代码覆盖行标识映射成新版本代码中的代码覆盖行标识;
根据映射后的代码覆盖行标识更新所述历史版本代码的代码覆盖行标识。
5.如权利要求1所述的覆盖率测试方法,其特征在于,根据整合后的代码覆盖行标识获取代码的整体覆盖率,包括:
根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;
获取新版本代码的可执行代码行数量;
将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
6.如权利要求1所述的覆盖率测试方法,其特征在于,获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系,包括:
当检测到新版本代码时,对新版本代码与相邻历史版本代码进行对比,得到新版本代码与相邻历史版本代码之间的代码差异信息和映射关系。
7.如权利要求1-6任一项所述的覆盖率测试方法,其特征在于,还包括:
获取测试设备上报的当前测试版本代码的代码覆盖数据,所述代码覆盖数据包括代码覆盖行标识、数据存储路径、以及时间信息;
对所述代码覆盖数据进行数据格式化处理,得到格式化后的代码覆盖数据;
根据数据存储路径、测试代码所属的版本以及时间信息,对格式化后的代码覆盖数据进行存储;
根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成当前版本代码中的代码覆盖行标识,包括:
根据修改后的映射关系将历史版本代码的代码覆盖数据中代码覆盖行标识,映射成当前版本代码中的代码覆盖行标识。
8.一种覆盖率测试装置,其特征在于,包括:
差异获取单元,用于获取新版本代码与相邻历史版本代码之间的代码差异信息和映射关系;
修改单元,用于根据所述代码差异信息对所述映射关系进行修改;
映射单元,用于根据修改后的映射关系将历史版本代码的代码覆盖行标识,映射成新版本代码中的代码覆盖行标识,得到历史版本代码的映射后代码覆盖行标识;
整合单元,用于当接收到覆盖率获取指令时,对新版本代码的代码覆盖行标识以及历史版本代码的映射后代码覆盖行标识进行整合;
覆盖率获取单元,用于根据整合后的代码覆盖行标识获取代码的整体覆盖率。
9.如权利要求8所述的覆盖率测试装置,其特征在于,所述代码差异信息包括新版本代码与相邻历史版本代码之间的变更代码行标识以及变更类型;
所述修改单元,用于根据所述变更类型和所述变更代码行标识,对新版本代码和/或相邻历史版本代码中变更代码行所在代码块的映射关系进行相应的修改。
10.如权利要求8所述的覆盖率测试装置,其特征在于,所述整合单元,包括:
版本内整合子单元,用于针对每个历史版本代码,对历史版本代码的映射后代码覆盖行标识进行整合,得到历史版本代码的整合后代码覆盖行标识;
跨版本整合子单元,用于当所有历史版本代码内的代码覆盖行标识整合完成时,对新版本代码的代码覆盖行标识以及各个历史版本代码的整合后代码覆盖行标识进行整合。
11.如权利要求10所述的覆盖率测试装置,其特征在于,所述版本内整合子单元,用于:
当检测到历史版本存在新的代码覆盖行标识时,对新的代码覆盖行标识进行合并处理,得到合并后代码覆盖行标识;
根据修改后的映射关系将所述合并后代码覆盖行标识映射成新版本代码中的代码覆盖行标识;
根据映射后的代码覆盖行标识更新所述历史版本代码的代码覆盖行标识。
12.如权利要求8所述的覆盖率测试装置,其特征在于,所述覆盖率获取单元,用于:
根据整合后的代码覆盖行标识获取相应的代码覆盖行数量;
获取新版本代码的可执行代码行数量;
将代码覆盖行数量与可执行代码数量的数量比值作为代码的整体覆盖率。
13.如权利要求8所述的覆盖率测试装置,其特征在于,还包括:
覆盖数据获取单元,用于:
获取测试设备上报的当前测试版本代码的代码覆盖数据,所述代码覆盖数据包括代码覆盖行标识、数据存储路径、以及时间信息;
对所述代码覆盖数据进行数据格式化处理,得到格式化后的代码覆盖数据;
根据数据存储路径、测试代码所属的版本以及时间信息,对格式化后的代码覆盖数据进行存储;
所述映射单元,用于根据修改后的映射关系将历史版本代码的代码覆盖数据中代码覆盖行标识,映射成当前版本代码中的代码覆盖行标识。
14.一种存储设备,其特征在于,所述存储设备用于储存多条指令,所述指令适于由处理器加载并执行如权利要求1至7任一项所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374770.0A CN110209568B (zh) | 2018-04-24 | 2018-04-24 | 覆盖率测试方法、装置及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374770.0A CN110209568B (zh) | 2018-04-24 | 2018-04-24 | 覆盖率测试方法、装置及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209568A true CN110209568A (zh) | 2019-09-06 |
CN110209568B CN110209568B (zh) | 2022-07-01 |
Family
ID=67778759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810374770.0A Active CN110209568B (zh) | 2018-04-24 | 2018-04-24 | 覆盖率测试方法、装置及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209568B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716739A (zh) * | 2019-09-19 | 2020-01-21 | 平安科技(深圳)有限公司 | 一种代码变更信息统计方法、***和可读存储介质 |
CN111078549A (zh) * | 2019-12-06 | 2020-04-28 | 广州品唯软件有限公司 | 代码覆盖率的处理方法、装置和计算机设备 |
CN111124894A (zh) * | 2019-12-06 | 2020-05-08 | 广州品唯软件有限公司 | 代码覆盖率的处理方法、装置和计算机设备 |
CN111124910A (zh) * | 2019-12-20 | 2020-05-08 | 北京达佳互联信息技术有限公司 | 确定测试代码执行数据的方法、装置、设备及存储介质 |
CN111290943A (zh) * | 2020-01-13 | 2020-06-16 | 北京三快在线科技有限公司 | 代码覆盖率处理方法、装置、服务器及存储介质 |
CN111444087A (zh) * | 2020-03-03 | 2020-07-24 | 北京齐尔布莱特科技有限公司 | 一种覆盖率数据处理方法、装置、计算设备及可读存储介质 |
CN111930619A (zh) * | 2020-08-06 | 2020-11-13 | 杭州有赞科技有限公司 | 一种实时覆盖率统计方法、计算机设备及可读存储介质 |
CN112363945A (zh) * | 2020-11-23 | 2021-02-12 | 北京三快在线科技有限公司 | 一种版本测试的方法及装置 |
CN112463620A (zh) * | 2020-12-03 | 2021-03-09 | 广州品唯软件有限公司 | 安卓软件集成测试中的覆盖率测试方法、装置 |
CN112597041A (zh) * | 2020-12-28 | 2021-04-02 | 上海品顺信息科技有限公司 | 代码覆盖率的跨分支合并方法、***、设备及存储介质 |
CN112612516A (zh) * | 2020-12-30 | 2021-04-06 | 瑞庭网络技术(上海)有限公司 | 一种代码处理方法及装置 |
CN112667515A (zh) * | 2021-01-06 | 2021-04-16 | 杭州当虹科技股份有限公司 | 一种实现针对逻辑语句代码覆盖率的测试方法 |
CN113806227A (zh) * | 2021-09-26 | 2021-12-17 | 五八同城信息技术有限公司 | 一种信息处理方法、装置、电子设备及存储介质 |
CN116610577A (zh) * | 2023-05-25 | 2023-08-18 | 成都融见软件科技有限公司 | 一种覆盖率获取方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
CN106155909A (zh) * | 2016-07-26 | 2016-11-23 | 网易(杭州)网络有限公司 | 代码覆盖率测试结果的处理方法及装置 |
US20170060733A1 (en) * | 2015-08-31 | 2017-03-02 | International Business Machines Corporation | Determining code coverage of an application by test(s) |
CN107480066A (zh) * | 2017-08-18 | 2017-12-15 | 网易(杭州)网络有限公司 | 代码覆盖率统计方法、装置、存储介质、处理器和终端 |
-
2018
- 2018-04-24 CN CN201810374770.0A patent/CN110209568B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988926A (zh) * | 2015-02-13 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
US20170060733A1 (en) * | 2015-08-31 | 2017-03-02 | International Business Machines Corporation | Determining code coverage of an application by test(s) |
CN106155909A (zh) * | 2016-07-26 | 2016-11-23 | 网易(杭州)网络有限公司 | 代码覆盖率测试结果的处理方法及装置 |
CN107480066A (zh) * | 2017-08-18 | 2017-12-15 | 网易(杭州)网络有限公司 | 代码覆盖率统计方法、装置、存储介质、处理器和终端 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716739A (zh) * | 2019-09-19 | 2020-01-21 | 平安科技(深圳)有限公司 | 一种代码变更信息统计方法、***和可读存储介质 |
CN110716739B (zh) * | 2019-09-19 | 2024-06-25 | 平安科技(深圳)有限公司 | 一种代码变更信息统计方法、***和可读存储介质 |
CN111078549A (zh) * | 2019-12-06 | 2020-04-28 | 广州品唯软件有限公司 | 代码覆盖率的处理方法、装置和计算机设备 |
CN111124894A (zh) * | 2019-12-06 | 2020-05-08 | 广州品唯软件有限公司 | 代码覆盖率的处理方法、装置和计算机设备 |
CN111078549B (zh) * | 2019-12-06 | 2023-03-17 | 广州品唯软件有限公司 | 代码覆盖率的处理方法、装置和计算机设备 |
CN111124910A (zh) * | 2019-12-20 | 2020-05-08 | 北京达佳互联信息技术有限公司 | 确定测试代码执行数据的方法、装置、设备及存储介质 |
CN111290943A (zh) * | 2020-01-13 | 2020-06-16 | 北京三快在线科技有限公司 | 代码覆盖率处理方法、装置、服务器及存储介质 |
CN111444087A (zh) * | 2020-03-03 | 2020-07-24 | 北京齐尔布莱特科技有限公司 | 一种覆盖率数据处理方法、装置、计算设备及可读存储介质 |
CN111444087B (zh) * | 2020-03-03 | 2023-12-01 | 北京齐尔布莱特科技有限公司 | 一种覆盖率数据处理方法、装置、计算设备及可读存储介质 |
CN111930619A (zh) * | 2020-08-06 | 2020-11-13 | 杭州有赞科技有限公司 | 一种实时覆盖率统计方法、计算机设备及可读存储介质 |
CN111930619B (zh) * | 2020-08-06 | 2024-04-16 | 杭州有赞科技有限公司 | 一种实时覆盖率统计方法、计算机设备及可读存储介质 |
CN112363945A (zh) * | 2020-11-23 | 2021-02-12 | 北京三快在线科技有限公司 | 一种版本测试的方法及装置 |
CN112463620A (zh) * | 2020-12-03 | 2021-03-09 | 广州品唯软件有限公司 | 安卓软件集成测试中的覆盖率测试方法、装置 |
CN112597041A (zh) * | 2020-12-28 | 2021-04-02 | 上海品顺信息科技有限公司 | 代码覆盖率的跨分支合并方法、***、设备及存储介质 |
CN112597041B (zh) * | 2020-12-28 | 2023-01-20 | 上海品顺信息科技有限公司 | 代码覆盖率的跨分支合并方法、***、设备及存储介质 |
CN112612516A (zh) * | 2020-12-30 | 2021-04-06 | 瑞庭网络技术(上海)有限公司 | 一种代码处理方法及装置 |
CN112612516B (zh) * | 2020-12-30 | 2024-05-03 | 瑞庭网络技术(上海)有限公司 | 一种代码处理方法及装置 |
CN112667515A (zh) * | 2021-01-06 | 2021-04-16 | 杭州当虹科技股份有限公司 | 一种实现针对逻辑语句代码覆盖率的测试方法 |
CN113806227B (zh) * | 2021-09-26 | 2023-12-12 | 五八同城信息技术有限公司 | 一种信息处理方法、装置、电子设备及存储介质 |
CN113806227A (zh) * | 2021-09-26 | 2021-12-17 | 五八同城信息技术有限公司 | 一种信息处理方法、装置、电子设备及存储介质 |
CN116610577A (zh) * | 2023-05-25 | 2023-08-18 | 成都融见软件科技有限公司 | 一种覆盖率获取方法 |
CN116610577B (zh) * | 2023-05-25 | 2024-01-26 | 成都融见软件科技有限公司 | 一种覆盖率获取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110209568B (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209568A (zh) | 覆盖率测试方法、装置及存储设备 | |
CN108519945A (zh) | 覆盖率测试方法、装置及存储设备 | |
US8151248B1 (en) | Method and system for software defect management | |
US20140331203A1 (en) | Analysis of source code changes | |
CN110059009A (zh) | 用于测试代码文件的方法和装置 | |
CN106649100A (zh) | 一种自动化测试方法及*** | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
US20110072417A1 (en) | Directed testing for property violations | |
GB2454263A (en) | Generating debug information from low level program code | |
CN105912458A (zh) | 一种用于动态检测c/c++内存泄露的方法及*** | |
CN102200911A (zh) | 变量闭包 | |
CN114546868A (zh) | 代码覆盖率测试方法、装置和电子设备 | |
CN108563694A (zh) | 对逻辑删除的sql执行方法、装置、计算机设备和存储介质 | |
CN103186463B (zh) | 确定软件的测试范围的方法和*** | |
Nam et al. | Marble: Mining for boilerplate code to identify API usability problems | |
CN107729247A (zh) | 基于jenkins检查源程序代码错误的方法和装置 | |
CN116301745A (zh) | 基于编程框架领域知识的微服务划分方法及装置 | |
CN112395199B (zh) | 基于云计算的分布式软件实例测试方法及软件开发平台 | |
CN108959454B (zh) | 一种提示子句指定方法、装置、设备及存储介质 | |
CN111190814A (zh) | 软件测试用例的生成方法、装置、存储介质及终端 | |
CN109542444A (zh) | Java应用的监控方法、装置、服务器和存储介质 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测***、存储设备 | |
CN110502443A (zh) | 冗余代码检测方法、检测模块、电子设备及计算机存储介质 | |
CN104461864A (zh) | 一种基于Eclipse插件的Java源代码缺陷检测方法及其*** | |
Pan et al. | Class structure refactoring of object-oriented softwares using community detection in dependency networks |
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 |