CN105512023B - 一种Monkey测试方法及装置 - Google Patents
一种Monkey测试方法及装置 Download PDFInfo
- Publication number
- CN105512023B CN105512023B CN201410505118.XA CN201410505118A CN105512023B CN 105512023 B CN105512023 B CN 105512023B CN 201410505118 A CN201410505118 A CN 201410505118A CN 105512023 B CN105512023 B CN 105512023B
- Authority
- CN
- China
- Prior art keywords
- coordinate
- control
- display interface
- click
- control coordinate
- 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
Landscapes
- User Interface Of Digital Computer (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种Monkey测试方法及装置,给待测试应用软件预先创建控件坐标数据库,从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;依次触发所获取的控件坐标;响应触发每个所述控件坐标所产生的伪输入事件,当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。从所述控件坐标数据库中选取控件坐标对待测试应用软件进行Monkey测试,由于每个控件坐标被触发时都能够产生伪输入事件,利用所述控件坐标数据库中的控件坐标进行Monkey测试执行有效,避免触发随机生成的点击坐标无法产生伪输入事件导致Monkey测试失效的问题,提高Monkey测试的执行效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种Monkey测试方法及装置。
背景技术
目前,基于Android、IOS等操作平台开发的应用软件越来越多,用户在使用应用软件的过程中,当用户所点击的操作控件区域所关联的内部程序有bug时,应用软件会由于程序出错而出现闪退等问题。为了保证应用软件在使用过程中的稳定性,尽量避免由于应用软件内部程序的bug所造成的闪退等问题,对所开发的应用软件进行Monkey测试,修复应用软件内部程序中的bug。
Monkey是可以运行在模拟器里或实际设备中的程序,它向系统发送随机的伪输入事件流(如按键输入、触摸屏输入以及手势输入等),实现对正在开发的应用程序进行稳定性测试。现有技术中,Monkey测试程序随机生成一个应用软件界面上的点击坐标,自动触发所述点击坐标所产生的输入操作作为一个伪输入事件,若此时应用软件的程序出错闪退,则表明应用软件与所述点击坐标区域关联的内部程序有bug,则技术人员找出上述内部程序中的bug并进行修复。
采用上述方法进行Monkey测试时,只有点击坐标为应用软件界面上的操作控件区域内的坐标时,自动触发所述点击坐标才能产生伪输入事件。由于现有技术中点击坐标是Monkey测试程序随机生成的,当点击坐标不是应用软件界面上操作控件区域内的坐标时,无法触发伪输入事件,此次Monkey测试执行无效。一般情况下,应用软件界面上有大量的非操作控件区域,触发伪输入事件的几率低,降低Monkey测试执行效率。
发明内容
本发明解决的技术问题在于提供一种Monkey测试方法及装置,从预设创建的控件坐标数据库中选取被触发时能够产生伪输入事件的控件坐标,避免使用随机生成的点击坐标进行Monkey测试时,无法产生伪输入事件导致Monkey测试无效的问题。
为此,本发明解决技术问题的技术方案是:
一种Monkey测试方法,给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件,所述方法包括:
从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;
依次触发所获取的控件坐标;
响应触发每个所述控件坐标所产生的伪输入事件;
当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
可选的,所述给待测试的应用软件预先创建控件坐标数据库包括:
获取待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标;
存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库还包括:
给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同;
依次触发每个第一点击坐标;
判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面;
当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库包括:
按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标;
依次触发每个第二点击坐标;
判断触发所述第二点击坐标后是否产生伪输入事件,使得被触发的第二点击坐标所在的显示界面跳转到新显示界面;
当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库还包括:
存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
可选的,所述方法还包括:
生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标;
依次触发每个第三点击坐标;
判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面;
当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
可选的,所述方法还包括:
当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
一种Monkey测试装置,所述装置包括:
创建模块,用于给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件;
选取模块,用于从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;
第一触发模块,用于依次触发所获取的控件坐标;
第一判断模块,用于响应触发每个所述控件坐标所产生的伪输入事件;
第一捕获模块,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
可选的,所述创建模块包括:
获取单元,用于获取待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标;
第一存储单元,用于存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述创建模块还包括:
第一生成单元,用于给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同;
第一触发单元,用于依次触发每个第一点击坐标;
第一判断单元,用于判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面;
第二存储单元,用于当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述创建模块包括:
第二生成单元,用于按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标;
第二触发单元,用于依次触发每个第二点击坐标;
第二判断单元,用于判断触发所述第二点击坐标后是否产生伪输入事件,使得被触发的第二点击坐标所在的显示界面跳转到新显示界面;
第三存储单元,用于当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述创建模块还包括:
第四存储单元,用于存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
可选的,所述装置还包括:
生成模块,用于生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标;
第二触发模块,用于依次触发每个第三点击坐标;
第二判断模块,用于判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面;
第三判断模块,用于当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
第二捕获模块,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
可选的,所述装置包括:
存储模块,用于当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
通过上述技术方案可知,本发明有如下有益效果:
本发明提供了一种Monkey测试方法及装置,给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件,从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;依次触发所获取的控件坐标;响应触发每个所述控件坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。从所述控件坐标数据库中选取控件坐标对待测试应用软件进行Monkey测试,由于每个控件坐标被触发时都能够产生伪输入事件,利用所述控件坐标数据库中的控件坐标进行Monkey测试执行有效,避免触发随机生成的点击坐标无法产生伪输入事件导致Monkey测试失效的问题,提高Monkey测试的执行效率。若待测试应用软件在响应伪输入事件出错闪退时,则所调用的应用程序有bug,捕获所调用的应用程序进行修复。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种Monkey测试方法实施例一流程图;
图2为本发明一种Monkey测试方法实施例二流程图;
图3为本发明一种Monkey测试方法实施例三流程图;
图4为待测应用软件的一个显示界面示意图;
图5为本发明一种Monkey测试装置实施例四结构示意图;
图6为本发明一种Monkey测试装置实施例五结构示意图;
图7为本发明一种Monkey测试装置实施例六结构示意图;
图8为本发明一种服务器结构示意图。
具体实施方式
本发明公开了一种Monkey测试方法及装置,利用所述控件坐标数据库中的控件坐标进行Monkey测试,每个控件坐标被触发时都会产生伪输入事件,提高Monkey测试的执行效率。
下面结合附图对本发明具体实施例进行详细说明。
实施例一
图1为本发明一种Monkey测试方法实施例一流程图,所述方法包括:
步骤101:给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件。
所述控件坐标数据库存储有控件坐标及此控件坐标所在的显示界面的标识之间的对应关系。一般情况下,对于同一个坐标来说,在一个显示界面为控件坐标,而在另一个显示界面可能为非控件坐标。因此,本发明所述的控件坐标指的是在此坐标所在的显示界面上被触发时能够产生伪输入事件的坐标。其中,所述显示界面的标识可以是显示界面的名称、显示界面的编号或显示界面的代码等。
其中,触发控件坐标所产生的伪输入事件指的是,触发此控件坐标时,此控件坐标所在的显示界面会跳转到另一个显示界面,即当前显示界面会发生变化。实际应用中,可以通过Monkey测试的执行日志判断触发一个坐标时,当前显示界面是否发生变化,当前显示界面发生变化时表示触发上述坐标会产生伪输入事件,从而判定上述坐标是位于可操作控件区域的控件坐标。
每次Monkey测试中,只有当前显示界面上被选定的坐标被触发产生伪输入事件时,此次测试才被认为是有效的Monkey测试。若当前显示界面上被选定的坐标被触发时未产生伪输入事件,则表示此次测试为无效的Monkey测试。由于预先创建的控件坐标数据库中存储的每个控件坐标在其所在的显示界面上被触发时都能够产生伪输入事件,因此,将所述控件坐标数据中的当前显示界面上的控件坐标作为Monkey测试时所选定的坐标时,每个Monkey测试都能够触发伪输入事件,Monkey测试执行有效。
所述控件坐标数据库是预先创建好的,对每个待测试应用软件来说创建一次即可,对一个待测试应用软件所执行的多次Monkey测试无需重复创建。所述控件坐标数据库中所存储的每一个控件坐标都能在此控件坐标所在的显示界面上被触发产生一个伪输入事件。
步骤102:从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
步骤101中已经说明,对于同一个坐标来说,在一些显示界面为控件坐标,在另外一些显示界面为非控件坐标。因此,在描述一个坐标是否为控件坐标时,需要指定此坐标是在哪个显示界面上。对待测试应用软件进行Monkey测试时,可以采用显示界面横向测试,也可以采用显示界面纵向测试。
显示界面横向测试指的是,将待测试应用软件的一个显示界面作为当前显示界面,选取当前显示界面上的多个控件坐标,触发每个控件坐标执行Monkey测试。由于触发任意一个控件坐标都会产生伪输入事件,当前显示界面都会跳转到另一个新显示界面,因此,每次执行下一个Monkey测试时,都需要从新显示界面返回当前显示界面,触发当前显示界面的另一个控件坐标,重复执行Monkey测试,直至当前显示界面上的所选取的控件坐标全部被触发,则当前显示界面上的Monkey测试执行完毕,再转到另一个显示界面,选取另一个显示界面上的多个控件坐标,执行另一个显示界面的Monkey测试。
显示界面纵向测试指的是,选取待测试应用软件的一个显示界面为当前显示界面,选取当前显示界面上任意一个控件坐标,触发此控件坐标执行Monkey测试。由于触发此控件坐标会产生伪输入事件,当前显示界面跳转到另一个新显示界面。此时,与显示界面横向测试不同的是,不再返回当前显示界面,而是从新显示界面上选取任意一个控件坐标对此新显示界面进行Monkey测试。
对于显示界面横向测试来说,每次返回当前显示界面进行Monkey测试,而对于显示界面纵向测试来说,每次在新显示界面上进行Monkey测试。一般情况下,实际应用中多采用显示界面横向测试,下面以采用显示界面更像测试为例进行说明。
步骤103:依次触发所获取的控件坐标。
进行Monkey测试时,从控件坐标数据库中选取当前显示界面的标识所对应的一部分或所有的控件坐标。依次触发所选取的控件坐标,每触发一个控件坐标即看作执行一次Monkey测试。按照预定的顺序,依次触发所选取的控件坐标,对当前显示界面执行多次Monkey测试。触发控件坐标是模拟用户点击所述控件坐标所属的可操作控件的操作。
步骤104:响应触发每个所述控件坐标所产生的伪输入事件。
执行Monkey测试时,由于控件坐标在当前显示界面上的可操作控件的坐标区域内,触发控件坐标会产生一个伪输入事件,应用软件在响应伪输入事件时调用相应的应用程序。若所调用的应用程序有bug,待测试应用软件响应所述待测试应用软件会出错闪退;如果所调用的应用程序没有问题,当前显示界面跳转到另一个新显示界面,然后,再从新显示界面返回当前显示界面,触发所选取的下一个控件坐标产生另一个伪输入事件,执行下一个Monkey测试。
步骤105:当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
当所述待测试应用软件出错闪退时,表示响应触发控件坐标所产生的伪输入事件所调用的应用程序有bug,待测应用软件在响应所产生的伪输入事件时,通过堆栈(方法调用关系栈)调用相应的应用程序。当待测试应用软件出错闪退时,可以从堆栈中捕获造成待测应用软件闪退时所调用的应用程序。技术人员可以对捕获的应用程序中的bug进行修复。
由上述内容可知,本发明有如下有益效果:
给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件,从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;依次触发所获取的控件坐标;响应触发每个所述控件坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。从所述控件坐标数据库中选取控件坐标对待测试应用软件进行Monkey测试,由于每个控件坐标被触发时都能够产生伪输入事件,利用所述控件坐标数据库中的控件坐标进行Monkey测试执行有效,减少触发随机生成的点击坐标无法产生伪输入事件导致Monkey测试执行无效的问题,提高Monkey测试的执行效率。
实施例二
图2为本发明一种Monkey测试方法实施例二流程图,实施例二与实施例一相比,获取显示界面基本操作控件的坐标创建控件坐标数据库,所述方法包括:
步骤201:获取待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标。
一般情况下,每个应用软件有多个显示界面,每个显示界面上有多个基本操作控件,获取每个显示界面上的基本操作控件的坐标作为此显示界面的控件坐标。由于每个控件坐标是显示界面上基本操作控件的位置数据信息,触发控件坐标相当于点击显示界面上的基本操作控件,可以产生伪输入事件,执行有效的Monkey测试。
步骤202:存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
在实施例一中已经进行了说明,一般情况下,对于同一个坐标来说,在一个显示界面为控件坐标,而在另一个显示界面可能为非控件坐标。本发明所述的控件坐标指的是在此坐标所在的显示界面上被触发时能够产生伪输入事件的坐标。因此,所述控件坐标数据库中存储的是控件坐标与此控件坐标所在的显示界面名称之间的对应关系。每个显示界面的标识对应于多个控件坐标,一个控件坐标有可能只与一个显示界面的标识对应,也有可能与多个显示界面的标识对应。
可选的,存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
控件坐标数据库中还可以存储每个控件坐标被触发伪输入事件后,控件坐标所在的显示界面所跳转的新显示界面的标识。这样,当前显示界面的Monkey测试结束后,对待测试应用软件的另一个显示界面进行Monkey测试时,便于选择触发相应的控件坐标跳转至所要进行测试的显示界面。
步骤203:给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同。
待测试应用软件的显示界面上的可操作控件包括基本操作控件和自绘控件两种。其中,基本操作控件包括待测试应用软件系统中定义的基础控件,或者基于待测试应用软件的基础控件所生成的操作控件等。自绘控件为显示界面上的没有父控件的控件。步骤201仅能获取待测试应用软件的显示界面上的基本操作控件,不能获取自绘控件。
因此,采用步骤201和步骤202所提供的方法所创建的控件坐标数据库中,存储的控件坐标只有基本操作控件的坐标,没有自绘控件的坐标。自绘控件触发自绘控件的坐标也会产生伪输入事件,也可以实现有效的Monkey测试。
因此,给待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标。其中,第一预设数量可以根据实际情况自行设定,这里不进行具体限定;每个显示界面上的第一点击坐标是与此显示界面上所获取的基本操作控件的坐标不同的坐标。这里“第一点击坐标”中的“第一”并不代表顺序,而是对一类点击坐标的统称。
步骤204:依次触发每个第一点击坐标。
步骤205:判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面,如果是,执行步骤206;如果否,返回步骤204,触发下一个第一点击坐标。
步骤206:将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
一般情况下,对于待测试应用软件的一个显示界面来说,第一点击坐标都是随机生成的,是与控件坐标数据库中此显示界面的标识所对应的控件坐标都不相同的坐标。
触发第一点击坐标后,判断是否产生伪输入事件,即从测试日志中判断第一点击坐标所在的显示界面是否跳转到另一个新显示界面。如果触发第一点击坐标产生伪输入事件,则第一点击坐标为显示界面上的自绘控件,将第一点击坐标作为控件坐标,并将此控件坐标及其所在的显示界面的标识的对应关系存储至控件坐标数据库。如果触发第一点击坐标未产生伪输入事件,返回执行步骤204,触发下一个第一点击坐标。
采用步骤201至步骤206所生成的控件坐标数据库与只采用步骤201和步骤202生成的控件坐标数据库相比,进一步丰富了控件坐标数据库中控件坐标的个数。通过生成显示界面中与控件坐标数据库中存储的控件坐标不同的第一点击坐标,触发第一点击坐标,将可以产生伪输入事件的第一点击坐标作为控件坐标存储至控件坐标数据库。采用不断学习的模式,逐步丰富控件坐标数据库中的控件坐标的个数。当然这里需要说明的是,步骤204至步骤206在实际应用中可以作为可选的执行步骤,不是必须执行的操作步骤。
步骤207:从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
步骤208:依次触发所获取的控件坐标。
步骤209:响应触发每个所述控件坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退,如果是,执行步骤210;如果否,返回执行步骤208,触发下一个所获取的控件坐标。
步骤210:捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
步骤207至步骤210描述的是利用控件坐标数据库中的控件坐标进行Monkey测试的过程,与实施例一类似,参考实施例一的描述,这里不再赘述。
步骤211:生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标。
在进行Monkey测试时,生成第二预设数量的第三点击坐标,其中,第三点击坐标是当前显示界面上的坐标,第三点击坐标与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同。
这里需要说明的是,控件坐标数据库中一般刚创建后并未存储应用软件的每个显示界面上所有的控件坐标与显示界面的标识之间的对应关系,因此,可以在进行Monkey测试时,生成少量的第三点击坐标,第三点击坐标是当前显示界面上与控件坐标数据库中所存储的控件坐标不同的坐标。一般情况下,第二预设数量远远小于从控件坐标数据库中所获取的控件坐标的数量。
步骤212:依次触发每个第三点击坐标。
步骤213:判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面,如果是,执行步骤214和步骤216;如果否,返回执行步骤212,触发下一个第三点击坐标。
步骤214:响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退,如果是,执行步骤215;如果否,返回执行步骤212,触发下一个第三点击坐标。
触发某一个第三点击坐标时,若产生伪输入事件,即当前显示界面跳转到新显示界面,表示触发此第三点击坐标也可以执行有效的Monkey测试,判断触发此第三点击坐标时所述待测试应用软件是否闪退。若触发此第三点击坐标没有产生伪输入事件,则表示触发此第三点击坐标不能执行有效的Monkey测试,返回触发下一个第三点击坐标。
步骤215:捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
当触发此第三点击坐标所述待测试应用软件闪退时,捕获所调用的应用程序,技术人员修复应用程序中的bug。当触发此第三点击坐标所述待测试应用软件响应正常时,返回触发下一个第三点击坐标。
步骤216:将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
当触发此第三点击坐标产生伪输入事件时,除了执行Monkey测试以外,还将此第三点击坐标作为控件坐标,在控件坐标数据库中存储控件坐标与当前显示界面的标识之间的对应关系。进一步丰富控件坐标数据库中所存储的每个显示界面的控件坐标的数量。
步骤211至步骤216在实际应用中作为可选步骤,可以根据实际需要选择是否执行。步骤211至步骤216是在进行Monkey测试的过程中,边测试边采用学习模式丰富控件坐标数据库中每个显示界面的控件坐标的个数。可以在应用软件进行升级或更新后,显示界面上可执行有效Monkey测试的控件坐标发生变化后,进一步完善控件坐标数据库中的控件坐标的数据信息。
由上述内容可知,实施例二还有如下有益效果:
实施例二中采用获取待测应用软件的每个显示界面上的控件坐标的方式创建控件坐标数据库,可以获取每个显示界面上的基本操作控件的坐标作为控件坐标。并且,在创建控件坐标数据库时,还可以生成第一预设数量的第二点击坐标,用来获取每个显示界面上的自绘控件的坐标作为控件坐标存储至控件坐标数据库。进一步的,还在Monkey测试过程中,边测试边生成第二预设数量的第三点击坐标采用学习模式丰富控件坐标数据库中当前显示界面的控件坐标的个数。采用实施例二所提供的方法,能够不断的丰富所创建的控件坐标数据库中各个显示界面控件坐标的个数,给Monkey测试提供更完善的控件坐标数据库,不仅能够执行有效的Monkey测试,还能够更好的查找待测试应用软件有bug的应用程序。
实施例三
图3为本发明一种Monkey测试方法实施例三流程图,实施例三与实施例一相比,按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标创建控件坐标数据库,所述方法包括:
步骤301:按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标。
在待测应用软件的每个显示界面上,按照预定的顺序以及预设的间隔获取第二点击坐标。预定的顺序可以是从左到右,一行一行的生成当前显示界面上的第二点击坐标,也可以从上到下,一列一列的生成当前显示界面上的第二点击坐标,当然,还可以采用别的预定的顺序,这里不再一一赘述。每个第二点击坐标之间的间隔为预设的间隔。
如图4所示,图4为待测应用软件的一个显示界面示意图,每个圆圈表示一个第二点击坐标,在生成第二点击坐标时,可以一行一行生成第二点击坐标,也可以一列一列生成第二点击坐标,每行中的第二点击坐标之间的间隔为10像素,每列中第二点击坐标之间的间隔为10像素。在设置预设的间隔时,每行第二点击坐标之间预设的间隔与每列第二点击坐标之间预设的间隔可以相同,也可以不同。
步骤302:依次触发每个第二点击坐标。
步骤303:判断触发所述第二点击坐标后是否产生伪输入事件,使得被触发的第二点击坐标所在的显示界面跳转到新显示界面,如果是,执行步骤304;如果否,返回执行步骤302,触发下一个第二点击坐标。
步骤304:将所述第二点击坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
触发一个所生成的第二点击坐标,当产生伪输入事件时,表示触发此第二点击坐标可以执行有效的Monkey测试,因此,将此第二坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系;若触发所生成的第二点击坐标未产生伪输入事件,则触发此第二点击坐标不能执行有效的Monkey测试,则返回步骤302,触发下一个第二点击坐标。
采用步骤301至步骤304所述的方法创建控件坐标数据库,与实施例二相比,无需将获取待测应用软件各个显示界面的控件坐标的应用程序注入待测应用软件的内部,减少应用程序的撰写和维护成本,节省利用应用程序获取显示界面控件坐标的时间。
步骤305:从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
步骤306:依次触发所获取的控件坐标。
步骤307:响应触发每个所述控件坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退,如果是,执行步骤308;如果否,返回执行步骤306,触发下一个控件坐标。
步骤308:捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
步骤305至步骤308描述的是利用控件坐标数据库中的控件坐标进行Monkey测试的过程,与实施例一类似,参考实施例一的描述,这里不再赘述。
步骤309:生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标。
实施例三中生成控件坐标数据库中,按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标,将触发能产生伪输入事件的第二点击坐标作为控件坐标,将控件坐标与其所在的显示界面的标识之间的对应关系存储至控件坐标数据库中。但是,在生成每个显示界面上的第二点击坐标时,由于每个第二点击坐标之间有预设的间隔,有的可以执行有效的Monkey的坐标并未在所创建的控件坐标数据库中。
在进行Monkey测试时,生成第二预设数量的第三点击坐标,其中,第三点击坐标是当前显示界面上的坐标,第三点击坐标与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同。
这里需要说明的是,控件坐标数据库中一般刚创建后并未存储应用软件的每个显示界面上所有的控件坐标与显示界面的标识之间的对应关系,因此,可以在进行Monkey测试时,生成少量的第三点击坐标,第三点击坐标是控件坐标数据库中所存储的与当前显示界面的控件坐标不同的坐标。一般情况下,第二预设数量远远小于从控件坐标数据库中所获取的控件坐标的数量。
步骤310:依次触发每个第三点击坐标。
步骤311:判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面,如果是,执行步骤312和步骤314;如果否,返回执行步骤310,触发下一个第三点击坐标。
步骤312:响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退,如果是,执行步骤313;如果否,返回执行步骤312,触发下一个第三点击坐标。
触发某一个第三点击坐标时,若产生伪输入事件,即当前显示界面跳转到新显示界面,表示触发此第三点击坐标也可以执行有效的Monkey测试,判断触发此第三点击坐标时所述待测试应用软件是否闪退。若触发此第三点击坐标没有产生伪输入事件,则表示触发此第三点击坐标不能执行有效的Monkey测试,返回触发下一个第三点击坐标。
步骤313:捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
当触发此第三点击坐标所述待测试应用软件闪退时,捕获所调用的应用程序,技术人员修复应用程序中的bug。当触发此第三点击坐标所述待测试应用软件响应正常时,返回触发下一个第三点击坐标。
步骤314:将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
当触发此第三点击坐标产生伪输入事件时,除了执行Monkey测试以外,还将此第三点击坐标作为控件坐标,在控件坐标数据库中存储控件坐标与当前显示界面的标识之间的对应关系。进一步丰富控件坐标数据库中所存储的每个显示界面的控件坐标的数量。
步骤309至步骤314在实际应用中作为可选步骤,可以根据实际需要选择是否执行。步骤309至步骤314是在进行Monkey测试的过程中,边测试边采用学习模式丰富控件坐标数据库中每个显示界面的控件坐标的个数。可以在应用软件进行升级或更新后,显示界面上可执行有效Monkey测试的控件坐标发生变化后,进一步完善控件坐标数据库中的控件坐标的数据信息。
由上述内容可知,与实施例二相比,实施例三还有以下有益效果:
实施例三中,按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标,将触发能够产生伪输入事件的第二点击坐标作为控件坐标,存储控件坐标与控件坐标所在的显示界面的标识的对应关系创建控件坐标数据库,无需将获取待测应用软件各个显示界面的控件坐标的应用程序注入待测应用软件的内部,减少应用程序的撰写和维护成本,节省利用应用程序获取显示界面控件坐标的时间。
实施例四
图5为本发明一种Monkey测试装置实施例四结构示意图,实施例四所述的装置是与实施例一所述的方法所对应的装置,所述装置包括:
创建模块501,用于给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件。
所述控件坐标数据库存储有控件坐标及此控件坐标所在的显示界面的标识之间的对应关系。一般情况下,对于同一个坐标来说,在一个显示界面为控件坐标,而在另一个显示界面可能为非控件坐标。因此,本发明所述的控件坐标指的是在此坐标所在的显示界面上被触发时能够产生伪输入事件的坐标。其中,所述显示界面的标识可以是显示界面的名称、显示界面的编号或显示界面的代码等。
选取模块502,用于从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
第一触发模块503,用于依次触发所获取的控件坐标。
第一判断模块504,用于响应触发每个所述控件坐标所产生的伪输入事件。
第一捕获模块505,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
执行Monkey测试时,由于控件坐标在当前显示界面上的可操作控件的坐标区域内,触发控件坐标会产生一个伪输入事件,应用软件在响应伪输入事件时调用相应的应用程序。若所调用的应用程序有bug,待测试应用软件响应所述待测试应用软件会出错闪退;如果所调用的应用程序没有问题,当前显示界面跳转到另一个新显示界面,然后,再从新显示界面返回当前显示界面,触发所选取的下一个控件坐标产生另一个伪输入事件,执行下一个Monkey测试。
当所述待测试应用软件出错闪退时,表示响应触发控件坐标所产生的伪输入事件所调用的应用程序有bug,待测应用软件在响应所产生的伪输入事件时,通过堆栈(方法调用关系栈)调用相应的应用程序。当待测试应用软件出错闪退时,可以从堆栈中捕获造成待测应用软件闪退时所调用的应用程序。技术人员可以对捕获的应用程序中的bug进行修复。
实施例四与实施例一类似,参考实施例一的描述,这里不再赘述。
实施例五
图6为本发明一种Monkey测试装置实施例五结构示意图,实施例五所述的装置是与实施例二所述的方法所对应的装置,所述装置包括:
获取单元601,用于获取待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标。
第一存储单元602,用于存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
在实施例一中已经进行了说明,一般情况下,对于同一个坐标来说,在一个显示界面为控件坐标,而在另一个显示界面可能为非控件坐标。本发明所述的控件坐标指的是在此坐标所在的显示界面上被触发时能够产生伪输入事件的坐标。因此,所述控件坐标数据库中存储的是控件坐标与此控件坐标所在的显示界面名称之间的对应关系。每个显示界面的标识对应于多个控件坐标,一个控件坐标有可能只与一个显示界面的标识对应,也有可能与多个显示界面的标识对应。
在一个具体实施例中,还包括:
第一生成单元603,用于给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同。
第一触发单元604,用于依次触发每个第一点击坐标。
第一判断单元605,用于判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面。
第二存储单元606,用于当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
在另一具体实施例中,还包括:
第四存储单元,用于存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
采用获取单元601以及第一存储单元602所生成的控件坐标数据库仅包括每个显示界面上的基本操作控件的坐标,采用第一生成单元603、第一触发单元604、第一判断单元605以及第二存储单元606,进一步丰富了控件坐标数据库中控件坐标的个数。通过生成显示界面中与控件坐标数据库中存储的控件坐标不同的第一点击坐标,触发第一点击坐标,将可以产生伪输入事件的第一点击坐标作为控件坐标存储至控件坐标数据库。采用不断学习的模式,逐步丰富控件坐标数据库中的控件坐标的个数。
选取模块502,用于从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
第一触发模块503,用于依次触发所获取的控件坐标。
第一判断模块504,用于响应触发每个所述控件坐标所产生的伪输入事件。
第一捕获模块505,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
生成模块607,用于生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标。
第二触发模块608,用于依次触发每个第三点击坐标。
第二判断模块609,用于判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面。
第三判断模块610,用于当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退。
第二捕获模块611,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
存储模块612,用于当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
生成模块607、第二触发模块608、第二判断模块609、第三判断模块610、第二捕获模块611以及存储模块612在进行Monkey测试的过程中,边测试边采用学习模式丰富控件坐标数据库中每个显示界面的控件坐标的个数。可以在应用软件进行升级或更新后,显示界面上可执行有效Monkey测试的控件坐标发生变化后,进一步完善控件坐标数据库中的控件坐标的数据信息。
实施例五与实施例二所述的方法类似,参考实施例二的描述,这里不再赘述。
实施例六
图7为本发明一种Monkey测试装置实施例六结构示意图,实施例六所述的装置是与实施例三所述的方法所对应的装置,所述装置包括:
第二生成单元701,用于按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标。
第二触发单元702,用于依次触发每个第二点击坐标。
第二判断单元703,用于判断触发所述第二点击坐标后是否产生伪输入事件,使得被触发的第二点击坐标所在的显示界面跳转到新显示界面。
第三存储单元704,用于当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
在一具体实施例中,还包括:
第四存储单元,用于存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
选取模块502,用于从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标。
第一触发模块503,用于依次触发所获取的控件坐标。
第一判断模块504,用于响应触发每个所述控件坐标所产生的伪输入事件。
第一捕获模块505,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
生成模块607,用于生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标。
第二触发模块608,用于依次触发每个第三点击坐标。
第二判断模块609,用于判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面。
第三判断模块610,用于当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退。
第二捕获模块611,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
存储模块612,用于当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
生成模块607、第二触发模块608、第二判断模块609、第三判断模块610、第二捕获模块611以及存储模块612在进行Monkey测试的过程中,边测试边采用学习模式丰富控件坐标数据库中每个显示界面的控件坐标的个数。可以在应用软件进行升级或更新后,显示界面上可执行有效Monkey测试的控件坐标发生变化后,进一步完善控件坐标数据库中的控件坐标的数据信息。
实施例六与实施例三所述类似,参考实施例三的描述,这里不再赘述。
实施例七
相应的,本发明实施例还提供一种服务器,参见图8所示,可以包括:
处理器801、存储器802、输入装置803和输出装置804。浏览器服务器中的处理器801的数量可以一个或多个,图8中以一个处理器为例。在本发明的一些实施例中,处理器801、存储器802、输入装置803和输出装置804可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行浏览器服务器的各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置803可用于接收输入的数字或字符信息,以及产生与浏览器服务器的用户设置以及功能控制有关的键信号输入。
具体在本实施例中,处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现各种功能:
给待测试应用软件预先创建控件坐标数据库,所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件,所述方法包括:
从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;
依次触发所获取的控件坐标;
响应触发每个所述控件坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
可选的,所述给待测试的应用软件预先创建控件坐标数据库包括:
获取待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标;
存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库还包括:
给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同;
依次触发每个第一点击坐标;
判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面;
当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库包括:
按照预定的顺序以及预设的间隔分别给所述待测试的应用软件的每个显示界面生成多个第二点击坐标;
依次触发每个第二点击坐标;
判断触发所述第二点击坐标后是否产生伪输入事件,使得被触发的第二点击坐标所在的显示界面跳转到新显示界面;
当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标,存储所述控件坐标与此控件坐标所在的显示界面的标识之间的对应关系。
可选的,所述给待测试的应用软件预先创建控件坐标数据库还包括:
存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
可选的,所述方法还包括:
生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标;
依次触发每个第三点击坐标;
判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面;
当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
可选的,所述方法还包括:
当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种Monkey测试方法,其特征在于,给待测试应用软件预先创建控件坐标数据库包括:获取所述待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标,或,按照预定顺序及预设间隔分别给所述待测试应用软件每个显示界面生成多个第二点击坐标,并依次触发每个第二点击坐标,当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标;存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系;所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件,所述方法包括:
从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;
依次触发所选取的控件坐标;
响应触发每个所述控件坐标所产生的伪输入事件;
当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
2.根据权利要求1所述的方法,其特征在于,所述给待测试的应用软件预先创建控件坐标数据库还包括:
给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同;
依次触发每个第一点击坐标;
判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面;
当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
3.根据权利要求1或2所述的方法,其特征在于,所述给待测试的应用软件预先创建控件坐标数据库还包括:
存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标;
依次触发每个第三点击坐标;
判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面;
当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
6.一种Monkey测试装置,其特征在于,所述装置包括:
创建模块,用于给待测试应用软件预先创建控件坐标数据库;所述创建模块包括获取模块,用于获取所述待测试应用软件每个显示界面上的基本操作控件的坐标作为控件坐标,或,按照预定顺序及预设间隔分别给所述待测试应用软件每个显示界面生成多个第二点击坐标,并依次触发每个第二点击坐标,当触发所述第二点击坐标产生伪输入事件时,将所述第二点击坐标作为控件坐标;以及,第一存储模块,用于存储每个控件坐标与此控件坐标所在的显示界面的标识之间的对应关系;所述控件坐标数据库存储有多个控件坐标及每个控件坐标所在的显示界面的标识,每个所述控件坐标被触发时都能够产生一个伪输入事件;
选取模块,用于从所述控件坐标数据库中选取当前显示界面的标识所对应的至少一个控件坐标;
第一触发模块,用于依次触发所选取的控件坐标;
第一判断模块,用于响应触发每个所述控件坐标所产生的伪输入事件;
第一捕获模块,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述待测试应用软件闪退前所响应的最后一个伪输入事件所调用的应用程序。
7.根据权利要求6所述的装置,其特征在于,所述创建模块还包括:
第一生成单元,用于给所述待测试应用软件的每个显示界面生成第一预设数量的第一点击坐标,每个所述第一点击坐标与此第一点击坐标所在的显示界面中的基本操作控件的坐标不同;
第一触发单元,用于依次触发每个第一点击坐标;
第一判断单元,用于判断触发所述第一点击坐标后是否产生伪输入事件,使得被触发的第一点击坐标所在的显示界面跳转到新显示界面;
第二存储单元,用于当触发所述第一点击坐标产生伪输入事件时,将所述第一点击坐标作为控件坐标,存储所述控件坐标以及此控件坐标所在的显示界面的标识之间的对应关系。
8.根据权利要求6或7所述的装置,其特征在于,所述创建模块还包括:
第四存储单元,用于存储每个控件坐标被触发伪输入事件后所跳转到的新显示界面的标识与此控件坐标与之间的对应关系。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
生成模块,用于生成第二预设数量的与控件坐标数据库中所存储的当前显示界面的标识所对应的控件坐标不同的第三点击坐标;
第二触发模块,用于依次触发每个第三点击坐标;
第二判断模块,用于判断触发所述第三点击坐标后是否产生伪输入事件,使得当前显示界面跳转到新显示界面;
第三判断模块,用于当触发所述第三点击坐标产生伪输入事件时,响应触发所述第三点击坐标所产生的伪输入事件,判断所述待测试应用软件是否出错闪退;
第二捕获模块,用于当所述待测试应用软件出错闪退时,捕获堆栈中所述第三点击坐标所产生的伪输入事件所调用的应用程序。
10.根据权利要求9所述的装置,其特征在于,所述装置包括:
存储模块,用于当触发所述第三点击坐标产生伪输入事件时,将所述第三点击坐标作为控件坐标,将所述控件坐标与所述当前显示界面的标识之间的对应关系存储至所述控件坐标数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410505118.XA CN105512023B (zh) | 2014-09-26 | 2014-09-26 | 一种Monkey测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410505118.XA CN105512023B (zh) | 2014-09-26 | 2014-09-26 | 一种Monkey测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512023A CN105512023A (zh) | 2016-04-20 |
CN105512023B true CN105512023B (zh) | 2019-02-19 |
Family
ID=55720024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410505118.XA Active CN105512023B (zh) | 2014-09-26 | 2014-09-26 | 一种Monkey测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512023B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107515821B (zh) * | 2016-06-17 | 2021-08-31 | 百度在线网络技术(北京)有限公司 | 控件测试方法和装置 |
CN107562611B (zh) * | 2016-06-30 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 一种实现模拟测试的方法及装置 |
CN106383780A (zh) * | 2016-09-05 | 2017-02-08 | 努比亚技术有限公司 | 一种Monkey测试方法及装置 |
CN106569938B (zh) * | 2016-10-27 | 2019-07-05 | 厦门美图之家科技有限公司 | 应用程序的压力测试方法和装置 |
CN107193733A (zh) * | 2017-05-12 | 2017-09-22 | 微梦创科网络科技(中国)有限公司 | 模拟Monkey测试的方法、装置和系统 |
CN107168878B (zh) * | 2017-05-22 | 2020-06-09 | 网易有道信息技术(北京)有限公司 | 一种对应用程序进行测试的方法、装置和介质 |
CN109101412B (zh) * | 2017-06-21 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 测试文件生成、测试方法、装置、存储介质和计算机设备 |
CN107943693A (zh) * | 2017-11-21 | 2018-04-20 | 北京安博通科技股份有限公司 | 应用软件审计测试方法及装置、应用软件审计测试系统 |
CN109144881B (zh) * | 2018-09-07 | 2022-06-03 | 东软集团股份有限公司 | Monkey测试方法、装置、终端设备及存储介质 |
CN109388560A (zh) * | 2018-09-18 | 2019-02-26 | 广州小鹏汽车科技有限公司 | 基于Monkey的应用稳定性测试方法和装置 |
CN109828910A (zh) * | 2018-12-26 | 2019-05-31 | 平安科技(深圳)有限公司 | monkey测试的方法及装置、计算机设备、存储介质 |
CN110955568B (zh) * | 2019-11-06 | 2023-09-01 | Oppo(重庆)智能科技有限公司 | 触摸屏问题的定位方法及装置、设备、存储介质 |
CN111694744B (zh) * | 2020-06-11 | 2023-03-21 | 安然 | 一种基于monkey源码的测试开发方法 |
CN112363885B (zh) * | 2020-11-10 | 2023-09-22 | 抖音视界有限公司 | 检测应用异常的方法、装置、电子设备及计算机可读介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339534A (zh) * | 2008-06-17 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种软件测试的方法及装置 |
JP2010224971A (ja) * | 2009-03-24 | 2010-10-07 | Fujitsu Ten Ltd | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 |
CN103019923A (zh) * | 2011-09-22 | 2013-04-03 | 腾讯科技(深圳)有限公司 | 模拟点击测试的方法及系统 |
CN103019937A (zh) * | 2012-12-13 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种人机交互界面遍历测试方法 |
-
2014
- 2014-09-26 CN CN201410505118.XA patent/CN105512023B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339534A (zh) * | 2008-06-17 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种软件测试的方法及装置 |
JP2010224971A (ja) * | 2009-03-24 | 2010-10-07 | Fujitsu Ten Ltd | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 |
CN103019923A (zh) * | 2011-09-22 | 2013-04-03 | 腾讯科技(深圳)有限公司 | 模拟点击测试的方法及系统 |
CN103019937A (zh) * | 2012-12-13 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种人机交互界面遍历测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105512023A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512023B (zh) | 一种Monkey测试方法及装置 | |
US20180173614A1 (en) | Technologies for device independent automated application testing | |
JP5599400B2 (ja) | 画像センサベースのヒューマンマシンインタフェースを提供する方法システムおよびソフトウェア | |
EP3112965A1 (en) | Robotic process automation | |
CN105843734A (zh) | 一种自动化测试方法、装置及计算设备 | |
US10891219B1 (en) | Code failure prediction system | |
CN108681508A (zh) | 一种基于视觉识别的测试方法及终端 | |
US20130318500A1 (en) | Debugging in a Dataflow Programming Environment | |
US9223647B2 (en) | Automatic classification adjustment of recorded actions for automation script | |
CN102667730A (zh) | 设计时调试 | |
US20130138381A1 (en) | Handheld electronic device testing method | |
CN108399124A (zh) | 应用测试方法、装置、计算机设备和存储介质 | |
CN101295280A (zh) | 自动化软件调测方法及系统 | |
CN106815134A (zh) | 一种app测试方法和装置 | |
CN109725959A (zh) | 页面控件的响应方法、显示设备及计算机可读存储介质 | |
Rubinov et al. | What are we missing when testing our android apps? | |
CN106874208A (zh) | 测试脚本的处理方法、装置及电子设备 | |
CN110347608B (zh) | 一种交互式应用的测试方法及相关装置 | |
CN110309061A (zh) | 自动化测试方法、装置及存储介质、计算机设备 | |
WO2017116877A1 (en) | Hand gesture api using finite state machine and gesture language discrete values | |
CN106095679B (zh) | 基于手绘识别的图形界面测试用例生成方法 | |
CN105988931A (zh) | 测试方法及装置 | |
US11813538B2 (en) | Videogame telemetry data and game asset tracker for session recordings | |
CN112911283B (zh) | 智能电视测试方法及装置 | |
CN109189452A (zh) | 一种电子设备的软件更新方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |