基于Android端的APP测试方法及系统与流程

文档序号:13031062阅读:380来源:国知局
基于Android端的APP测试方法及系统与流程

本发明涉及软件测试领域,尤其涉及一种基于android端的app测试方法及系统。



背景技术:

随着智能终端的发展,安装于智能终端的软件成为研发的重点,进而相应的软件测试也成为备受关注的技术。现有的软件测试方法多种多样,例如monkey测试,monkey测试是一种为了测试软件的稳定性、健壮性的快速有效方法;它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

然而,monkey测试存在以下缺陷:1、不可登录应用,只是模拟用户事件流,无法识别应用的登录界面及输入对应账号密码;而大多数应用都存在账号登录,无法深层次测试应用的稳定性,只停留在登录界面之前。2、不可定位崩溃,采用伪随机发送事件流,应用在发生崩溃时,用户无法准确知道是哪个界面哪个按钮产生的崩溃,对测试人员的崩溃复现及复查产生不了帮助。3、不可扩展,而现在的测试是多样性的,monkey是android中的命令行工具,无法进行扩展、结合其他测试类型,达不到多样测试的要求。4、不易使用,monkey是android中的命令行工具,一般调用方式都是通过pc端调用,需要手机与pc端连接,无法随时随地进行测试。5、测试范围不够全面,monkey是伪随机发送用户事件流,容易遗漏重要测试点。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于android端的app测试方法及系统,能够按照一定的顺序检测被测app中的控件功能。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于android端的app测试方法,包括:

s1:进入被测app的主界面;

s2:获取当前界面包含的控件;

s3:依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;

s4:依据所述列表选取布局等级最低的控件中所述权重最低的控件;

s5:依据选取的控件对应的类型进行相应的操作;

s6:进入下一界面,记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回s2,直至达到预设的测试时间。

本发明提供的另一个技术方案为:

第一跳转模块,用于进入被测app的主界面;

获取模块,用于获取当前界面包含的控件;

列表建立模块,用于依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;

选取模块,用于依据所述列表选取布局等级最低的控件中所述权重最低的控件;

控件测试模块,用于依据选取的控件对应的类型进行相应的操作;

第二跳转模块,用于进入下一界面;记录模块,用于记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回模块,用于返回所述获取模块,直至达到预设的测试时间。

本发明的有益效果在于:从被测app的主界面开始,每进入一个新界面,便获取新界面中的所有控件,实时依据控件本身的属性对该所有控件建立布局等级和权重的列表,得到一个基于布局等级和权重的控件检测顺序关系,由于大功能控件一般对应的权重和布局等级都比较低,因此从布局等级最低的控件开始遍历,对遍历到的控件进行与该控件类型对应的操作,以完成该控件的功能检测;布局等级相同则优先对权重较低的控件进行检测,保证大功能控件优先遍历;一个控件检测完成后将列表中该控件的权重加1,并标记为已遍历,从而后面遍历过程中会尽量避免遍历已经遍历过的控件,而保证优先遍历操作次数最少的控件,极大地加快了测试速度,提高了测试效率。

附图说明

图1为本发明一实施例的基于android端的app测试方法的流程图;

图2为本发明实施例一的基于android端的app测试方法的流程图;

图3为本发明一实施例的基于android端的app测试系统的结构图;

图4为本发明实施例三的基于android端的app测试系统的结构图;

图5为本发明实施例一的基于android端的app测试方法的界面树示意图;

图6为本发明实施例一的基于android端的app测试方法的设置关联的邮箱的示意图;

图7为本发明实施例一的基于android端的app测试方法的设置截屏及弱网络测试的示意图;

图8为本发明实施例一的基于android端的app测试方法的设置测试时间的示意图;

图9为本发明实施例一的基于android端的app测试方法的移动端查看测试结果示意图;

图10为本发明实施例一的基于android端的app测试方法的pc端查看报告示意图。

标号说明:

01、识别模块;02、自动登录模块;1、第一跳转模块;11、界面类型判定模块;2、获取模块;3、列表建立模块;4、选取模块;5、控件测试模块;6、第二跳转模块;7、报告生成模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:每进入一个界面,便对该界面中的控件依据布局等级和权重排序,依据所述排序对该界面中的控件进行有序的遍历,实现各控件的功能检测。

请参照图1,本发明提供

一种基于android端的app测试方法,包括:

s1:进入被测app的主界面;

s2:获取当前界面包含的控件;

s3:依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;

s4:依据所述列表选取布局等级最低的控件中所述权重最低的控件;

s5:依据选取的控件对应的类型进行相应的操作;

s6:进入下一界面,记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回s2,直至达到预设的测试时间。

进一步的,所述s1之后进一步包括:

s11:将当前界面与依据界面跳转信息实时建立的界面树比对,判断当前界面类型,所述界面类型包括新界面、已遍历界面、崩溃界面和死界面;

如果当前界面为新界面,将当前界面加入界面树,进行所述s2;

如果当前界面为已遍历界面,进行所述s4;

如果当前界面为崩溃界面,则记录崩溃信息,重启被测app,返回所述s1;

如果当前界面为死界面,则返回至上一界面,进行所述s2。

从上述描述可知,通过判断当前界面的类型,能够将新出现的界面及时加入界面树,确保界面树的完整性,又能有效避免已经遍历过的界面再次添加导致重复,还能及时发现崩溃、死机等异常情况。

进一步的,所述s1之前,还包括:

s01:识别被测app的启动页组件,依据所述启动页组件的类型进行相应操作,进入下一界面;

s02:依据预设的账号密码进行自动登录。

从上述描述可知,开始测试后,首先对启动页组件进行识别,识别后进行例如滑动、点击等相应的操作,从而能够进入登录界面,再依据预先设置的账号密码进行自动登录,无需再进行手动输入账号密码,实现一键式测试。

进一步的,所述s02具体为:

s021:判断当前界面是否为登录界面;

s022:若是,将预先建立的账号密码与登录界面的账号密码输入框相匹配进行自动登录;

若否,进入下一界面,返回所述s021。

从上述描述可知,对启动页控件进行操作后不一定马上进入登录界面,比如可能是主测界面,因此先对进入后的界面进行判断,比如检测是否存在两个输入框,是否存在“登录”“login”等字样;判定为登录界面后使用预设的账号密码匹配到对应的输入框即完成自动登录。

进一步的,每进入一个界面均进行截屏。

从上述描述可知,通过截屏能够实时记录界面跳转的情况,并且能够根据截屏的图片分析界面跳转异常的原因。

进一步的,遍历过程实时生成动态日志,并对所述动态日志进行实时解析。

从上述描述可知,动态日志是依据遍历过程的所有操作实时生成的,因此实时解析动态日志即可得到遍历过程进行的具体操作以及对应的结果,比如底层的代码和控件位置等,从而根据动态日志解析的内容即可知道测试出现异常时的原因,例如当被测app出现崩溃时,及时捕获产生的crash、anr和nativecrash,为开发定位产生崩溃的具体代码行数,其中,crash为通过sdk,使用java开发导致的崩溃;anr为applicationnotresponding,即程序未响应;nativecrash为通过androidndk,使用c/c++开发导致的崩溃。

进一步的,所述s6之后进一步包括:

s7:依据控件的操作结果、截屏以及动态日志解析的内容生成二级目录结构的报告,所述报告还包括代码级的崩溃日志和崩溃控件位置。

从上述描述可知,对控件遍历完成后,生成的报告包括控件的功能检测结果以及异常时截屏图片和异常原因,因此用户能够很直观地看出被测app的测试情况以及出现异常的原因,从而相应地采取解决措施。

请参照图3,本发明提供的另一个技术方案为:

一种基于android端的app测试系统,包括:

第一跳转模块1,用于进入被测app的主界面;

获取模块2,用于获取当前界面包含的控件;

列表建立模块3,用于依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;

选取模块4,用于依据所述列表选取布局等级最低的控件中所述权重最低的控件

控件测试模块5,用于依据选取的控件对应的类型进行相应的操作;

第二跳转模块6,用于进入下一界面;记录模块,用于记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回模块,用于返回所述获取模块,直至达到预设的测试时间。

进一步的,还包括:

界面类型判定模块11,用于将当前界面与依据界面跳转信息实时建立的界面树比对,判断当前界面类型,所述界面类型包括新界面、已遍历界面、崩溃界面和死界面;如果当前界面为新界面,将当前界面加入界面树,进入所述获取模块;如果当前界面为已遍历界面,则进入所述选取模块;如果当前界面为崩溃界面,则记录崩溃信息,重启被测app,返回所述s1;如果当前界面为死界面,则返回至上一界面,进入所述获取模块;

识别模块01,用于识别被测app的启动页组件,依据所述启动页组件的类型进行相应操作,进入下一界面;

自动登录模块02,用于依据预设的账号密码进行自动登录;

截屏模块,用于每进入一个界面均进行截屏;

动态日志生成模块,用于在遍历过程实时生成动态日志;

动态日志解析模块,用于对所述动态日志进行实时解析;

报告生成模块7,用于依据控件的操作结果、截屏以及动态日志解析的内容生成二级目录结构的报告,所述报告还包括代码级的崩溃日志和崩溃控件位置。

从上述描述可知,通过界面类型判定模块判断新进入的界面属于什么类型,从而能够将新出现的界面及时加入界面树,确保界面树的完整性,又能有效避免已经遍历过的界面再次添加导致重复,还能及时发现崩溃、死机等异常情况;通过识别模块识别出被测app的启动页组件,从而依据该启动页组件对应的类 型进行例如滑动点击的操作,从而进入登录界面;再由自动登录模块依据预先设置的账号密码进行自动登录,无需再进行手动输入账号密码,实现一键式测试;截屏模块、动态日志生成模块以及动态日志解析模块能够对遍历过程进行实时监控,从而能够及时发现异常,并根据截屏的图片和动态日志分析异常的原因。

实施例一

请参照图2、图5-10,本发明的实施例一提供了一种基于android端的app测试方法,能够对按照一定的顺序检测被测app中的控件功能。为了更好地说明本实施例的方案,首先对界面树、布局等级、权重以及几个界面类型的概念进行说明:

界面树采用树状形式记录,每个界面都存在一个或多个控件,每个控件都可跳转到对应界面,每个控件都具有其自身的属性信息,控件的属性信息中含有设置布局等级和权重所需的属性,根据布局等级和权重可对控件进行有序的遍历测试;本发明中布局等级越低的控件越优先进行遍历,布局等级相同则权重越低的控件越优先遍历,若权重和布局等级均相同则随机选取其中一个控件进行遍历。进入第一个界面时,直接建立界面树,以及对该第一个界面中的控件建立包含所述控件的布局等级和权重的列表,并对该列表进行排序;之后每跳转至一个界面,根据该界面的控件对界面树和所述列表进行实时的更新。

新界面是之前未记录在界面树中的界面;

已遍历界面分为相同界面和相似界面,相同界面即与之前记录在界面树中的某一界面完全相同的界面;相似界面则是与已经记录在界面树上的某个界面存在少量控件差异的界面,具体的,将与界面树上某个界面的activity名称相同且相同控件数大于80%的界面定义为相似界面,所述acitivty为android系统四大组件之一,用户与android应用程序交互的接口,可以看作是一个控件容器;

崩溃界面:某个界面跳转前操作的控件存在崩溃,则该界面为崩溃界面;

死界面:某个界面无可操作控件或已遍历完所有控件,期间无发生界面跳转,仍停留在该界面,则该界面为死界面。

下面是本实施例的具体步骤:

测试前:

设置关联的邮箱,并选择要测试的app,设置测试时间、账号密码、是否打开截屏以及弱网络(例如,限定网络速度在20kb/s以下),如图6至图8所示,本实施例为打开截屏和弱网络。

开始测试:

启动被测app,进入一个界面,进入后的界面即为当前界面,扫描该当前界面中包含的控件,判断该界面中是否存在启动页组件(例如:android.support.v4.view.viewpager、android.widget.imageswitcher、android.widget.viewflipper、android.widget.horizontalscrollview,这四个都是android组件,作用都是为了实现图片间切换或轮播功能)且控件数是否小于6,若是,则判定该界面为启动页;(常用的启动页控件一般也存在于其他界面,因此很容易在非启动页扫描到这些控件,而启动页控件数一般比较少;因此,如果同时满足存在启动页组件且控件数少则说明该界面为启动页);依据该启动页组件的类型进行相应的操作,比如是滑动组件,则进行滑动操作,点击组件则进行点击操作,进入下一界面;有时候启动页不止一页,则返回上述“扫描该当前界面中包含的控件,判断该界面中是否存在启动页组件”,直至启动页处理完毕,进入登录界面;

s1:使用上述测试前设置的账号密码进行自动登录,进入登录后的界面,即被测app的主界面;

s11:将当前界面与实时建立的界面树比对,判断当前界面类型,所述界面类型包括新界面、已遍历界面、崩溃界面和死界面;如果当前界面为新界面,将当前界面加入界面树,进行下面的s2;如果当前界面为已遍历界面,进行下面的s4;如果当前界面为崩溃界面,则记录崩溃信息,重启被测app,返回所述s1;如果当前界面为死界面,则返回至上一界面,进行下面的s2;

s2:获取当前界面包含的控件;

s3:依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;所述排序为越优先遍历的控件排在越前面;

s4:依据所述列表选取布局等级最低的控件中所述权重最低的控件;

s5:依据选取的控件对应的类型进行相应的操作;

s6:进入下一界面,记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回s2,直至达到预设的测试时间;

上述过程中,每进入一个界面均进行截屏,并且遍历过程实时生成动态日志,并对所述动态日志进行实时解析;

s7:依据所有控件的操作结果、截屏以及动态日志解析的内容生成二级目录结构的报告,所述报告还包括代码级的崩溃日志和崩溃控件位置;并将所述报告的链接推送至测试前关联的邮箱,从而用户可直接在移动端查看该测试结果,如图9所示,也可在pc端通过点击该链接查看所述报告,如图10所示。

下面以一个具体的实例说明进入主界面后的遍历过程:

如图5所示,假设主界面为第一个界面,则很明显,主界面属于新界面,建立界面树,将主界面加入界面树;然后进入界面1时,界面1为当前界面,判断界面1的界面类型;若界面1为新界面,则将界面1加入至上述界面树,若界面1是和主界面相同或相似,即为已遍历界面,则不再将界面1加入上述界面树,若界面1为崩溃界面,则重新启动被测app,并记录崩溃信息,控件崩溃数标识加1,界面1崩溃数标识加1,若界面1为死界面,则返回主界面;假设主界面包含控件1、控件2、控件3,获取该控件1、控件2、控件3;对控件1、控件2、控件3建立包括布局等级和权重的列表,并排序,其中布局等级最低的控件中权重最低的控件排在当前界面对应的列表区间的最前面,表示最先遍历;假设控件1、控件2、控件3具有如图5所示的布局等级和权重,则很明显,控件1排在列表的最前面;选取上述的控件1;假设控件1为滚动条控件,则对控件1进行滚动操作后,进入界面1,并在上述列表中将控件1的权重加1,标记控件1为已遍历控件;以此类推,继续对界面1进行界面类型判断等步骤,直至到达预设时间,遍历结束。要说明的是,若进入界面1,假设界面1包含控件1.1、控件1.2和控件1.3,如图5所示,在上述列表中对控件1.1、控件1.2和控件1.3建立包含布局等级和权重;并对每个控件关联其父级控件,记录在该列表中;例如,从图中可以看出,控件1是控件1.1的父级控件,因此将控件 1.1和控件1关联,记录在上述列表中;依此类推,对每一个控件向上关联其父级控件,直至每个控件的位置唯一;另外,实际场景中每个界面包含的控件不一定只有3个,这里只是举例说明。

实施例二

本发明实施例二为上述实施例一的基于android端的app测试方法的依据预设的账号密码进行自动登录方法,包括:

进入一个界面后,判断当前界面是否为登录界面;具体的,判断当前界面是否含有两个以上的输入框并且存在含有“登录”、“login”字样的文本或登录控件;所述登录控件为控件文本含“登录”、“进入”“login”等字样或资源标签属性含“login”字样的控件;

若是,将预先建立的账号密码与登录界面的账号密码输入框相匹配进行自动登录;具体的,有以下几种情况:(1)将预设账号与输入框文本对比,判断账号是否已存,是则直接匹配密码输入框;(2)只有两个输入框控件,通过输入框的ispassword属性判断是哪个是密码框,另外一个则是账号框;具体的输入框含有账号、账号、邮箱、手机、号码、qq、email等字样且ispassword=false,则该输入框为账号框;输入框属性ispassword=true为密码输入框,或者输入框文本含有密码、password字样为密码输入框;

若否,进入下一界面,按照上述方法继续判断该界面是否为登录界面。

实施例三:

如图4所示,本实施例提供了一种应用于上述实施例一中基于android端的app测试方法的系统,包括:

设置模块,用于设置关联的邮箱,并选择要测试的app,设置测试时间、账号密码、是否打开截屏以及弱网络(例如,限定网络速度在20kb/s以下);

识别模块01,用于识别被测app的启动页组件,依据所述启动页组件的类型进行相应操作,进入下一界面;

自动登录模块02,用于依据预设的账号密码使用上述实施例二中的自动登 录方法进行自动登录;

第一跳转模块1,用于进入被测app的主界面;

界面类型判定模块11,用于将当前界面与实时建立的界面树比对,判断当前界面类型,所述界面类型包括新界面、已遍历界面、崩溃界面和死界面;如果当前界面为新界面,将当前界面加入界面树,进入下述获取模块2;如果当前界面为已遍历界面,则进入下述选取模块4;如果当前界面为崩溃界面,则记录崩溃信息,重启被测app,返回所述第一跳转模块;如果当前界面为死界面,则返回至上一界面,进入下述获取模块2;

获取模块2,用于获取当前界面包含的控件;

列表建立模块3,用于依据所述控件的属性信息建立包括控件的布局等级和权重的列表,并排序;

选取模块4,用于依据所述列表选取布局等级最低的控件中所述权重最低的控件;

控件测试模块5,用于依据选取的控件对应的类型进行相应的操作;

第二跳转模块6,用于进入下一界面;记录模块,用于记录所述控件的操作结果,并在列表中将所述选取的控件的权重加1,同时标记为已遍历;返回模块,用于返回所述获取模块,直至达到预设的测试时间;

截屏模块,用于每进入一个界面均进行截屏;

动态日志生成模块,用于在遍历过程实时生成动态日志;

动态日志解析模块,用于对所述动态日志进行实时解析;

报告生成模块7,用于依据所有控件的操作结果、截屏以及动态日志解析的内容生成二级目录结构的报告,所述报告还包括代码级的崩溃日志和崩溃控件位置;

推送模块,用于将所述报告推送至上述关联的邮箱。

综上所述,本发明提供的基于android端的app测试方法及系统,测试时能够使用预设的账号密码进行自动登录,进入app主界面,实现一键式测试,自动化程度高;并且每进入一个界面,自动建立该界面中控件的布局等级和权重排序,依据该排序有序地对控件进行遍历,实现各控件的功能检测,保证大 功能控件优先遍历;每一个控件遍历后该控件权重加1,保证优先遍历未遍历过的控件,提高了遍历效率;界面跳转时均会进行截屏,且遍历过程中实时生成动态日志,并对该动态日志进行实时解析,从而根据控件的功能检测结果、截屏图片以及动态日志解析内容生成相应的报告,因此从该报告即可直观的得到测试结果、异常情况以及异常原因。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

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