CN103365780A - 异常测试覆盖率计算方法及装置 - Google Patents

异常测试覆盖率计算方法及装置 Download PDF

Info

Publication number
CN103365780A
CN103365780A CN2013103083764A CN201310308376A CN103365780A CN 103365780 A CN103365780 A CN 103365780A CN 2013103083764 A CN2013103083764 A CN 2013103083764A CN 201310308376 A CN201310308376 A CN 201310308376A CN 103365780 A CN103365780 A CN 103365780A
Authority
CN
China
Prior art keywords
abnormal log
record
program
file
abnormal
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
Application number
CN2013103083764A
Other languages
English (en)
Other versions
CN103365780B (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201310308376.4A priority Critical patent/CN103365780B/zh
Publication of CN103365780A publication Critical patent/CN103365780A/zh
Application granted granted Critical
Publication of CN103365780B publication Critical patent/CN103365780B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

提供了一种异常测试覆盖率计算方法及装置,所述方法包括:获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中;获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录;根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。采用本发明所述的方法及装置,不仅解决了异常测试无法有效度量的问题,而且得到的度量结果更具针对性。

Description

异常测试覆盖率计算方法及装置
技术领域
本申请涉及一种异常测试覆盖率计算方法及装置,尤其涉及一种通过统计分析待测程序源代码和产生的日志文件,计算待测程序异常覆盖率的技术。
背景技术
异常测试是软件测试的一个重要组成部分,尤其在当今互联网飞速发展条件下,要求异常测试能够在各种在复杂的分布式应用场景下,充分覆盖各种异常情况,提高异常覆盖率,进而提高***可靠性。由此可见,如何对异常测试中的异常覆盖率进行充分、有效的度量对其具有非常重要的指导意义,通过度量,可以分析测试用例的有效性、指导异常测试用例进一步完善。但是现有技术中的覆盖率分析工具都不是针对异常测试中的异常覆盖率度量而设计的,并普遍存在以下一些问题:
1、现有的覆盖率分析工具着重从白盒的角度,做普遍意义上的覆盖率分析,例如行覆盖、分支覆盖等,具有通用意义,但是无法对异常测试覆盖率做出更有针对性的分析。
2、现有的覆盖率分析工具都依赖于代码编译打桩,通过对代码打桩,在代码中***覆盖率统计代码,达到覆盖率统计的目的。如此以来,无法使用原始二进制程序进行测试,增加编译时间成本,从而最终增加了测试成本。
3、使用现有的覆盖率分析工具无法快速进行联机覆盖率分析,需要多机部署打桩后的被测程序,之后需要基于单机的覆盖率结果,通过一定的外部工具进行手工分析,进而得到分布式***中一个模块的真实覆盖率,成本很高。
发明内容
本发明的目的在于提供一种异常测试覆盖率计算方法及装置,以解决异常测试中无法有效度量异常覆盖率的问题。
据本发明的一方面,提供一种异常测试覆盖率计算方法,所述方法包括:获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息;获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下;根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
优选地,所述获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的步骤包括:获取待测程序源代码的文件列表及其对应的程序文件;对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
优选地,所述方法还包括:从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
优选地,所述获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的步骤包括:获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
优选地,所述根据获取到的所述异常日志模式记录和所述实际异常日志记录,待测程序的异常日志覆盖率的步骤包括:遍历并扫描所述异常日志模式记录中的每一条记录;将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
根据发明的另一方面,提供一种异常测试覆盖率计算装置,所述装置包括:异常日志模式统计单元,用于获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息;实际异常日志统计单元,用于获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下;异常日志覆盖率计算单元,用于根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
优选地,所述异常日志模式统计单元获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的处理包括:获取待测程序源代码的文件列表及其对应的程序文件;对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
优选地,所述装置还包括:日志采集单元,用于从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
优选地,所述实际异常日志统计单元获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的处理包括:获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
优选地,所述异常日志覆盖率计算单元根据获取到的所述异常日志模式记录和所述实际异常日志记录,待测程序的异常日志覆盖率的处理包括:遍历并扫描所述异常日志模式记录中的每一条记录;将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
有益效果
与现有技术相比,本发明具有以下优点:
本发明不仅解决了异常测试中无法有效度量异常覆盖率的问题,而且得到的度量结果更具针对性。另外,由于本发明在整个异常测试过程中不需要对源代码重新修改、插桩和编译,从而还有效降低了异常测试的人工成本,增强了易用性。
附图说明
通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1是示出根据本发明的示例性实施例的异常测试覆盖率计算方法的流程图;
图2是示出根据本发明的示例性实施例的异常测试覆盖率计算装置的逻辑框图。
具体实施方式
以下,将参照附图来详细说明本发明的实施例。
本发明的构思是通过对待测程序的源代码进行轻量级静态分析,获取代码中的日志打印信息,并输出到一个异常日志模式文件中;然后收集待测程序在执行完测试用例后产生的日志文件,对其过滤、去重后,合并成为一个实际异常日志文件;最后,通过对实际异常日志文件和异常日志模式文件进行对比分析,得到异常测试的异常覆盖率。采用这一技术,不仅解决了异常测试中无法有效度量异常覆盖率的问题,而且由于在统计分析日志文件的过程中采用了过滤、去重、合并等技术手段,从而使得异常测试的度量结果更具针对性。
图1示出了本发明一种异常测试覆盖率计算方法的优选实施例的流程图。图2示出的一种异常测试覆盖率计算装置可用于实现图1中所述的方法。
参照图1,在步骤S110,所述装置获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息。
执行该步骤时,为了能够对待测程序源代码作一个全面充分的分析,可以采取对程序源代码逐行扫描分析的方式,所述装置在对程序源代码逐行扫描分析的过程中可以不做词法、语法分析,仅仅只需要按照特定的模式匹配出打印日志的代码行,据此可获得具体日志打印的原始信息,包括指示输出异常日志的位置信息(即程序文件名和所在代码行号)和日志描述内容。每个程序源代码中用于打印日志的接口都有统一的模式可供匹配时获取,例如,A文件中的第50行异常日志输出代码如下:
50:XX_LOG_FATAL(“this is a critical error”);
当所述装置扫描到A文件中的第50行时,通过匹配LOG_FATAL字段即可把该行异常日志内容识别出来,同时还能获取到指示输出异常日志的位置信息(即程序文件名和所在代码行)A:50。
具体地,根据本发明的一个可选实施例,所述装置获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的具体处理过程包括:
获取待测程序源代码的文件列表及其对应的程序文件;
对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
具体实施时,所述装置可以通过svn等版本管理工具获取代码库中存储的待测程序源代码的文件列表及其对应的程序文件;然后根据所述文件列表获取所有的程序文件;逐行扫描所述程序文件中的源代码,将扫描到的每行代码进行日志规则匹配,并输出匹配结果。其中,所述程序文件不限文件类型,可以支持所有的编程语言,只要代码中的日志打印函数名称能通过一定的模式正则匹配出来即可;模式匹配规则是与特定程序相关的正则表达式,不同程序的匹配规则不尽相同,例如,XX_FATAL、YY_FATAL等,多种规则最终可构成本发明的预置的日志模板;最终,将原始异常日志模式输出到指定文件log_total.file中,log_total.file每一行的数据格式可采用:文件名+行号+日志描述信息,日志描述信息包括日志类型和异常描述内容。具体内容如下所示:
a.file,50,warning,“this is a warning log”
b.file,11,fatal,“this is a fatal log”
在步骤S120,所述装置获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件可能部署在同一机器设备的不同目录下,也可能部署在不同机器设备中的不同目录下。
需要说明的是,由于步骤S110中每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,相应的,步骤S120中的每条异常日志记录也包括输出异常日志的程序文件名和所在代码行以及异常描述信息。
由于待测程序运行后输出的异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下,需要收集同一机器设备的不同目录下和/或在不同机器设备中的不同目录下产生的异常日志文件。因此根据本发明一个优选实施例,所述装置在执行步骤S120之前或者同时,还包括:从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
由于所述异常日志文件中包含多种类型的日志信息,为了使得计算的异常覆盖率更具针对性,需要去除一些与异常测试无关的日志信息,另外,在所述异常日志中还可能存在由同一文件同一行代码(即由同一指示输出异常日志的位置信息)产生的重复日志信息,为了准确度量异常覆盖率,保证同一文件同一行代码打印的日志信息只有一条,需要对获取到的日志文件过滤、去重和合并,通过过滤可以去除一些与异常测试无关的日志信息,保留与异常测试有关的或者具有针对性的日志信息;通过去重可以去掉重复的日志信息,使得日志文件中同一文件同一行打印的日志信息只保留一条;最后,将所述过滤、去重后的日志文件合并为一个日志文件,获得实际发生异常的日志信息,另外,需要说明的是,由于合并后的日志还可能存在同一文件同一行打印的重复日志信息,为进一步保证异常测试覆盖率的度量准确性,还需要对合并后的日志文件再做一次去重。
具体地,根据本发明的另一可选实施例,所述装置获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的具体处理过程包括:
获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;
从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;
将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;
从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
具体实施时,特别是对于多机部署的程序,所述装置可先在各个机器上进行过滤、去重处理,处理完成后,将所有单机日志集中到同一台机器上,再进行一遍去重处理,最终得到实际异常日志文件log_coverd.file。其中,所述处理过程包括过滤、去重和合并。过滤条件采用具有针对性的特定文件名,然后根据所述特定文件名,对每个日志文件中的每条日志信息进行取舍,如果所述日志信息包含特定的文件名,则保留;否则,去除。如果任意两条日志信息是同一文件同一行打印出来的,则将其视为同一条日志,只保留其中的一条。在经过过滤和去重后的多份日志文件之间再做一次去重、合并,最终,将实际异常日志记录输出到指定文件log_covered.file中,所述Log_coverd.file每一行的数据格式可采用:日志类型+文件名:行号+异常描述信息,具体内容如下所示:
WARNING a.file:50    “this is a warning log”
FATAL   b.file:65    “this is a fatal log”
在步骤S130,所述装置根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
执行该步骤时,可将步骤S110获取到的异常日志模式记录和步骤S120获取到的实际异常日志记录进行比对分析,比对时可依据日志信息中包含的指示输出异常日志的位置信息。具体地,根据本发明的又一可选实施例,所述装置根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率的具体处理过程包括:
遍历并扫描所述异常日志模式记录中的每一条记录;
将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;
计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
具体实施时,所述装置将实际异常日志文件log_coverd.file和异常日志模式文件log_total.fie进行对比分析时,除了输出异常日志覆盖率,还可以输出覆盖/未覆盖的比值。由于异常日志模式文件中统计了所有程序文件的异常日志打印信息,可将其视为全集A,实际异常日志文件中统计了待测程序执行测试用例后产生的日志信息,可将其视为集合B,A-B得到的差集就是未覆盖的日志集合,count(B)/count(A)是异常日志的覆盖率。具体的对比分析过程为:所述装置遍历集合A中的每一条异常日志模式,将其在集合B中按照文件名+行号(即输出异常日志的位置信息)进行检索匹配,如果匹配成功,则将该异常日志模式标记为覆盖,最后可根据集合A中的标记,输出异常日志的覆盖率。
下面给出一个具体的实施例,对本发明作进一步的说明。
假设程序Proc部署在两个机器中,并包含有两个源文件Program.a和Program.b,文件中的具体内容如下:
Program.a
50A_FATAL(“this is a fatal log”);
51A_WARNING(“this is a warning log”)
100A_WARNING(“this is a warning log in a”)
Program.b
65A_WARNING(“this is a warning log too”)
201A_WARNING(“this is a warning log in b”)
执行本发明所述步骤S110后,得到所述异常日志模式文件log_total.file,所述文件log_total.file中共包含共5条日志模式,文件中的具体内容如下:
Program.a   50 fatal   “this is a fatal log”
Program.a   51 warning   “this is a fatal log”
Program.a   100warning   “this is a warning log in a”
Program.b   65 warning   “this is a warning log too”
Program.b   201warning  “this is a warning log in b”
当所述程序Proc执行测试用例后,分别产生两个日志log.a和log.b,其中,所述Log.a日志文件内容如下:
FATAL  program.a:50  “this is a fatal log”
FATAL  program.a:51  “this is a warning log”
FATAL  program.a:50  “this is a fatal log”
WARNING program.b:65  “this is a warning log too”
所述Log.b日志文件内容如下:
WARNING program.b:65  “this is a warning log too”
FATAL  program.a:51  “this is a warning log”
执行本发明所述步骤S120后,得到实际异常日志文件log_coverd.file,所述文件log_coverd.file中共包含3条日志信息,具体内容如下:
FATAL  program.a:50  “this is a fatal log”
WARNING program.b:65  “this is a warning log too”
FATAL  program.a:51  “this is a warning log”
最后,对所述文件log_total.file和log_coverd.file执行本发明所述步骤S130,对比分析之后,输出异常日志的覆盖率及其它分析结果:
异常log覆盖率等于3/5=60%
覆盖异常log:
FATAL  program.a:50  “this is a fatal log”
WARNING program.b:65 “this is a warning log too”
FATAL  program.a:51  “this is a warning log”
未覆盖异常log:
100A_WARNING(“this is a warning log in a”)
201A_WARNING(“this is a warning log in b”)
图2示出了本发明一异常测试覆盖率计算装置的优选实施例结构框图。
参照图2,所述装置至少包括:异常日志模式统计单元201、实际异常日志统计单元202和异常日志覆盖率计算单元203。
其中,异常日志模式统计单元201用于获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息;
实际异常日志统计单元202用于获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下;
异常日志覆盖率计算单元203用于根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
具体地,根据本发明的一个可选实施例,所述异常日志模式统计单元201获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的处理包括:
获取待测程序源代码的文件列表及其对应的程序文件;
对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
由于所述待测程序运行后输出的异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下,因此根据本发明的一个优选实施例,所述装置还包括:日志采集单元(未示出),用于从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
为了准确度量异常测试的覆盖率,并使得异常测试覆盖率更具备针对性,根据本发明的另一可选实施例,所述实际异常日志统计单元202获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的处理包括:
获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;
从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;
将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;
从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
根据本发明的又一可选实施例,所述异常日志覆盖率计算单元203根据获取到的所述异常日志模式记录和所述实际异常日志记录,待测程序的异常日志覆盖率的处理包括:
遍历并扫描所述异常日志模式记录中的每一条记录;
将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;
计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
由此可见,与现有的覆盖率分析工具相比本发明不仅解决了异常测试中异常覆盖率无法有效度量的问题,而且得到的度量结果更具针对性。另外,由于本发明在整个异常测试过程中不需要对源代码重做修改、插桩和编译,从而还有效降低了异常测试的人工成本,增强了易用性。
需要指出,根据实施的需要,可将本申请中描述的各个步骤拆分为更多步骤,也可将两个或多个步骤或者步骤的部分操作组合成新的步骤,以实现本发明的目的。
上述根据本发明的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的处理方法。此外,当通用计算机访问用于实现在此示出的处理的代码时,代码的执行将通用计算机转换为用于执行在此示出的处理的专用计算机。
尽管已参照优选实施例表示和描述了本发明,但本领域技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对这些实施例进行各种修改和变换。

Claims (10)

1.一种异常测试覆盖率计算方法,包括:
获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息;
获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下;
根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
2.如权利要求1所述的方法,其特征在于,所述获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的步骤包括:
获取待测程序源代码的文件列表及其对应的程序文件;
对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
3.如权利要求2所述的方法,其特征在于,还包括:
从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
4.如权利要求3所述的方法,其特征在于,所述获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的步骤包括:
获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;
从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;
将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;
从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
5.如权利要求4所述的方法,所述根据获取到的所述异常日志模式记录和所述实际异常日志记录,待测程序的异常日志覆盖率的步骤包括:
遍历并扫描所述异常日志模式记录中的每一条记录;
将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;
计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
6.一种异常测试覆盖率计算装置,包括:
异常日志模式统计单元,用于获取待测程序源代码,将所述待测程序源代码中输出异常日志的特征数据保存到异常日志模式记录中,其中,每条异常日志模式记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息;
实际异常日志统计单元,用于获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取实际异常日志记录,其中,每条异常日志记录包括输出异常日志的程序文件名和所在代码行以及异常描述信息,所述异常日志文件部署在同一机器设备的不同目录下和/或在不同机器设备中的不同目录下;
异常日志覆盖率计算单元,用于根据获取到的所述异常日志模式记录和所述实际异常日志记录,计算待测程序的异常日志覆盖率。
7.如权利要求6所述的装置,其特征在于,所述异常日志模式统计单元获取待测程序源代码,将所述待测程序源代码中的输出异常日志的特征数据保存到异常日志模式记录中的处理包括:
获取待测程序源代码的文件列表及其对应的程序文件;
对获取的各个程序文件进行如下处理:逐行扫描所述程序文件中的源代码,从扫描的代码行提取日志函数调用代码,并且将提取的日志函数调用代码与与预置的日志模板进行匹配,如果匹配成功,则将所述日志函数代码所在的位置信息和异常描述信息作为输出异常日志的特征数据保存到异常日志模式记录中,其中,所述日志模板用于存储不同程序文件对应的日志函数名。
8.如权利要求7所述的装置,其特征在于,还包括:
日志采集单元,用于从同一机器设备的不同目录和/或在不同机器设备中的不同目录采集所述待测程序的异常日志文件,并将采集的异常日志文件复制或移动至指定位置。
9.如权利要求8所述的装置,其特征在于,所述实际异常日志统计单元获取运行待测程序产生的异常日志文件,并且从所述异常日志文件提取异常日志记录的处理包括:
获取运行待测程序产生的异常日志文件,其中,每个异常日志文件包含多条异常日志信息;
从获取的异常日志文件提取包含特定的程序文件名的异常日志信息;
将从各个异常日志文件提取的异常日志信息合并为实际异常日志记录;
从所述实际异常日志记录删除重复的指示输出异常的位置信息相同的异常日志信息。
10.如权利要求9所述的装置,所述异常日志覆盖率计算单元根据获取到的所述异常日志模式记录和所述实际异常日志记录,待测程序的异常日志覆盖率的处理包括:
遍历并扫描所述异常日志模式记录中的每一条记录;
将所述每一条记录包含的位置信息与所述实际发生异常的日志记录中的每一条记录包含的位置信息进行比对,如果比对成功,则在所述异常日志模式记录中将所述位置信息在异常日志模式记录中对应的记录标记为覆盖;
计算所述异常日志模式记录中标记为覆盖的记录在异常日志模式记录所占的比值,将所述比值作为所述异常日志覆盖率输出。
CN201310308376.4A 2013-07-22 2013-07-22 异常测试覆盖率计算方法及装置 Active CN103365780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310308376.4A CN103365780B (zh) 2013-07-22 2013-07-22 异常测试覆盖率计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310308376.4A CN103365780B (zh) 2013-07-22 2013-07-22 异常测试覆盖率计算方法及装置

Publications (2)

Publication Number Publication Date
CN103365780A true CN103365780A (zh) 2013-10-23
CN103365780B CN103365780B (zh) 2016-08-03

Family

ID=49367185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310308376.4A Active CN103365780B (zh) 2013-07-22 2013-07-22 异常测试覆盖率计算方法及装置

Country Status (1)

Country Link
CN (1) CN103365780B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809063A (zh) * 2015-04-24 2015-07-29 百度在线网络技术(北京)有限公司 分布式***的测试方法及装置
CN105004957A (zh) * 2015-07-31 2015-10-28 福州瑞芯微电子股份有限公司 一种sd卡测试方法和测试设备
CN107844423A (zh) * 2017-11-10 2018-03-27 郑州云海信息技术有限公司 一种软件测试完备性的评估方法
CN109992511A (zh) * 2019-03-25 2019-07-09 口碑(上海)信息技术有限公司 获取代码测试覆盖率的装置及方法
CN110321271A (zh) * 2019-06-03 2019-10-11 平安科技(深圳)有限公司 基于Monkey获取异常信息的方法、装置、设备及存储介质
CN110471850A (zh) * 2019-08-09 2019-11-19 锐捷网络股份有限公司 代码覆盖率测试方法及装置
CN112015653A (zh) * 2020-08-31 2020-12-01 中移(杭州)信息技术有限公司 问题定位方法、服务器及存储介质
CN112650681A (zh) * 2020-12-28 2021-04-13 广州品唯软件有限公司 自动化测试方法、装置、电子设备及可读存储介质
CN112764963A (zh) * 2021-01-29 2021-05-07 恒鸿达科技有限公司 一种异常日志信息自动收集的方法、装置、设备和介质
CN113032254A (zh) * 2021-03-19 2021-06-25 中国工商银行股份有限公司 测试覆盖情况的评估方法和装置
CN113238889A (zh) * 2021-06-16 2021-08-10 展讯通信(上海)有限公司 一种漏洞的问题定位方法及装置、存储介质、终端
CN115686853A (zh) * 2022-11-03 2023-02-03 北京优特捷信息技术有限公司 一种日志要素提取方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885273A (zh) * 2005-06-21 2006-12-27 华为技术有限公司 一种逻辑测试的功能覆盖率分析方法
CN101499068A (zh) * 2008-02-01 2009-08-05 中兴通讯股份有限公司 一种基于日志的数据库调用覆盖率统计和分析的方法
CN103023710A (zh) * 2011-09-21 2013-04-03 阿里巴巴集团控股有限公司 一种安全测试***和方法
EP2590349A1 (en) * 2011-11-03 2013-05-08 NTT DoCoMo, Inc. A method for scheduling a scalable video coding stream in a wireless mobile network
CN103246602A (zh) * 2012-02-14 2013-08-14 阿里巴巴集团控股有限公司 代码覆盖率确定方法及***、代码覆盖检测方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885273A (zh) * 2005-06-21 2006-12-27 华为技术有限公司 一种逻辑测试的功能覆盖率分析方法
CN101499068A (zh) * 2008-02-01 2009-08-05 中兴通讯股份有限公司 一种基于日志的数据库调用覆盖率统计和分析的方法
CN103023710A (zh) * 2011-09-21 2013-04-03 阿里巴巴集团控股有限公司 一种安全测试***和方法
EP2590349A1 (en) * 2011-11-03 2013-05-08 NTT DoCoMo, Inc. A method for scheduling a scalable video coding stream in a wireless mobile network
CN103246602A (zh) * 2012-02-14 2013-08-14 阿里巴巴集团控股有限公司 代码覆盖率确定方法及***、代码覆盖检测方法及***

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809063A (zh) * 2015-04-24 2015-07-29 百度在线网络技术(北京)有限公司 分布式***的测试方法及装置
CN105004957A (zh) * 2015-07-31 2015-10-28 福州瑞芯微电子股份有限公司 一种sd卡测试方法和测试设备
CN107844423A (zh) * 2017-11-10 2018-03-27 郑州云海信息技术有限公司 一种软件测试完备性的评估方法
CN109992511A (zh) * 2019-03-25 2019-07-09 口碑(上海)信息技术有限公司 获取代码测试覆盖率的装置及方法
CN110321271A (zh) * 2019-06-03 2019-10-11 平安科技(深圳)有限公司 基于Monkey获取异常信息的方法、装置、设备及存储介质
CN110471850B (zh) * 2019-08-09 2022-12-13 锐捷网络股份有限公司 代码覆盖率测试方法及装置
CN110471850A (zh) * 2019-08-09 2019-11-19 锐捷网络股份有限公司 代码覆盖率测试方法及装置
CN112015653A (zh) * 2020-08-31 2020-12-01 中移(杭州)信息技术有限公司 问题定位方法、服务器及存储介质
CN112650681A (zh) * 2020-12-28 2021-04-13 广州品唯软件有限公司 自动化测试方法、装置、电子设备及可读存储介质
CN112764963A (zh) * 2021-01-29 2021-05-07 恒鸿达科技有限公司 一种异常日志信息自动收集的方法、装置、设备和介质
CN113032254A (zh) * 2021-03-19 2021-06-25 中国工商银行股份有限公司 测试覆盖情况的评估方法和装置
CN113032254B (zh) * 2021-03-19 2024-05-31 中国工商银行股份有限公司 测试覆盖情况的评估方法和装置
CN113238889A (zh) * 2021-06-16 2021-08-10 展讯通信(上海)有限公司 一种漏洞的问题定位方法及装置、存储介质、终端
CN115686853A (zh) * 2022-11-03 2023-02-03 北京优特捷信息技术有限公司 一种日志要素提取方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN103365780B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
CN103365780A (zh) 异常测试覆盖率计算方法及装置
Wang et al. Automatically learning semantic features for defect prediction
Hanam et al. Discovering bug patterns in JavaScript
Rath et al. Analyzing requirements and traceability information to improve bug localization
Rahman et al. Characterizing defective configuration scripts used for continuous deployment
CN107783901B (zh) 测试用例生成方法、装置、计算机设备及存储介质
CN106572117B (zh) 一种WebShell文件的检测方法和装置
CN107798047B (zh) 重复工单检测方法、装置、服务器和介质
CN111027615A (zh) 基于机器学习的中间件故障预警方法和***
CN102043720A (zh) 利用sql语句自动生成测试数据的方法和装置
CN113220588A (zh) 一种数据处理的自动化测试方法、装置、设备及存储介质
US10782942B1 (en) Rapid onboarding of data from diverse data sources into standardized objects with parser and unit test generation
US8464323B2 (en) Authentication apparatus
CN117873905A (zh) 一种代码同源检测的方法、装置、设备及介质
Tamura et al. Deep learning based on fine tuning with application to the reliability assessment of similar open source software
CN117033501A (zh) 大数据采集分析***
Bettenburg et al. Using fuzzy code search to link code fragments in discussions to source code
CN114139853A (zh) 一种基于大数据的钢结构产品清单处理方法和装置
CN113065130A (zh) 一种日志分类方法及相关装置
WO2015184750A1 (zh) 网元设备数据维护的方法和装置
CN104504029A (zh) 数据转化信息处理方法及装置
KR101904643B1 (ko) 의사결정트리를 이용한 기사 생성 방법
CN111581199A (zh) 一种智能数据分析***及方法
CN112650796A (zh) 一种自动化的应用数据收集、存储管理***
CN117971605B (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