CN102722436B - 一种增量覆盖信息的统计方法和装置 - Google Patents
一种增量覆盖信息的统计方法和装置 Download PDFInfo
- Publication number
- CN102722436B CN102722436B CN201210172285.8A CN201210172285A CN102722436B CN 102722436 B CN102722436 B CN 102722436B CN 201210172285 A CN201210172285 A CN 201210172285A CN 102722436 B CN102722436 B CN 102722436B
- Authority
- CN
- China
- Prior art keywords
- modified
- file
- coverage
- newly added
- function
- 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
- 238000007619 statistical method Methods 0.000 title claims abstract description 11
- 230000006870 function Effects 0.000 claims abstract description 252
- 238000012360 testing method Methods 0.000 claims abstract description 80
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000001914 filtration Methods 0.000 claims description 17
- 238000013461 design Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013522 software testing Methods 0.000 description 3
- 230000006854 communication Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种增量覆盖信息的统计方法和装置,所述方法包括:S1、获取待测版本代码和基线版本代码;S2、对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息;以及,将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息;S3、利用所述新增或修改的函数信息,从所述所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。相较于现有技术,本发明能够自动地统计提测版本的增量信息,使得测试人员能够快速地获取增量覆盖信息,并根据增量覆盖信息有针对性的设计测试用例,提高测试效率和准确率,减少漏测。
Description
【技术领域】
本发明涉及计算机软件测试技术领域,特别涉及一种增量覆盖信息的统计方法和装置。
【背景技术】
软件测试是保证软件质量的重要手段,软件必须通过测试才能确保其在应用环境中工作正常。在软件的项目开发过程中,开发人员会有针对性地做部分单元测试(即单测),以检验软件单元有无错误,是否与设计吻合,而后将完成的软件提交给测试人员进行测试。
为提高开发人员提测代码的质量,测试人员会制定一些测试准入的标准,比如,要求提测代码新增函数的行覆盖率必须达到60%以上等。然而,通常情况下开发人员并不知道提测软件的质量是否达到要求,比如不清楚单元测试的覆盖率是否达到测试准入的要求,就可能导致提测软件不能达到准入要求。测试人员在每次测试前,都必须手动统计新增和修改函数的增量覆盖信息,这必然会影响测试人员的工作效率。而且由于测试人员手动统计的覆盖信息不够准确,还容易导致误判。
在提测时,开发人员会就提测软件的内容和测试人员进行测试重点沟通,告知测试人员新增和修改了哪些功能。然而,开发人员通常不会说明他们已经测试了哪些功能,测试人员往往会设计出一些开发人员已经测试过的重复用例,导致不必要的重复工作。另外,沟通过程中可能出现开发人员遗漏了对部分新增功能点的说明,可能会导致漏测。
【发明内容】
有鉴于此,本发明提供了一种增量覆盖信息的统计方法和装置,能够自动地获取增量覆盖信息,使得测试人员能够根据增量覆盖信息有针对性的设计测试用例,提高测试效率和准确率,减少漏测。
具体技术方案如下:
一种增量覆盖信息的统计方法,该方法包括以下步骤:
S1、获取待测版本代码和基线版本代码;
S2、对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息;以及,将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息;
S3、利用所述新增或修改的函数信息,从所述所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
根据本发明一优选实施例,在所述步骤S1之前,该方法还包括:
生成配置文件,其中配置文件的内容至少包括:待测版本号、基线版本号、待测版本代码的路径和基线版本代码的路径;
所述步骤S1具体包括:
利用所述配置文件中待测版本号和待测版本代码的路径,获取待测版本代码;
利用所述配置文件中基线版本号和基线版本代码的路径,获取基线版本代码。
根据本发明一优选实施例,所述对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息,具体包括:
对所述待测版本代码运行所有的单测用例,生成覆盖统计文件;
从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息;
根据函数在文件中的行号,统计被覆盖到的行号和行数。
根据本发明一优选实施例,在获取所述待测版本代码中所有函数的覆盖信息之前,还包括:
将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉。
根据本发明一优选实施例,所述将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息,具体包括:
从所述待测版本代码中的日志文件,获取新增或修改的文件及文件名;
获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数;
获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
根据本发明一优选实施例,所述新增或修改的函数信息包括:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
根据本发明一优选实施例,所述步骤S3具体包括:
将新增文件中所有行的行号或修改文件中修改的行号,与所述被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数;
根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
根据本发明一优选实施例,所述步骤S3还包括:
利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率;
利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
根据本发明一优选实施例,所述增量覆盖信息包括以下所列中的一种或几种结合:
新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
根据本发明一优选实施例,该方法还包括:
判断统计得到的增量覆盖信息是否满足预设要求;
对于增量覆盖信息不满足预设要求的待测版本代码,发出报警邮件给相应的开发人员或测试人员。
一种增量覆盖信息的统计装置,该装置包括:
版本获取模块,用于获取待测版本代码和基线版本代码;
全覆盖获取模块,用于对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息;
增量获取模块,用于将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息;
增量覆盖统计模块,用于利用所述增量获取模块获取的新增或修改的函数信息,从所述全覆盖获取模块获取的所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
根据本发明一优选实施例,在所述步骤S1之前,该方法装置还包括:
配置模块,用于生成配置文件,其中配置文件的内容至少包括:待测版本号、基线版本号、待测版本代码的路径和基线版本代码的路径;
所述版本获取模块利用所述配置文件中待测版本号和待测版本代码的路径,获取待测版本代码;
所述版本获取模块利用所述配置文件中基线版本号和基线版本代码的路径,获取基线版本代码。
根据本发明一优选实施例,所述全覆盖获取模块,具体配置为:
对所述待测版本代码运行所有的单测用例,生成覆盖统计文件;
从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息;
根据函数在文件中的行号,统计被覆盖到的行号和行数。
根据本发明一优选实施例,该装置还包括:
关键字过滤模块,用于将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉;
所述全覆盖获取模块仅对过滤后剩余的函数获取覆盖信息。
根据本发明一优选实施例,所述增量函数获取模块,具体配置为:
从所述待测版本代码中的日志文件,获取新增或修改的文件及文件名;
获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数;
获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
根据本发明一优选实施例,所述新增或修改的函数信息包括:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
根据本发明一优选实施例,所述增量覆盖统计模块具体配置为:
将新增文件中所有行的行号或修改文件中修改的行号,与所述被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数;
根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
根据本发明一优选实施例,所述增量覆盖统计模块的具体配置,还包括:
利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率;
利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
根据本发明一优选实施例,所述增量覆盖信息包括以下所列中的一种或几种结合:
新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
根据本发明一优选实施例,该装置还包括:
判断模块,用于判断所述增量覆盖统计模块统计得到的增量覆盖信息是否满足预设要求;
结果输出模块,用于将所述判断模块的判断结果显示输出,对于增量覆盖信息不满足预设要求的待测版本代码,结果输出模块发出报警邮件给相应的开发人员或测试人员。
由以上技术方案可以看出,本发明提供的增量覆盖信息的统计方法和装置,自动统计提测版本的增量信息,大大提高准入测试的效率,能够清晰地统计出已被单测覆盖的新增和修改过的函数,以及未被覆盖到的新增和修改过的函数,使得测试人员能够快速获取增量覆盖信息,并根据覆盖情况有针对性的设计测试用例,提高测试人员的工作效率,减少漏测。
【附图说明】
图1为本发明实施例一提供的增量覆盖信息的统计方法流程图;
图2a为本发明实施例一中步骤S102的具体方法流程图;
图2b为本发明实施例一中步骤S103的具体方法流程图;
图2c为本发明实施例一中步骤S104的具体方法流程图;
图3为本发明实施例二提供的增量覆盖信息的统计方法流程图;
图4为本发明实施例二提供的配置文件示意图;
图5为本发明实施例三提供的增量覆盖信息的统计装置示意图;
图6为本发明实施例四提供的增量覆盖信息的统计装置示意图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
由于程序的更改或升级,对于一个功能模块的程序代码会有先后不同的几个版本,每个版本中包含有若干个文件,每个文件由一个或多个函数组成,一个函数包括若干数量的代码行。
一个程序代码在提测时,其覆盖率或增量覆盖率需要达到准入要求,才能被测试人员接收。在测试人员制定的测试准入的标准中,一般会要求提测代码的行覆盖率和函数覆盖率。其中:
一般来说,开发人员升级新的版本,要么是为了修复一些bug,要么就是为了增加新的功能,因而只有少数文件会被修改而发生变化,或者也可能是增加一些新文件。在进行软件测试时,测试人员则主要关注那些修改的文件和新增加的文件。因此,本发明主要针对增量覆盖信息进行判断。
实施例一、
图1是本实施例提供的增量覆盖信息的统计方法流程图,如图1所示,该方法包括:
步骤S101、获取待测版本代码和基线版本代码。
通常基线版本代码是待检测版本代码的修改和新增的基础,可以是待检测版本代码的前一版本代码,也可以是用户指定的版本代码。
获取待检测版本代码和与该待检测版本代码相应的基线版本代码,包括版本中程序代码的所有文件及日志文件。
步骤S102、对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息。
单测用例是针对部分单元进行的测试子项目。对于模块中的一个软件单元,研发或测试人员会针对该单元不同输入情况编写多个测试用例,以检测该单元有无错误,是否符合预期结果,这多个测试用例构成了该单元的单测用例。随着研发和测试的不断累积,这些单测用例可以是一个不断完善和改进的用例集合。
获取与待测版本代码中软件单元相关的所有单测用例,并运行得到待测版本代码中所有函数的覆盖信息,包括各个文件中被覆盖到的行号和行数。
图2a是本步骤的具体方法流程图,如图2a所示,具体包括:
步骤S102_1、对所述待测版本代码运行所有的单测用例,生成覆盖统计文件。
覆盖统计文件通常采用xml(可扩展标记语言)文件来处理,利用已有的单测用例运行工具运行所有的单测用例,使用“--xml--coverage-clover”等类似参数,当所有的单测用例运行完毕后会生成一个xml文件。
xml文件中至少包括以下内容:单测用例覆盖到的每个文件路径,每个文件中每一行被单测用例覆盖的次数。
步骤S102_2、从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息。
从覆盖统计文件中,可以得到各个文件中所有行具体的覆盖信息,包括哪些行被覆盖到,哪些行未被覆盖到。
例如,某个xml文件中的部分信息:
<filename=″/**/**/su_group.php″>
<linenum=″4″type=″stmt″count=″6″/>
<linenum=″5″type=″stmt″count=″6″/>
<linenum=″6″type=″stmt″count=″6″/>
<linenum=″7″type=″stmt″count=″6″/>
<linenum=″8″type=″stmt″count=″6″/>
<linenum=″9″type=″stmt″count=″6″/>
<linenum=″10″type=″stmt″count=″6″/>
<linenum=″11″type=″stmt″count=″6″/>
<linenum=″12″type=″stmt″count=″6″/>
<linenum=″14″type=″stmt″count=″6″/>
<linenum=″15″type=″stmt″count=″0″/>
<linenum=″16″type=″stmt″count=″0″/>
以上信息表示:文件su_group.php文件中4-14行都被单测用例覆盖了6次,15-16行没有被覆盖到。
步骤S102_3、根据函数在文件中的行号,统计被覆盖到的行号和行数。
根据各个函数在对应文件中的行号,即按照代码行在整个文件中的行号进行统计。
一个代码行可能在某个单测用例中未能被执行过,即未被覆盖到,但可以在另一单测用例中被覆盖到。因而,在整个覆盖统计文件中,统计被覆盖到至少一次的行号和行数。
继续参见图1,步骤S103、将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息。
所述新增或修改的函数信息可以包括但不限于以下信息:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
图2b是本步骤的具体方法流程图,如图2b所示,具体包括:
步骤S103_1、从所述待测版本代码中的日志文件,获取新增或修改的文件名及对应文件。
一个程序文件发生修改后才能够提交到代码库,提交代码时日志文件会记录具体的文件提交信息,包含文件名等。
利用提交的日志文件,提取出文件名,如果该文件名是在基线版本中存在的文件名,则该文件就是发生修改的文件,如果不存在于基线版本中,则该文件就是新增的文件。
例如,一个模块的两个不同版本:基线版本和待测版本,基线版本中包含文件:a,b,c三个文件,待测版本中修改了文件a,并且添加了新的文件d。相应地,待测版本提交代码的日志文件的信息为:
Fileamodified2012-3-2523:50:53
Filedmodified2012-3-2523:50:53
分析待测版本的日志信息,其中文件名包括a和d。获取基线版本中的文件名称然后进行对比,可以判断出文件a是发生了修改的文件,文件d是新增的文件。
从待测版本代码中,提取新增或修改的文件名对应的文件。
步骤S103_2、获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数。
对步骤S103_1提取到的新增或修改的文件加以分析,获取新增的行号或修改的行号。
对于新增的文件中所有函数都是新增函数,获取新增的行号和行数。
对于修改的文件,将其与基线版本代码中对应的文件进行对比,通过文件对比算法(diff算法),找出不同的代码行,获取修改文件修改的行号和行数。
例如,对待测版本中的文件a和文件d加以分析,步骤S103_1提取到的文件a和d中的函数信息:
[filename:a,{func1:(1,20),func2:(21,34),….funcn:(205,256)}]
[filename:d,{func1:(1,23),func2:(24,50),….funcn:(105,206)}]
通过diff算法,比较基线版本和待测版本中的文件a,得到发生修改的行号为18-25,行数为8。
步骤S1033、获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
根据步骤S103_2中得到的新增或修改的行号,对应文件中函数的行号范围,得到新增或修改的函数信息,统计新增或修改的函数个数。
例如,将a文件中发生修改的行号和待测版本代码的文件a中函数的行号范围进行比较可知:文件a中func1和func2发生了修改,函数个数为2。
文件d中的所有函数都为新增函数,函数个数为文件d中的函数个数。
值得一提的是,上述步骤S102和步骤S103的顺序可以调换。
继续参见图1,步骤S104、利用步骤S103获取到的新增或修改的函数信息,从步骤S102获取的所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
所述增量覆盖信息可以但不限于包括:新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
图2c是本步骤的具体方法流程图,如图2c所示,具体包括:
步骤S104_1、将新增文件中所有行的行号或修改文件中修改的行号,与所述被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数。
利用步骤S103_2中获取的新增的行号或修改的行号,与步骤S102_3中统计的被覆盖到的行号进行比对,将能够匹配的行号作为新增或修改文件中被覆盖到的行号,并统计行数。
例如,文件a中经过步骤S103_2得到发生修改的行号为18-25,步骤S102_3中统计到被覆盖到的行号为15-20,则将能够匹配的行号18-20作为文件a中被覆盖到的行号,统计行数为3。
步骤S104_2、根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
新增或修改的函数信息包括:新增或修改的函数以及该些新增或修改的函数在文件中的行号范围。例如:文件a中被修改的函数有func1和func2,则函数信息包括:[{fun1,range(10,20)},{fun2,range(21,34)}]
利用步骤S104_1得到的被覆盖到的行号,根据新增或修改的函数在文件中的行号范围,确定被覆盖到的函数,统计被覆盖到的函数个数。新增或修改的函数中如果有一行被覆盖到,则认为该函数被覆盖到。
例如,文件a中第18-20行被覆盖到,对应文件a中函数func1的行号范围(1,20),可确定文件a中函数func1为被覆盖到的函数。
步骤S104_3、利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率。
步骤S104_4、利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
最终,得到新增或修改的增量覆盖信息,包括:新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
实施例二、
图3是本实施例提供的增量覆盖信息的统计方法流程图,如图3所示,该方法包括:
步骤S201、生成配置文件的内容。
根据实际测试的需求,生成不同的配置文件内容。
配置文件的内容可以但不限于包括以下:
预设关键字、待测版本号和待测版本代码的路径、基线版本号和基线版本代码的路径、预设准入阈值、报警接收人以及程序语言类别等各类信息。
图4是一个配置文件示意图,如图4所示,包括:用于过滤的预设关键字“blacklist”,版本库(svn)中的用户信息“user=*****”和“pwd=*****”,模块的svn路径“[svn]path=https://svn.***.com/**/**/**/**/**/**”,模块的部署路径“[module]path=/**/**/**/**/**/”,待测版本号“test_version”,基线版本号“target_version”,预设准入阈值“threshold”,报警接收人“mail”以及程序语言类别“languageType”。利用模块的svn路径和模块的部署路径可以组合得到待测版本代码的路径和基线版本代码的路径。
步骤S202、根据所述配置文件,获取待测版本代码和基线版本代码。
分别利用配置文件中待测版本号和待测版本代码的路径,获取待测版本代码,利用基线版本号和基线版本代码的路径,获取基线版本代码。
步骤S203、利用配置文件中的预设关键字,将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉。
例如,图4的配置文件设置的预设关键字有“abc,aaa.txt,bcd,123,rfv.php,ffff.php”,凡是在函数名、文件名或者目录名中包含上述关键字的都将被过滤掉。
步骤S204、对所述待测版本代码运行所有的单测用例,获取待测版本代码中经过步骤S203过滤后剩余的函数的覆盖信息。
获取函数的覆盖信息与实施例一中步骤S102相类似,不再赘述。
步骤S205、将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息。
步骤S206、利用步骤S205获取到的新增或修改的函数信息,从步骤S204获取的函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
上述步骤S205和步骤S206与实施例一中步骤S103和步骤S104对应相同,不再赘述。
步骤S207、将统计到的新增或修改的增量覆盖信息生成报表。
报表对应输出统计得到的增量覆盖信息,全部输出或选取若干项输出。表1是生成的一个报表示意图。
表1
如表1所示,包括行覆盖率为35.71%、函数覆盖率为9.30%、被覆盖到的函数名称以及未被覆盖到的函数名称等信息。文件1为“/abcd/cde/sadfasdf/***/file1.php”,包括函数“func1”,对应“yes”表示函数被覆盖到,文件2为“/abcd/cde/sadfasdf/***/file1.php”,包括多个函数“func2”至“func10”,“func2”至“func3”对应“yes”表示函数被覆盖到,“func4”至“func10”对应“no”表示函数未被覆盖到。
步骤S208、判断统计到的增量覆盖信息是否满足预设要求,如果满足,进入步骤S209,显示为准入代码,否则,进入步骤S210,发出报警邮件给相应的开发人员或测试人员。
预设要求为配置文件中配置的各项预设准入阈值,例如包括增量行覆盖率、增量函数覆盖率等。对增量覆盖信息的统计结果可以通过指示灯或报警声等方式输出显示。比如,如果增量的行覆盖率或函数覆盖率达到了预设阈值,就将指示灯变成绿色;反之,将指示灯变成红色,发出三次报警声,并给相应人员发送增量覆盖率未达标的邮件。
以上是对本发明所提供的方法进行的详细描述,下面对本发明提供的增量覆盖信息的统计装置进行详细描述。
实施例三
图5是本实施例提供的增量覆盖信息的统计装置示意图。如图5所示,该装置包括:
版本获取模块501,用于获取待测版本代码和基线版本代码。
通常基线版本代码是待检测版本代码的修改和新增的基础,可以是待检测版本代码的前一版本代码,也可以是用户指定的版本代码。
获取待检测版本代码和与该待检测版本代码相应的基线版本代码,包括版本中程序代码的所有文件及日志文件。
全覆盖获取模块502,用于对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息。
单测用例是针对部分单元进行的测试子项目。对于模块中的一个软件单元,研发或测试人员会针对该单元不同输入情况编写多个测试用例,以检测该单元有无错误,是否符合预期结果,该多个测试用例构成了该单元的单测用例。随着研发和测试的不断累积,这些单测用例可以是一个不断完善和改进的用例集合。
全覆盖获取模块502获取与待测版本代码中软件单元相关的所有单测用例,并运行得到待测版本代码中所有函数的覆盖信息,包括各个文件中被覆盖到的行号和行数。
全覆盖获取模块502的具体配置包括:
全覆盖获取模块502先对所述待测版本代码运行所有的单测用例,生成覆盖统计文件。
覆盖统计文件通常采用xml(可扩展标记语言)文件来处理,利用已有的单测用例运行工具运行所有的单测用例,使用“--xml--coverage-clover”等类似参数,当所有的单测用例运行完毕后会生成一个xml文件。
xml文件中至少包括以下内容:单测用例覆盖到的每个文件路径,每个文件中每一行被单测用例覆盖的次数。
全覆盖获取模块502再从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息。
从覆盖统计文件中,可以得到各个文件中所有行具体的覆盖信息,包括哪些行被覆盖到,哪些行未被覆盖到。
例如,某个xml文件中的部分信息:
<filename=″/**/**/su_group.php″>
<linenum=″4″type=″stmt″count=″6″/>
<linenum=″5″type=″stmt″count=″6″/>
<linenum=″6″type=″stmt″count=″6″/>
<linenum=″7″type=″stmt″count=″6″/>
<linenum=″8″type=″stmt″count=″6″/>
<linenum=″9″type=″stmt″count=″6″/>
<linenum=″10″type=″stmt″count=″6″/>
<linenum=″11″type=″stmt″count=″6″/>
<linenum=″12″type=″stmt″count=″6″/>
<linenum=″14″type=″stmt″count=″6″/>
<linenum=″15″type=″stmt″count=″0″/>
<linenum=″16″type=″stmt″count=″0″/>
以上信息表示:文件su_group.php文件中4-14行都被单测用例覆盖了6次,15-16行没有被覆盖到。
最后,全覆盖获取模块502根据函数在文件中的行号,统计被覆盖到的行号和行数。
根据各个函数在对应文件中的行号,即按照代码行在整个文件中的行号进行统计。
一个代码行可能在某个单测用例中未能被执行过,即未被覆盖到,但可以在另一单测用例中被覆盖到。因而,在整个覆盖统计文件中,统计被覆盖到至少一次的行号和行数。
增量获取模块503,用于将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息。
所述新增或修改的函数信息可以包括但不限于以下信息:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
增量获取模块503的具体配置包括:
增量获取模块503先从所述待测版本代码中的日志文件,获取新增或修改的文件名及对应文件。
一个程序文件发生修改后才能够提交到代码库,提交代码时日志文件会记录具体的文件提交信息,包含文件名等。
利用提交的日志文件,提取出文件名,如果该文件名是在基线版本中存在的文件名,则该文件就是发生修改的文件,如果不存在于基线版本中,则该文件就是新增的文件。
例如,一个模块的两个不同版本:基线版本和待测版本,基线版本中包含文件:a,b,c三个文件,待测版本中修改了文件a,并且添加了新的文件d。相应地,待测版本提交代码的日志文件的信息为:
Fileamodified2012-3-2523:50:53
Filedmodified2012-3-2523:50:53
分析待测版本的日志信息,其中文件名包括a和d。获取基线版本中的文件名称然后进行对比,可以判断出文件a是发生了修改的文件,文件d是新增的文件。
从待测版本代码中,提取新增或修改的文件名对应的文件。
增量获取模块503再获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数。
对提取到的新增或修改的文件加以分析,获取新增的行号或修改的行号。
对于新增的文件中所有函数都是新增函数,获取新增的行号和行数。
对于修改的文件,将其与基线版本代码中对应的文件进行对比,通过文件对比算法(diff算法),找出不同的代码行,获取修改文件修改的行号和行数。
例如,对待测版本中的文件a和文件d加以分析,提取到的文件a和d中的函数信息:
[filename:a,{func1:(1,20),func2:(21,34),….funcn:(205,256)}]
[filename:d,{func1:(1,23),func2:(24,50),….funcn:(105,206)}]
通过diff算法,比较基线版本和待测版本中的文件a,得到发生修改的行号为18-25,行数为8。
最后,增量获取模块503获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
根据得到的新增或修改的行号,对应文件中函数的行号范围,得到新增或修改的函数信息,统计新增或修改的函数个数。
例如,将a文件中发生修改的行号和待测版本代码的文件a中函数的行号范围进行比较可知:文件a中func1和func2发生了修改,函数个数为2。
文件d中的所有函数都为新增函数,函数个数为文件d中的函数个数。
值得一提的是,全覆盖获取模块502和增量获取模块503的顺序可以调换。
增量覆盖统计模块504,用于利用增量获取模块503获取到的新增或修改的函数信息,从全覆盖获取模块502获取的所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
所述增量覆盖信息可以但不限于包括:新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
增量覆盖统计模块504的具体配置包括:
增量覆盖统计模块504将新增文件中所有行的行号或修改文件中修改的行号,与所述被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数。
利用增量获取模块503获取的新增的行号或修改的行号,与全覆盖获取模块502统计的被覆盖到的行号进行比对,将能够匹配的行号作为新增或修改文件中被覆盖到的行号,并统计行数。
例如,文件a中经过增量获取模块503得到发生修改的行号为18-25,全覆盖获取模块502统计到被覆盖到的行号为15-20,则将能够匹配的行号18-20作为文件a中被覆盖到的行号,统计行数为3。
增量覆盖统计模块504根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
新增或修改的函数信息包括:新增或修改的函数以及该些新增或修改的函数在文件中的行号范围。例如:文件a中被修改的函数有func1和func2,则函数信息包括:[{fun1,range(10,20)},{fun2,range(21,34)}]
利用得到的被覆盖到的行号,根据新增或修改的函数在文件中的行号范围,确定被覆盖到的函数,统计被覆盖到的函数个数。新增或修改的函数中如果有一行被覆盖到,则认为该函数被覆盖到。
例如,文件a中第18-20行被覆盖到,对应文件a中函数func1的行号范围(1,20),可确定文件a中函数func1为被覆盖到的函数。
增量覆盖统计模块504利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率。
增量覆盖统计模块504利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
最终,得到新增或修改的增量覆盖信息,包括:新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
实施例四、
图6是本实施例提供的增量覆盖信息的统计装置示意图,如图6所示,该装置包括:
配置模块601,用于生成配置文件。
根据实际测试的需求,生成不同的配置文件内容。
配置文件的内容可以但不限于包括以下:
预设关键字、待测版本号和待测版本代码的路径、基线版本号和基线版本代码的路径、预设准入阈值、报警接收人以及程序语言类别等各类信息。
图4是一个配置文件示意图,如图4所示,包括:用于过滤的预设关键字“blacklist”,版本库(svn)中的用户信息“user=*****”和“pwd=*****”,模块的svn路径“[svn]path=https://svn.***.com/**/**/**/**/**/**”,模块的部署路径“[module]path=/**/**/**/**/**/”,待测版本号“test_version”,基线版本号“target_version”,预设准入阈值“threshold”,报警接收人“mail”以及程序语言类别“languageType”。利用模块的svn路径和模块的部署路径可以组合得到待测版本代码的路径和基线版本代码的路径。
版本获取模块602,用于根据所述配置文件,获取待测版本代码和基线版本代码。
分别利用配置文件中待测版本号和待测版本代码的路径,获取待测版本代码,利用基线版本号和基线版本代码的路径,获取基线版本代码。
关键字过滤模块603,用于利用配置文件中的预设关键字,将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉。
例如,图4的配置文件设置的预设关键字有“abc,aaa.txt,bcd,123,rfv.php,ffff.php”,凡是在函数名、文件名或者目录名中包含上述关键字的都将被过滤掉。
函数覆盖获取模块604,用于对所述待测版本代码运行所有的单测用例,获取待测版本代码中经过关键字过滤模块603过滤后剩余的函数的覆盖信息。
函数覆盖获取模块604获取函数的覆盖信息的过程与实施例三中全覆盖获取模块502的获取过程相类似,不再赘述。
增量获取模块605,用于将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息。
增量覆盖统计模块606,用于利用增量获取模块605获取到的新增或修改的函数信息,从函数覆盖获取模块604获取的函数的覆盖信息中,统计得到新增或修改的增量覆盖信息。
上述增量获取模块605和增量覆盖统计模块606与实施例三中增量获取模块503和增量覆盖统计模块504对应相同,不再赘述。
报表生成模块607,用于将增量覆盖统计模块606统计到的新增或修改的增量覆盖信息生成报表。
报表对应输出统计得到的增量覆盖信息,全部输出或选取若干项输出。表1是生成的一个报表示意图,如表1所示,包括行覆盖率为35.71%、函数覆盖率为9.30%、被覆盖到的函数名称以及未被覆盖到的函数名称等信息。文件1为“/abcd/cde/sadfasdf/***/file1.php”,包括函数“func1”,对应“yes”表示函数被覆盖到,文件2为“/abcd/cde/sadfasdf/***/file1.php”,包括多个函数“func2”至“func10”,“func2”至“func3”对应“yes”表示函数被覆盖到,“func4”至“func10”对应“no”表示函数未被覆盖到。
判断模块608,用于判断增量覆盖统计模块606统计到的增量覆盖信息是否满足预设要求。
结果输出模块609,用于将判断模块608的判断结果显示输出。
如果判断模块608的判断结果为满足,则触发结果输出模块609将输出结果显示为准入代码,否则,触发结果输出模块609发出报警邮件给相应的开发人员或测试人员。
预设要求为配置文件中配置的各项预设准入阈值,例如包括增量行覆盖率、增量函数覆盖率等。对增量覆盖信息的统计结果可以通过指示灯或报警声等方式输出显示。比如,如果增量的行覆盖率或函数覆盖率达到了预设阈值,就将指示灯变成绿色;反之,将指示灯变成红色,发出三次报警声,并给相应人员发送增量覆盖率未达标的邮件。
本发明提供的增量覆盖信息的统计方法和装置,能够自动统计提测版本和基线版本单测覆盖率的增量信息,当新增和修改函数的覆盖率没有达到指定阈值时会发出报警信息,大大提高准入测试的效率。同时,还能够清晰的统计出已经被单测覆盖的新增和修改过的函数,并统计出没有被覆盖到的新增和修改过的函数,便于测试人员快速地获取增量覆盖信息,并能够根据覆盖信息有针对性的设计测试用例,提高测试人员的工作效率,减少漏测。
另外,本发明可以很好地与持续集成模式相结合,在版本库中,能够持续对先后版本的自动统计和判别,快速得到统计结果。通过不断累积,能够收集更全面、优选的单测用例以及单测增量覆盖率,能够快速及时地统计出增量覆盖信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (18)
1.一种增量覆盖信息的统计方法,其特征在于,包括:
S1、获取待测版本代码和基线版本代码;
S2、对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息;以及,将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息;
S3、利用所述新增或修改的函数信息,从所述所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息;其中,
所述步骤S3具体包括:
将新增文件中所有行的行号或修改文件中修改的行号,与被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数;
根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
2.根据权利要求1所述的方法,其特征在于,在所述步骤S1之前,该方法还包括:
生成配置文件,其中配置文件的内容至少包括:待测版本号、基线版本号、待测版本代码的路径和基线版本代码的路径;
所述步骤S1具体包括:
利用所述配置文件中待测版本号和待测版本代码的路径,获取待测版本代码;
利用所述配置文件中基线版本号和基线版本代码的路径,获取基线版本代码。
3.根据权利要求1所述的方法,其特征在于,所述对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息,具体包括:
对所述待测版本代码运行所有的单测用例,生成覆盖统计文件;
从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息;
根据函数在文件中的行号,统计被覆盖到的行号和行数。
4.根据权利要求1或3所述的方法,其特征在于,在获取所述待测版本代码中所有函数的覆盖信息之前,还包括:
将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉。
5.根据权利要求1所述的方法,其特征在于,所述将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息,具体包括:
从所述待测版本代码中的日志文件,获取新增或修改的文件及文件名;
获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数;
获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
6.根据权利要求1或5所述的方法,其特征在于,所述新增或修改的函数信息包括:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
7.根据权利要求1所述的方法,其特征在于,所述步骤S3还包括:
利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率;
利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
8.根据权利要求1所述的方法,其特征在于,所述增量覆盖信息包括以下所列中的一种或几种结合:
新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
9.根据权利要求1所述的方法,其特征在于,该方法还包括:
判断统计得到的增量覆盖信息是否满足预设要求;
对于增量覆盖信息不满足预设要求的待测版本代码,发出报警邮件给相应的开发人员或测试人员。
10.一种增量覆盖信息的统计装置,其特征在于,包括:
版本获取模块,用于获取待测版本代码和基线版本代码;
全覆盖获取模块,用于对所述待测版本代码运行所有的单测用例,获取所述待测版本代码中所有函数的覆盖信息;
增量获取模块,用于将所述待测版本代码与所述基线版本代码进行比对,获取新增或修改的函数信息;
增量覆盖统计模块,用于利用所述增量获取模块获取的新增或修改的函数信息,从所述全覆盖获取模块获取的所有函数的覆盖信息中,统计得到新增或修改的增量覆盖信息;其中,
所述增量覆盖统计模块具体配置为:
将新增文件中所有行的行号或修改文件中修改的行号,与被覆盖到的行号进行比对,得到新增或修改文件中被覆盖到的行号和行数;
根据所述被覆盖到的行号和该些行号所在的函数名,得到新增或修改的函数中被覆盖到的函数和函数个数。
11.根据权利要求10所述的装置,其特征在于,该装置还包括:
配置模块,用于生成配置文件,其中配置文件的内容至少包括:待测版本号、基线版本号、待测版本代码的路径和基线版本代码的路径;
所述版本获取模块利用所述配置文件中待测版本号和待测版本代码的路径,获取待测版本代码;
所述版本获取模块利用所述配置文件中基线版本号和基线版本代码的路径,获取基线版本代码。
12.根据权利要求10所述的装置,其特征在于,所述全覆盖获取模块,具体配置为:
对所述待测版本代码运行所有的单测用例,生成覆盖统计文件;
从生成的覆盖统计文件中,提取各个文件中每行的覆盖信息;
根据函数在文件中的行号,统计被覆盖到的行号和行数。
13.根据权利要求10或12所述的装置,其特征在于,该装置还包括:
关键字过滤模块,用于将包含预设关键字的函数、包含预设关键字的文件或目录下所有的函数过滤掉;
所述全覆盖获取模块仅对过滤后剩余的函数获取覆盖信息。
14.根据权利要求10所述的装置,其特征在于,所述增量函数获取模块,具体配置为:
从所述待测版本代码中的日志文件,获取新增或修改的文件及文件名;
获取新增的文件对应新增的行号和行数,以及,将修改的文件与所述基线版本代码中对应的文件进行对比,获取修改文件修改的行号和行数;
获取所述新增的行号或修改的行号所在的函数名,得到所述新增或修改的函数信息。
15.根据权利要求10或14所述的装置,其特征在于,所述新增或修改的函数信息包括:
新增或修改的代码行号、新增或修改的函数行号范围、新增或修改的函数名以及新增或修改的代码所在的文件名。
16.根据权利要求10所述的装置,其特征在于,所述增量覆盖统计模块的具体配置,还包括:
利用得到新增或修改的行数总和与被覆盖到的新增或修改的行数,计算增量的行覆盖率;
利用得到的新增或修改的函数总数与被覆盖到的新增或修改的函数个数,计算增量的函数覆盖率。
17.根据权利要求10所述的装置,其特征在于,所述增量覆盖信息包括以下所列中的一种或几种结合:
新增或修改的函数覆盖率、新增或修改的行覆盖率、已被覆盖的新增或修改函数名称、未被覆盖的新增或修改函数名称。
18.根据权利要求10所述的装置,其特征在于,该装置还包括:
判断模块,用于判断所述增量覆盖统计模块统计得到的增量覆盖信息是否满足预设要求;
结果输出模块,用于将所述判断模块的判断结果显示输出,对于增量覆盖信息不满足预设要求的待测版本代码,结果输出模块发出报警邮件给相应的开发人员或测试人员。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210172285.8A CN102722436B (zh) | 2012-05-29 | 2012-05-29 | 一种增量覆盖信息的统计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210172285.8A CN102722436B (zh) | 2012-05-29 | 2012-05-29 | 一种增量覆盖信息的统计方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722436A CN102722436A (zh) | 2012-10-10 |
CN102722436B true CN102722436B (zh) | 2016-03-02 |
Family
ID=46948210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210172285.8A Active CN102722436B (zh) | 2012-05-29 | 2012-05-29 | 一种增量覆盖信息的统计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722436B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019933B (zh) * | 2012-11-27 | 2016-01-13 | 网宿科技股份有限公司 | 测试用例覆盖度自动识别方法及装置 |
CN103246575B (zh) * | 2013-04-27 | 2016-01-13 | 青岛海信传媒网络技术有限公司 | 软件有效代码量统计方法和装置 |
CN104714882B (zh) * | 2013-12-17 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 代码信息处理的方法及装置 |
CN105204982A (zh) * | 2014-06-13 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 代码测试方法及代码测试*** |
CN105302710B (zh) * | 2014-07-03 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
CN105988926B (zh) * | 2015-02-13 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 多版本测试数据的处理方法和装置 |
CN106326100A (zh) * | 2015-06-30 | 2017-01-11 | 中兴通讯股份有限公司 | 一种软件自动化测试方法及装置 |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
WO2018029668A1 (en) | 2016-08-09 | 2018-02-15 | Sealights Technologies Ltd. | System and method for continuous testing and delivery of software |
CN107977309B (zh) * | 2016-10-25 | 2021-02-12 | 腾讯科技(北京)有限公司 | 一种数据处理方法及其装置、*** |
CN107688531B (zh) * | 2017-06-20 | 2019-02-22 | 平安科技(深圳)有限公司 | 数据库集成测试方法、装置、计算机设备及存储介质 |
CN108268374B (zh) * | 2017-11-03 | 2019-03-05 | 平安科技(深圳)有限公司 | 软件版本测试方法、装置、终端设备及存储介质 |
CN107844300A (zh) * | 2017-11-03 | 2018-03-27 | 中国银行股份有限公司 | 脚本处理方法及*** |
CN109768910B (zh) * | 2017-11-09 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 信息处理方法、相关装置、设备和*** |
CN108108558B (zh) * | 2017-12-21 | 2021-10-22 | 郑州云海信息技术有限公司 | 一种基于覆盖次数统计评价随机验证质量的方法及*** |
CN108376113A (zh) * | 2018-01-10 | 2018-08-07 | 链家网(北京)科技有限公司 | 一种软件提测质量度量方法及装置 |
CN108197036B (zh) * | 2018-02-06 | 2021-05-25 | 百度在线网络技术(北京)有限公司 | 用于确定增量代码的覆盖率信息的方法和装置 |
CN110471829B (zh) * | 2018-05-09 | 2023-07-18 | 阿里巴巴集团控股有限公司 | 软件代码测试覆盖率的检查方法及装置 |
US11086759B2 (en) | 2018-09-27 | 2021-08-10 | SeaLights Technologies LTD | System and method for probe injection for code coverage |
CN109857631A (zh) * | 2018-11-02 | 2019-06-07 | 平安科技(深圳)有限公司 | 基于人工智能的代码覆盖率统计方法、装置、设备及存储介质 |
CN110006439B (zh) * | 2019-04-12 | 2021-01-29 | 北京百度网讯科技有限公司 | 地图轨迹数据的匹配方法、装置、服务器及存储介质 |
CN110532174B (zh) * | 2019-07-24 | 2024-05-31 | 平安科技(深圳)有限公司 | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 |
CN110597710B (zh) * | 2019-08-13 | 2024-04-05 | 平安证券股份有限公司 | 测试覆盖率统计方法、装置、计算机设备及存储介质 |
US11573885B1 (en) | 2019-09-26 | 2023-02-07 | SeaLights Technologies LTD | System and method for test selection according to test impact analytics |
CN112699011A (zh) * | 2019-10-23 | 2021-04-23 | 上海哔哩哔哩科技有限公司 | 统计增量代码覆盖率的方法、装置及电子设备、存储介质 |
CN111382085A (zh) * | 2020-05-09 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 测试用例生成方法、装置、设备及介质 |
CN111897727A (zh) * | 2020-07-30 | 2020-11-06 | 平安科技(深圳)有限公司 | 软件测试方法、装置、计算机设备及存储介质 |
CN112035358B (zh) * | 2020-08-31 | 2024-04-16 | 中国银行股份有限公司 | 一种确定检测信息的方法、装置、设备 |
CN112667515A (zh) * | 2021-01-06 | 2021-04-16 | 杭州当虹科技股份有限公司 | 一种实现针对逻辑语句代码覆盖率的测试方法 |
CN113138923A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 通过分析修改代码确定测试范围的方法及装置 |
CN113204350A (zh) * | 2021-06-07 | 2021-08-03 | 中国银行股份有限公司 | 代码增量覆盖率统计方法、装置、电子设备及存储介质 |
CN117112398B (zh) * | 2023-07-11 | 2024-04-16 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1873625A (zh) * | 2005-08-19 | 2006-12-06 | 华为技术有限公司 | 一种基于功能覆盖率的随机激励的自动产生方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN102063374A (zh) * | 2011-01-07 | 2011-05-18 | 南京大学 | 一种使用半监督信息进行聚类的回归测试用例选择方法 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
CN102236600A (zh) * | 2010-05-06 | 2011-11-09 | 无锡中星微电子有限公司 | 获得代码覆盖率的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101019210B1 (ko) * | 2007-04-25 | 2011-03-04 | 이화여자대학교 산학협력단 | 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법 |
-
2012
- 2012-05-29 CN CN201210172285.8A patent/CN102722436B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1873625A (zh) * | 2005-08-19 | 2006-12-06 | 华为技术有限公司 | 一种基于功能覆盖率的随机激励的自动产生方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN102236600A (zh) * | 2010-05-06 | 2011-11-09 | 无锡中星微电子有限公司 | 获得代码覆盖率的方法及装置 |
CN102063374A (zh) * | 2011-01-07 | 2011-05-18 | 南京大学 | 一种使用半监督信息进行聚类的回归测试用例选择方法 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
Non-Patent Citations (1)
Title |
---|
考虑不完美排错的Logistic测试覆盖率软件可靠性模型;***等;《计算机研究与发展》;20101231;第216-222页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102722436A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102722436B (zh) | 一种增量覆盖信息的统计方法和装置 | |
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN101261604B (zh) | 一种软件质量评价装置及软件质量评价的定量分析方法 | |
US9342645B2 (en) | Method for testing a computer program | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
CN103019933B (zh) | 测试用例覆盖度自动识别方法及装置 | |
CN110532174B (zh) | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 | |
CN104809071A (zh) | 一种代码测试方法及装置 | |
CN107045477B (zh) | 一种可进行多维度检测的质量评估平台 | |
CN110309039B (zh) | 自动化获取应用程序日志的方法、装置、设备及存储介质 | |
CN105183658A (zh) | 测试软件代码的方法及装置 | |
CN108680708B (zh) | 一种甲烷来源预测方法及装置 | |
CN107870858A (zh) | 版本对比测试方法及*** | |
CN107341110B (zh) | 一种软件测试定位补丁修改及影响范围的工具及实现方法 | |
CN113821554A (zh) | 一种实现异构数据库数据采集的方法 | |
CN112256575A (zh) | 一种代码质量管理方法、***及相关设备 | |
CN112052658A (zh) | 水质检测仪的检测报告自动生成方法、***和设备 | |
CN107480061A (zh) | 一种基于Jenkins CI构建变化模块的自动化回归测试方法 | |
CN103559127A (zh) | 一种缺陷处理方法及缺陷处理器 | |
CN115576831A (zh) | 一种测试案例推荐方法、装置、设备及存储介质 | |
CN113360362B (zh) | 一种动态sql效率检查方法及插件 | |
CN110717032A (zh) | 多***的方法调用链路图的生成及显示方法 | |
CN113656318A (zh) | 软件版本测试方法、装置及计算机设备 | |
CN113312054A (zh) | 针对嵌入式软件架构的软件栈消耗分析方法及分析装置 | |
CN103377121B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |