Andriod应用程序的测试方法和装置制造方法

文档序号:6500519阅读:100来源:国知局
Andriod应用程序的测试方法和装置制造方法
【专利摘要】提供了一种Andriod应用程序的测试方法和装置。所述测试方法包括:(a)收集测试日志;(b)启动用于模拟对被测应用程序进行操作的测试工具;(c)如果确定被测应用程序崩溃,则查找测试日志中与被测应用程序相关的错误日志信息,截取并保存错误日志信息;(d)在错误日志分析线程截取并保存错误日志信息之后,关闭被测应用程序,并返回步骤(a);(e)如果确定被测应用程序没有崩溃,则在到达预定的测试时间之后,分析保存的错误日志信息,并生成测试结果报告。
【专利说明】Andr1d应用程序的测试方法和装置

【技术领域】
[0001]本发明涉及Andr1d操作系统平台的应用程序开发的【技术领域】。更具体地讲,涉及一种能够在Andr1d操作系统平台上自动运行应用程序测试并记录和分析测试结果的方法和装置。

【背景技术】
[0002]谷歌(Google)公司的Andr1d是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机和平板电脑。根据2012年11月数据显示,Andr1d占据全球智能手机操作系统市场76%的份额。作为智能终端的重要操作系统平台之一,Andr1d操作系统平台上的软件应用程序开发是当前热点之一。
[0003]软件产品的测试是使用人工或自动手段来运行或测试某个软件产品,其目的是为了检验该软件产品是否满足规定的需求并得到相关的错误日志信息。在测试Andr1d应用程序(app)的稳定性时,由于有些应用程序需要在终端平台上长期运行,故必须保证应用程序在长时间内运行无错误或者崩溃,因此对于这类型的应用程序稳定性测试时间长达8至10小时。
[0004]目前,Andr1d提供的测试工具monkey被广泛用于Andr1d应用程序的测试。通过在monkey中设置运行时间参数,可以在长时间内模拟人在屏幕上进行随机操作。如果出现错误或者崩溃,通过记录的日志信息可以找到导致错误或者崩溃的原因。
[0005]然而,对于这种方法,当monkey进行随机操作之时,一旦出现错误或者崩溃,monkey操作就会被中断,从而导致整个稳定性测试终止。此时,若设置-1gnore-crashes参数,则monkey会继续向系统发送事件。但这时由于没有对被测程序做一些初始化操作,可能会出现一些错误,例如,重复的内存泄露错误。
[0006]由于稳定性测试的时间周期长,为了提高测试工作的效率,需要实现稳定性测试,在不需要人参与的情况下自动进行,并且完成错误日志信息的收集。
[0007]因此必须开发新的稳定性工作,提升测试效率,主动释放内存,并且使得测试过程自动化和测试时间可控制。


【发明内容】

[0008]根据本发明的一方面,提供了一种Andr1d应用程序的测试方法,其特征在于包括以下步骤:(a)收集测试日志;(b)启动用于模拟对被测应用程序进行操作的测试工具;(C)如果确定被测应用程序崩溃,则查找测试日志中与被测应用程序相关的错误日志信息,截取并保存错误日志信息;(d)在错误日志分析线程截取并保存错误日志信息之后,关闭被测应用程序,并返回步骤(a) ;(e)如果确定被测应用程序没有崩溃,则在到达预定的测试时间之后,分析保存的错误日志信息,并生成测试结果报告。
[0009]根据本发明的一方面,在测试方法的步骤(a),将收集的测试日志记录到预定文件中。
[0010]根据本发明的一方面,在测试方法的步骤(C),使用java中的string类的startwith命令来查找测试日志中的错误日志信息。
[0011]根据本发明的一方面,在测试方法的步骤(C),查找测试日志中错误级别为Eiror和Warning的错误日志信息。
[0012]根据本发明的一方面,在测试方法的步骤(d),获取终端设备中的当前进程列表,通过检索当前进程列表以获得与被测应用程序对应的程序ID(PID),并杀死与PID对应的被测应用程序的进程。
[0013]根据本发明的一方面,在测试方法的步骤(e),测试进程过滤重复的错误日志信息来生成测试结果报告。
[0014]根据本发明的一方面,测试方法还包括:将测试结果报告发送到预定邮箱。
[0015]根据本发明的另一方面,还提供了一种Andr1d应用程序的测试装置,其特征在于包括:日志收集模块,受控于测试控制模块,在测试开始时收集在测试过程中产生的日志;错误日志分析模块,受控于测试控制模块,在被测应用程序崩溃时分析线程查找测试日志中与被测应用程序相关的错误日志信息,截取并保存错误日志信息;测试控制模块,在测试开始时启动用于模拟对被测应用程序进行操作的测试工具,在错误日志分析模块保存错误日志信息之后关闭被测应用程序,如果没有到达预定的测试时间,则控制日志收集模块、错误日志分析模块、测试工具和被测应用程序继续进行测试,在到达预定的测试时间之后停止测试;测试结果生成模块,根据测试控制模块的控制在测试完成之后根据保存的错误日志信息生成测试结果报告。
[0016]根据本发明的另一方面,日志收集模块将收集的测试日志记录到预定文件中。
[0017]根据本发明的另一方面,错误日志分析模块使用java中的string类的startwith命令来查找测试日志中的错误日志信息。
[0018]根据本发明的另一方面,错误日志分析模块查找测试日志中错误级别为Error和Warning的错误日志信息。
[0019]根据本发明的另一方面,测试控制模块获取终端设备中的当前进程列表,通过检索当前进程列表以获得与被测应用程序对应的程序ID(PID),并杀死与PID对应的被测应用程序的进程。
[0020]根据本发明的另一方面,测试结果生成模块过滤重复的错误日志信息来生成测试结果报告。
[0021]根据本发明的另一方面,测试结果生成模块将测试结果报告发送到预定邮箱。

【专利附图】

【附图说明】
[0022]通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
[0023]图1是示出根据本发明实施例的Andr1d应用程序的测试方法的流程图;
[0024]图2是示出根据本发明实施例的Andr1d应用程序的测试装置的框图。

【具体实施方式】
[0025]下面提供参照附图进行的描述以有助于全面理解如权利要求及其等同物所限定的本发明的示例性实施例。所述描述包括各种详细的细节以有助于理解,而这些描述将被认为仅为示例性的。因此,本领域的普通技术人员将意识到在不脱离本发明的范围和精神的情况下可做出在此描述的各种改变和变型。另外,为了清晰和简洁,可省略对公知功能和构造的描述。
[0026]图1是示出根据本发明实施例的Andr1d应用程序的测试方法的流程图。
[0027]在设置好应用程序的测试平台之后,S卩,安装被测应用程序之后,开始启动根据本发明实施例的测试进程。这里,根据本发明实施例的测试进程可以是java编写的程序。
[0028]在根据本发明实施例的测试进程被启动之后,在步骤S101,收集测试日志。例如,根据本发明实施例的测试进程可启动一个日志收集线程以用于收集在测试过程中产生的日志。例如,日志收集线程可通过使用adb shell logcat >“XXX”的形式的命令来将收集的日志记录到文件名为“XXX”的文件中。
[0029]接下来,在步骤S103,测试进程启动用于模拟对被测应用程序的操作的工具,从而对被测应用程序进行测试操作。通常,可采用monkey工具来模拟对于被测应用程序的操作。当然,本领域的技术人员可采用任何已知的测试工具来模拟对于被测应用程序的操作。下面将以monkey工具为示例进行说明。当测试进程启动monkey工具来模拟对于被测应用程序的随机操作时,例如可采用如下的命令来设置需要模拟的操作:adb-d shellmonkey-s5-p “YYYY”一throttle 1000—pct_touch43—pct_mot1nl8—pct_trackballl5—pct~nav5—pct-majomavlO—pct_appswitch2—pct-anyeventO—kill-process—after—error—monitor-native-crashes-v-v “测试次数”。其中,-s表示伪随机数生成器的seed值,-ρ“ΥΥΥΥ”表示被测应用程序的需要启动的activity的包的名字,一throttle表示在事件之间插入固定延迟,一pct-touch表示调整触摸事件的百分比,一pct-mot1n表示调整动作事件的百分比,一pct-trackball表示调整轨迹事件的百分比,一pct-nav表示调整基本导航事件的百分比,一pct-majornav表示调整主要导航事件的百分比,一pct-appswitch表示调整启动Activity的百分比,一pct-anyeventO表示调整其它类型事件的百分It, —ki11-process-after-error表示当monkey由于错误而停止时通知系统停止发生错误的进程,一monitor-native-crashes表示监视并报告Android系统中本地代码的崩溃事件,“测试次数”为monkey工具在测试过程中发送的事件的个数。
[0030]接下来,在步骤S105,确定被测应用程序是否崩溃。如果被测应用程序没有崩溃,则进行到步骤S113以确定从测试开始是否达到预定的测试时间。如果确定被测应用程序崩溃,则进行到步骤S107。
[0031]在步骤S107,测试进程查找测试日志中与被测应用程序相关的错误日志信息,错误日志信息包括与被测应用程序的崩溃有关的信息。这里,测试进程可启动错误日志分析线程,错误日志分析线程可使用java中的string类的startwith命令来查找日志中的错误日志信息。根据本发明实施例,错误日志分析线程查找日志中错误级别为Error和Warning的错误日志信息。
[0032]然后,在步骤S109,将获取的错误日志信息截取下来并保存到默认或指定位置的文件中。
[0033]然后,在步骤S111,根据本发明实施例的测试进程关闭被测应用程序。例如,可通过使用adb shell ps命令来获取终端设备中的当前进程列表,通过检索当前进程列表获得与被测应用程序对应的程序ID (PID),并通过adb shell kill “被测应用程序对应的PID”命令来杀死被测应用程序的进程,从而实现关闭被测应用程序的目的。
[0034]在执行了上述操作之后,返回步骤S101,并继续执行步骤S103和S105。通过以上操作,可以实现monkey工具的中断后的自动重启,并且由于重新启动和初始化被测应用程序,可以防止内存泄露。
[0035]接下来,在运行了预定的测试时间之后,如果在步骤S113确定已经到达了预定的测试时间,则进行到步骤S115,在最后一次monkey命令运行完之后,关闭测试进程。这里,可由用户预先设置好测试的运行时间。
[0036]然后,在步骤S117,测试进程分析之前收集到的错误日志信息,并生成测试结果报告。这里,在生成的测试结果报告时可过滤重复的错误日志信息。可选地,测试进程在生成测试结果报告之后,还可将测试结果报告通过电子邮件发送到指定的邮箱。这样,即使在测试完成之后测试人员没有在现场,也可以第一时间收到测试结果。
[0037]下面将参照图2来描述根据本发明实施例的Android应用程序的测试装置200的示意图。根据本发明实施例的Android应用程序的测试装置可驻留在待测试的终端设备上,也可驻留在与终端设置连接的主机上。
[0038]如图2所示,根据本发明实施例的Android应用程序的测试装置200可包括:日志收集模块210、错误日志分析模块220、测试结果生成模块230、计时模块240和测试控制模块250。应注意,本发明实施例中的测试装置200的各个模块可以合并为更少的模块,或者进一步划分为更多的模块。
[0039]当开始进行测试时,测试控制模块250控制日志收集模块210收集在测试过程中产生的日志。日志收集模块210可通过使用adb shell logcat > “XXX”的命令来将收集的日志记录到文件名为“XXX”的文件中。
[0040]同时,测试控制模块250启动用于模拟对于被测应用程序的操作的测试工具(例如,monkey测试工具),从而对被测应用程序进行预设的模拟操作。在模拟的操作过程中,测试控制模块250确定被测应用程序是否崩溃。如果确定被测应用程序崩溃,则测试控制模块250通知日志收集模块210通知错误日志分析模块220分析测试日志中的错误日志信息。错误日志分析模块220截取错误日志信息并将错误日志信息保存到默认或指定位置的文件中。然后,错误日志分析模块220通知测试控制模块250关闭被测应用程序。
[0041]随后,测试控制模块250控制日志收集模块210重新开启日志收集,并重新启动测试工具和被测应用程序。
[0042]在从最初运行测试开始,如果计时模块240的计时到达预定的测试时间,则通知测试控制模块250终止测试过程。这时,测试控制模块250在测试工具的最后一个命令完成之后停止测试,并且通知测试结果生成模块230生成测试结果报告。测试结果生成模块230可过滤测试结果报告中重复的错误日志信息,并可将生成的测试结果报告发送到指定的电子邮箱。
[0043]本发明的测试方法通过错误(崩溃)重启机制解决了现有的Android应用程序测试过程中遇到崩溃时的停止问题。另外,本发明通过主动释放内存,解决了测试过程中由于程序占用过多内存导致影响被测程序正常运行的问题。进一步地,本发明通过对日志信息的收集及过滤,解决了测试过程中的日志分析问题,并且本发明使稳定性测试和分析收集错误信息的过程完全自动化。
[0044]根据本发明的方法可被记录在包括执行由计算机实现的各种操作的程序指令的计算机可读介质中。介质也可以只包括程序指令或者包括与程序指令相结合的数据文件、数据结构等。计算机可读介质的例子包括磁介质(例如硬盘、软盘和磁带);光学介质(例如CD-ROM和DVD);磁光介质(例如,光盘);以及特别配制用于存储并执行程序指令的硬件装置(例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。介质也可以是包括传输规定程序指令、数据结构等的信号的载波的传输介质(例如光学线或金属线、波导等)。程序指令的例子包括例如由编译器产生的机器码和包含可使用解释器由计算机执行的高级代码的文件。
[0045]尽管已经参照本发明的示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
【权利要求】
1.一种Andr1d应用程序的测试方法,其特征在于包括以下步骤: (a)收集测试日志; (b)启动用于模拟对被测应用程序进行操作的测试工具; (c)如果确定被测应用程序崩溃,则查找测试日志中与被测应用程序相关的错误日志信息,截取并保存错误日志信息; (d)在错误日志分析线程截取并保存错误日志信息之后,关闭被测应用程序,并返回步骤(a); (e)如果确定被测应用程序没有崩溃,则在到达预定的测试时间之后,分析保存的错误日志信息,并生成测试结果报告。
2.如权利要求1所述的测试方法,其中,在步骤(a),将收集的测试日志记录到预定文件中。
3.如权利要求1所述的测试方法,其中,在步骤(c),使用java中的string类的startwith命令来查找测试日志中的错误日志信息。
4.如权利要求1所述的测试方法,其中,在步骤(C),查找测试日志中错误级别为Eiror和Warning的错误日志信息。
5.如权利要求1所述的测试方法,其中,在步骤(d),获取终端设备中的当前进程列表,通过检索当前进程列表以获得与被测应用程序对应的程序ID(PID),并杀死与PID对应的被测应用程序的进程。
6.如权利要求1所述的测试方法,其中,在步骤(e),测试进程过滤重复的错误日志信息来生成测试结果报告。
7.如权利要求1所述的测试方法,还包括:将测试结果报告发送到预定邮箱。
8.一种Andr1d应用程序的测试装置,其特征在于包括: 日志收集模块,受控于测试控制模块,在测试开始时收集在测试过程中产生的日志; 错误日志分析模块,受控于测试控制模块,在被测应用程序崩溃时分析线程查找测试日志中与被测应用程序相关的错误日志信息,截取并保存错误日志信息; 测试控制模块,在测试开始时启动用于模拟对被测应用程序进行操作的测试工具,在错误日志分析模块保存错误日志信息之后关闭被测应用程序,如果没有到达预定的测试时间,则控制日志收集模块、错误日志分析模块、测试工具和被测应用程序继续进行测试,在到达预定的测试时间之后停止测试; 测试结果生成模块,根据测试控制模块的控制在测试完成之后根据保存的错误日志信息生成测试结果报告。
9.如权利要求8所述的测试装置,其中,日志收集模块将收集的测试日志记录到预定文件中。
10.如权利要求8所述的测试装置,其中,错误日志分析模块使用java中的string类的startwith命令来查找测试日志中的错误日志信息。
11.如权利要求8所述的测试装置,其中,错误日志分析模块查找测试日志中错误级别为Error和Warning的错误日志信息。
12.如权利要求8所述的测试装置,其中,测试控制模块获取终端设备中的当前进程列表,通过检索当前进程列表以获得与被测应用程序对应的程序ID(PID),并杀死与PID对应的被测应用程序的进程。
13.如权利要求8所述的测试装置,其中,测试结果生成模块过滤重复的错误日志信息来生成测试结果报告。
14.如权利要求8 所述的测试方法,测试结果生成模块将测试结果报告发送到预定邮箱。
【文档编号】G06F11/36GK104050075SQ201310076644
【公开日】2014年9月17日 申请日期:2013年3月11日 优先权日:2013年3月11日
【发明者】许仙明, 刘艳君 申请人:百度国际科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1