一种日志分析方法及系统与流程

文档序号:11829400阅读:223来源:国知局
一种日志分析方法及系统与流程

本发明涉及自动化测试技术领域,尤其涉及一种日志分析方法及系统。



背景技术:

随着手机市场的飞速发展,传统手机(feature phone)已经不能满足人们的需求,越来越多的智能手机(smart phone)开始进入人们的生活。智能手机在传统手机的功能上增加了更强大的娱乐、咨询、办公、社交等功能,已经成为绝大多数人不可缺少的生活元素。尤其是采用安卓平台(Android)的智能手机,其使用率占全球手机用户份额已经超过四分之一。

智能手机市场的飞速发展及其发展能带来的丰厚利润,导致越来越多的芯片商和运营商加入到安卓平台移动终端开发的行列。在如此激烈的竞争环境下,缩短产品周期、版本快速迭代就成了竞争力的保障。在产品的开发过程中测试是必不可少的环节,在大规模长时间的测试过程中难免会出现各种各样的问题,例如手机定屏、黑屏等。而分析这些问题的着手点就是测试过程中产生的日志文件(Log)。

现有技术中,对批量的移动终端执行自动化测试过程中,分析其产生的日志文件的方式主要为手动从众多日志文件中查找相应的信息并记录,或者采用一些类手动的方式进行记录。上述方式重复工作比较大,处理起来比较繁琐,不易于对日志文件进行准确分析。



技术实现要素:

根据现有技术中存在的问题,现提供一种日志分析方法及系统的技术方案,旨在解决现有技术中对于自动化测试过程中日志文件的分析比较繁琐,分析结果不够明晰的问题。

上述技术方案具体包括:

一种日志分析方法;其中:

预设有多个关键字信息,每个所述关键字信息对应表示一类测试异常;

处于同一测试环境下的多个移动终端于自动化测试过程中生成相应的日志文件,每个所述日志文件中包括多条日志记录;

所述日志分析方法具体包括:

步骤S1,抓取所有所述日志文件;

步骤S2,从抓取得到的所有所述日志文件中筛选得到包括所述关键字信息的所有所述日志记录;

步骤S3,对筛选得到的所有所述日志记录进行处理,以分别得到对应每类所述测试异常的测试结果,整合所有所述测试结果以形成一测试报告。

优选的,该日志分析方法,其中,所述关键字信息包括:

用于表示应用程序未响应的关键字信息;和/或

用于表示应用程序异常退出的关键字信息;和/或

用于表示Framework层系统服务异常的关键字信息;和/或

用于表示java层应用程序异常退出的关键字信息。

优选的,该日志分析方法,其中,所述步骤S3具体包括:

步骤S31,将筛选得到的所述日志记录依照不同的所述关键字信息进行分类;

步骤S32,分别对每类所述日志记录进行处理,以分别得到针对每类所述日志记录的相应的测试结果;

步骤S33,将所有所述测试结果整合入一个相应的所述测试报告中。

优选的,该日志分析方法,其中,所述步骤S3中,形成的所述测试报告中包括:

首次发生所述测试异常的时刻的均值;和/或

首次发生所述测试异常的时刻的中值;和/或

首次发生重启事件的时刻的均值;和/或

首次发生重启事件的时刻的中值;和/或

发生每类所述测试异常的对应的功能模块的名称;和/或

发生每类所述测试异常的次数。

优选的,该日志分析方法,其中,每个所述关键字信息关联于相应的多个子关键字信息,每个所述子关键字信息对应表示一个所述测试异常;

对每类所述测试异常进行处理得到的所述测试结果中包括对每个所述测试异常进行处理得到的测试结果。

优选的,该日志分析方法,其中,所述测试报告中包括的用于表示一个所述测试异常的所述测试结果关联于一个相应的所述日志文件。

优选的,该日志分析方法,其中,所述步骤S3中,形成所述测试报告后,根据所述测试报告中包括的不同的所述测试结果,对相应的所述测试异常进行处理。

优选的,该日志分析方法,其中,所述步骤S3中,形成所述测试报告后,向使用者显示所述测试报告。

一种日志分析系统,其中:

预设有多个关键字信息,每个所述关键字信息对应表示一类测试异常;

处于同一测试环境下的多个移动终端于自动化测试过程中生成相应的日志文件,每个所述日志文件中包括多条日志记录;

所述日志分析系统具体包括:

抓取单元,用于抓取所有所述移动终端产生的所有所述日志文件;

筛选单元,其中预设有多个关键字信息,每个所述关键字信息对应表示一类测试异常,所述筛选单元连接所述抓取单元,用于从抓取得到的所有所述日志文件中筛选得到包括所述关键字信息的所有所述日志记录;

处理单元,连接所述筛选单元,用于对筛选得到的所有所述日志记录进行处理,以分别得到对应每类所述测试异常的测试结果,并整合所有所述测试结果以形成一测试报告。

优选的,该日志分析系统,其中,所述关键字信息包括:

用于表示应用程序未响应的关键字信息;和/或

用于表示应用程序异常退出的关键字信息;和/或

用于表示Framework层系统服务异常的关键字信息;和/或

用于表示java层应用程序异常退出的关键字信息。

优选的,该日志分析系统,其中,所述处理单元形成的所述测试报告中包括:

首次发生所述测试异常的时刻的均值;和/或

首次发生所述测试异常的时刻的中值;和/或

首次发生重启事件的时刻的均值;和/或

首次发生重启事件的时刻的中值;和/或

发生每类所述测试异常的对应的功能模块的名称;和/或

发生每类所述测试异常的次数。

优选的,该日志分析系统,其中,所述处理单元中包括:

分类模块,用于将筛选得到的所述日志记录依照不同的所述关键字信息进行分类,并输出相应的分类结果;

处理模块,连接所述分类模块,用于根据所述分类结果,分别对每类所述日志记录进行处理,以分别得到针对每类所述日志记录的相应的测试结果;

整合模块,连接所述处理模块,用于将所有所述测试结果整合入一相应的测试报告中并输出。

优选的,该日志分析系统,其中,还包括:

执行单元,连接所述处理单元,用于根据所述测试报告中包括的不同的所述测试结果,对相应的所述测试异常进行处理。

优选的,该日志分析系统,其中,还包括:

显示单元,连接所述处理单元,用于显示所述测试报告。

上述技术方案的有益效果是:降低日志文件分析的复杂度和工作量,提升分析效率和分析精度,减少不必要的系统资源投入,降低日志文件的分析成本。

附图说明

图1是本发明的较佳的实施例中,一种日志分析方法的总体流程示意图;

图2是本发明的较佳的实施例中,关键字信息分类的关系示意图;

图3是本发明的较佳的实施例中,日志分析方法中对分类完成的日志记录进行处理的流程示意图;

图4是本发明的较佳的实施例中,一种日志分析系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

移动终端在执行自动化测试过程中,会产生相应的日志文件,批量对移动终端执行自动化测试,会产生许多日志文件,每个日志文件中包括多条日志记录,每条日志记录中还可以包括许多记录的内容。因此,在批量对移动终端进行自动化测试时,所产生的日志文件中包括的信息量是非常巨大的。现有技术中对于这些日志文件的处理和分析工作通常包括两种方法:

1)手动在日志文件中查找关键信息,并提取关键信息匹配的记录。

上述方法中,由于需要使用者手动执行日志记录的查找工作,使得查找的精确度和复杂程度大幅上升,非常耗费人力资源。

2)采用一些其他的工具例如Utraedit等,利用正则表达式匹配关键信息并记录。

现有技术中,通常一种分析工具对应于一个软件版本。换言之,对应一个预设的软件版本,其分析工具内部只设置有固定的关键信息,因此使得该分析工具通常无法适用于其他软件版本,也就是传统的分析工具不具有泛用性。

因此,本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种日志分析方法。该日志分析方法适用于执行自动化测试的移动终端,进一步地适用于执行自动化测试的多个移动终端(批量执行自动化测试)。本发明的较佳的实施例中,同一个批次中执行自动化测试的移动终端的测试环境相同,例如其软件版本相同、测试平台相同以及其他相关测试属性相同。本发明中执行自动化测试的目的在于查看某个软件版本是否稳定,其中是否存在故障问题,因此需要在同一个批次进行测试前统一该批次中每个移动终端的测试环境,从而保证测试的准确性。

本发明的较佳的实施例中,在执行自动化测试时,移动终端会产生相应的日志文件。一个移动终端于一次自动化测试过程中产生一个日志文件。在 该日志文件中包括多条日志记录。本发明的较佳的实施例中,每条日志记录用于表示于自动化测试过程中的一个测试动作,或者一个测试状态。该测试动作或者测试状态中的任何故障信息都会被记录在该日志记录中。本发明的较佳的实施例中,一条日志记录占据日志文件中的一整行。

本发明的较佳的实施例中,如图1所示,上述日志分析方法具体包括:

步骤S1,抓取所有日志文件;

本发明的较佳的实施例中,上述所有日志文件,是指同一个批次进行测试的所有移动终端于本次测试过程中产生的所有日志文件。

步骤S2,从抓取得到的所有日志文件中筛选得到包括关键字信息的所有日志记录;

本发明的较佳的实施例中,上述关键字信息可以包括:

用于表示应用程序未响应的关键字信息:例如Anr(Application Not Responding);本发明的一个较佳的实施例中,当一条日志记录中出现Anr时,则表示该日志记录中记录的是应用程序未响应的测试异常,则需要将该条日志记录整条提取出来;和/或

用于表示应用程序异常退出的关键字信息:例如Crash;本发明的一个较佳的实施例中,当一条日志记录中出现Crash时,则表示该条日志记录中记录的是应用程序异常退出的测试异常,则需要将该条日志记录整条提取出来;和/或

用于表示Framework层系统服务异常的关键字信息:例如Watchdog;本发明的一个较佳的实施例中,当一条日志记录中出现Watchdog时,则表示该日志记录中记录的是Framework层出现安卓(Andorid)服务异常情况,则需要将该条日志记录整条提取出来;和/或

用于表示java层应用程序异常退出的关键字信息:例如JavaCrash;本发明的一个较佳的实施例中,当一条日志记录中出现JavaCrash时,则表示该条日志记录中记录的是Java层程序异常退出的情况,则需要将该条日志记录整条提取出来。

本发明的较佳的实施例中,除了上述列举出来的关键字信息,还包括用于表示其他异常信息的关键字信息,例如FileNotFoundException(查找文件异常)、java.io.IOException(java输入输出异常)、Failed looking up window (查找窗口异常)以及InterReceiverLeaked(交互接收泄漏)。本发明的较佳的实施例中,这些信息在最终的测试报告中被归类于“其他信息(Others)”的分类中。换言之,本发明的较佳的实施例中,在下文中对日志记录进行处理时,将上述信息划分在“其他信息”的类别中统一处理。

本发明的较佳的实施例中,上述预设的关键字信息可以由使用者在执行日志分析之前自行配置,也可以由系统根据本次测试的移动终端的测试环境进行自动配置。这样可以扩展整个日志分析方法的泛用性,解决现有技术中一种分析工具仅能针对一个软件版本的分析方法中适用范围较窄的问题。

本发明的较佳的实施例中,上述每个关键字信息用于表示一种测试异常,因此每个关键字信息下关联于多个子关键字信息,每个子关键字信息用于表示一个测试异常。如图2所示,提供如上文中所述的关键字信息与其关联的子关键字信息的关系图。例如,对于包含Anr的日志记录而言,在该条日志记录的开头记有Anr字段,而在后面包含的内容中可能包括相应的子关键字信息,例如记录有Binder传输失败的字段。此时系统将该条日志记录判断为用于表示处于“Anr”分类下的具体为“Binder传输失败”的测试异常的日志记录。

本发明的较佳的实施例中,如图2中所示,“低内存”表示当前可用内存较低;“oom-killer”表示低内存时系统被迫杀死进程;“Modem发生assert”表示移动终端的基带处理器(Modem)出现异常;“Watchdog杀进程提醒”表示Frame层出现服务异常时杀死进程提醒;“window泄漏”表示窗口泄漏。

本发明的较佳的实施例中,每个关键字信息下关联的子关键字信息同样可以由使用者根据实际测试情况在日志分析之前预先设置。

步骤S3,对筛选得到的所有日志记录进行处理,以分别得到对应每类测试异常的测试结果,整合所有测试结果以形成一测试报告。

本发明的较佳的实施例中,如图3所示,上述步骤S3具体包括:

步骤S31,将筛选得到的日志记录依照不同的关键字信息进行分类;

本发明的较佳的实施例中,如上文中所述,将对应Anr的日志记录归为一类,对应于Crash的日志记录归为一类,对应于Watchdog的日志记录归为一类,对应于JavaCrash的日志记录归为一类,以及对应于Others的日志记 录归为一类。

本发明的较佳的实施例中,由于关键字信息可以由使用者根据实际测试情况自行设定,因此上述分类也可以根据关键字的设定做相应调整。

步骤S32,分别对每类日志记录进行处理,以分别得到针对每类日志记录的相应的测试结果;

本发明的较佳的实施例中,根据上文中描述的分类对每类日志记录进行处理。本发明的较佳的实施例中,最终处理得到的测试结果中包括对应子关键字信息的测试结果。例如,测试结果对应于Anr,而在自动化测试过程中存在对应于Anr异常下的Binder传输失败,则在对应于Anr的一类测试结果中包括对应于Binder传输失败的一个测试结果。

步骤S33,将所有测试结果整合入一个相应的测试报告中。

本发明的较佳的实施例中,最终形成的测试报告中包括所有处理得到的测试结果。例如最终形成的测试报告中包括分别对应于Anr、Crash、Watchdog、JavaCrash以及Others的测试结果。这些测试结果分别独立显示,并且显示在同一个测试报告中。

本发明的较佳的实施例中,上述测试报告中具体可以包括:

首次发生测试异常的时刻的均值和/或中值;本发明的较佳的实施例中,该测试异常为任意测试异常,即首次抓取到的带有关键字信息的日志记录对应的时刻;本发明的较佳的实施例中,所谓均值和/或中值,是针对同一批次的多个移动终端而言,即计算得到多个处于同一测试环境的移动终端首次出现测试异常的均值和/或中值。和/或

首次发生重启事件的时刻的均值和/或中值;本发明的较佳的实施例中,重启事件针对的关键字信息为Restart,使用者可以根据实际测试情况将Restart加入上述关键字信息中作为表示一类测试异常的信息;本发明的较佳的实施例中,上述均值和/或中值与上文中所述的类似,在此不再赘述。和/或

发生每类测试异常的对应的功能模块的名称;本发明的较佳的实施例中,所谓功能模块,实际为处于软件侧面上的模块;该条实质用于分析并得出测试异常具体由哪个模块产生的。和/或

发生每类测试异常的次数。

本发明的较佳的实施例中,上述分析首次出现测试异常/重启的均值和/或中值,可以将其作为判断本次测试针对的软件版本是否稳定的主要参考信息。

本发明的一个较佳的实施例中,可以根据使用者的设定,在一份测试报告中仅包括一类测试结果,而将所有的测试结果分报告显示。例如一份测试报告中仅包括Anr异常对应的测试结果,而像使用者显示多份测试报告(测试报告的份数对应于本次测试过程中出现的对应于关键字信息的测试异常的种类数量)。

本发明的较佳的实施例中,在测试报告中包括的用于表示每个测试异常的对应的测试结果均关联于相应的日志文件,即使用者可以根据测试报告中的内容查找到测试异常包括于哪个日志文件中,进而根据该日志文件直接定位到出错代码,便于使用者对代码进行维护。

本发明的较佳的实施例中,上述技术方案并非仅适用于批量对移动终端进行自动化测试的过程中,还可以适用于对单个移动终端执行自动化测试的过程中。

本发明的较佳的实施例中,在上述步骤S3中,形成测试报告后,根据测试报告中包括的不同的测试结果,对相应的测试异常进行处理。本发明的较佳的实施例中,首先根据测试报告判断本次自动化测试过程中是否出现测试异常,随后再对相应的测试异常进行处理。本发明的较佳的实施例中,处理可以由使用者手动进行,也可以预先设定相应程序由系统自动进行。

本发明的较佳的实施例中,在上述步骤S3中,形成测试报告后,向使用者显示测试报告。本发明的一个较佳的实施例中,如上文中所述,当使用者需要手动处理测试异常时,需要首先向使用者显示该测试报告。

综上所述,本发明技术方案在于:通过使用者预先设定的关键字信息的方式,查找并提取批量测试的移动终端产生的日志文件中带有上述预先设定的关键字信息的所有日志记录。根据所携带的关键字信息对这些日志记录进行分类处理并形成各自的测试结果。最终将这些测试结果整合在一测试报告中并向使用者显示,从而相对于传统的手动查找或者采用对应软件版本的固定工具进行查找的方式而言分析和处理日志的效率更高,处理结果也更准确,大大节省了系统资源。

本发明的较佳的实施例中,基于上述日志分析方法,现提供一种日志分析系统的技术方案。该日志分析系统的结构如图4所示,具体包括:

抓取单元1。本发明的较佳的实施例中,抓取单元1用于抓取所有移动终端产生的所有日志文件。

本发明的较佳的实施例中,批量测试的移动终端在执行自动化测试过程中会产生较多的日志文件。对日志进行分析的分析对象即为所有日志文件。因此抓取单元1在本次自动化测试结束后抓取本次测试过程中产生的所有日志文件并将其作为分析对象。

筛选单元2,连接上述抓取单元1。本发明的较佳的实施例中,筛选单元2中预设有相应的多个关键字信息。本发明的较佳的实施例中,所谓关键字信息,如上文所述,为使用者预设的信息,每个关键字信息对应于一类相应的测试异常。

本发明的较佳的实施例中,筛选单元2从提取得到的对应本次测试的所有日志文件中,对应预先设定的关键字信息,查找并提取日志文件中所有包括关键字信息的日志记录。例如,如上文中所述,查找包括关键字信息(Anr、Crash、Watchdog、JavaCrash以及Others中包括的其他关键字信息)的日志记录。本发明的较佳的实施例中,若使用者预先设定了其他关键字信息,则筛选单元根据使用者设定的关键字信息筛选出相应的日志记录。

处理单元3,连接上述筛选单元2。本发明的较佳的实施例中,处理单元3根据上述筛选单元2查找并提取的日志记录进行分类处理,并分别对应每类测试异常(也就是每个关键字信息)对日志记录进行分析和处理,形成对应的测试结果,最终将所有测试结果整合入一完整的测试报告中。

本发明的较佳的实施例中,上述处理单元3具体包括:

分类模块31。本发明的较佳的实施例中,分类模块31用于将筛选得到的日志记录依照不同的关键字信息进行分类,并输出相应的分类结果。本发明的较佳的实施例中,由于提取得到的日志记录数据量仍然较大,因此需要对其进行分类处理。例如,如上文中所述,按照关键字信息(Anr、Crash、Watchdog、JavaCrash以及Others中包括的其他关键字信息)对日志记录进行分类。对每一类别(对应一个关键字信息)的日志记录进行统一处理和分析,以得到一类测试异常的测试结果。本发明的较佳的实施例中,每个关键 字信息下关联多个子关键字信息,每个子关键字信息对应一个测试异常。换言之,每个关键字信息对应一类测试异常,一个关键字信息下关联的每个子关键字信息对应该类测试异常下的一个测试异常。对应一个关键字信息的测试结果中包括对应每个出现于日志记录中的子关键字信息的测试结果。

处理模块32,连接分类模块31。本发明的较佳的实施例中,处理模块32用于根据分类结果,分别对每类日志记录进行处理,以分别得到针对每类日志记录的相应的测试结果。本发明的较佳的实施例中,根据如上文中所述的分类结果,处理模块32分别进行处理。例如对于Anr异常的日志记录进行处理和分析,并最终得出针对Anr异常的测试结果,该测试结果中可以包括Anr异常出现的次数,每个Anr异常出现的时刻,以及其他用于表示一次Anr异常的具体信息。本发明的较佳的实施例中,对应于一个关键字信息(例如Anr)的测试结果中可以包括该关键字信息下所关联的子关键字信息的测试结果,例如对应于Anr的测试结果下包括针对Binder传输失败的测试结果,针对I/O操作异常的测试结果,以及针对进程意外终止的测试结果等。

整合模块33,连接处理模块32。本发明的较佳的实施例中,整合模块33用于将所有测试结果整合入一相应的测试报告中并输出。

本发明的较佳的实施例中,使用者可以选择将所有测试结果整合在一个测试报告中显示,同样可以选择将每个测试结果分开显示,即一个测试结果(对应一类测试异常)形成一个测试报告的方式向使用者显示。使用者可以自行选择上述两种显示方式,同样可以自行选择其他利于使用者查看的方式显示上述测试报告。

本发明的较佳的实施例中,上述日志分析系统中还包括:

执行单元4,连接处理单元3。本发明的较佳的实施例中,执行单元4用于根据测试报告中包括的不同的测试结果,对相应的测试异常进行处理。本发明的较佳的实施例中,当系统被设定为可以根据测试异常进行相应处理和/或修复时,执行单元4根据上述测试报告,分析其中的测试异常并定位到相应的代码所在,从而对测试异常进行相应的处理和/或修复。

显示单元5,连接处理单元3。本发明的较佳的实施例中,显示单元5用于向使用者显示上述测试报告。如上文中所述,向使用者显示的测试报告可以为整合所有测试结果的测试报告,也可以由使用者自行设定为利于使用 者观察的其他显示形式,例如将针对每个测试结果(对应一类测试异常)显示于一份独立的测试报告中。

本发明的较佳的实施例中,如上文中所述,上述测试报告中,还可以包括:

首次发生重启事件的时刻的均值和/或中值;本发明的较佳的实施例中,重启事件针对的关键字信息为Restart,使用者可以根据实际测试情况将Restart加入上述关键字信息中作为表示一类测试异常的信息;本发明的较佳的实施例中,上述均值和/或中值与上文中所述的类似,在此不再赘述。和/或

发生每类测试异常的对应的功能模块的名称;本发明的较佳的实施例中,所谓功能模块,实际为处于软件侧面上的模块;该条实质用于分析并得出测试异常具体由哪个模块产生的。和/或

发生每类测试异常的次数。

本发明的较佳的实施例中,上述分析首次出现测试异常/重启的均值和/或中值,可以将其作为判断本次测试针对的软件版本是否稳定的主要参考信息。

以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1