CN105988931B - 测试方法及装置 - Google Patents
测试方法及装置 Download PDFInfo
- Publication number
- CN105988931B CN105988931B CN201510094246.4A CN201510094246A CN105988931B CN 105988931 B CN105988931 B CN 105988931B CN 201510094246 A CN201510094246 A CN 201510094246A CN 105988931 B CN105988931 B CN 105988931B
- Authority
- CN
- China
- Prior art keywords
- event
- test
- application program
- testing
- script
- 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
- 238000010998 test method Methods 0.000 title claims abstract description 11
- 238000012360 testing method Methods 0.000 claims abstract description 284
- 238000000034 method Methods 0.000 claims abstract description 34
- 241000282693 Cercopithecidae Species 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种测试方法及装置。方法包括:获取对应用程序进行测试所需的测试控制脚本,测试控制脚本用于指示对应用程序进行测试所需的随机事件序列,应用程序基于第一操作系统实现;根据测试控制脚本,控制第一操作系统自带的系统级测试工具向应用程序发送随机事件序列,以对应用程序进行随机测试。本申请可以通过Monkey工具对应用程序进行测试,降低测试成本。
Description
【技术领域】
本申请涉及软件测试技术领域,尤其涉及一种测试方法及装置。
【背景技术】
Monkey是安卓(Android)系统中的一个命令行工具,可以运行在模拟器或实际设备中。通过Monkey工具可以对Android系统进行测试。Monkey工具主要是通过模拟用户的按键输入,触摸屏输入,手势输入等操作,向被测系统发送伪随机的事件序列,观察被测系统是否出错以及多长时间出错,以实现对被测系统的压力测试。
随着移动终端的发展,基于Android的应用程序越来越多。若能够采用Monkey工具对应用程序进行测试,不需要专门开发测试工具,可以极大地降低测试成本。但是,因为Monkey工具实现的测试属于系统级测试,在Monkey测试过程中触发的事件序列包括与操作系统相关的事件,有一些事件序列会改变操作系统的信息,例如模拟用户点击设置按钮的事件,该事件会修改Android系统的各种配置,因此若在使用Monkey工具对应用程序进行测试过程中,触发一些改变操作系统信息的事件,可能会导致Monkey测试无法继续执行,影响对应用程序的测试效果。可见,现有Monkey工具无法直接用于对应用程序进行测试。
【发明内容】
本申请的多个方面提供一种测试方法及装置,用以通过Monkey工具对应用程序进行测试,降低测试成本。
本申请的一方面,提供一种测试方法,包括:
获取对应用程序进行测试所需的测试控制脚本,所述测试控制脚本用于指示对所述应用程序进行测试所需的随机事件序列,所述应用程序基于第一操作系统实现;
根据所述测试控制脚本,控制所述第一操作系统自带的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试。
本申请的另一方面,提供一种测试装置,包括:
获取模块,用于获取对应用程序进行测试所需的测试控制脚本,所述测试控制脚本用于指示对所述应用程序进行测试所需的随机事件序列,所述应用程序基于第一操作系统实现;
测试控制模块,用于根据所述测试控制脚本,控制所述第一操作系统自带的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试。
在本申请中,对于基于第一操作系统实现的应用程序,当需要对该应用程序进行测试时,获取对其进行测试所需的测试控制脚本,该测试控制脚本指示对该应用程序进行测试所需的随机事件序列,之后在该测试控制脚本的控制下,使用第一操作系统提供的系统级测试工具向该应用程序发送随机事件序列,从而实现使用第一操作系统自带的系统级测试工具对应用程序进行随机测试的目的,不需要开发专门的测试工具,有利于降低测试成本。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的测试方法的流程示意图;
图2为本申请另一实施例提供的测试方法的流程示意图;
图3为本申请一实施例提供的第一操作系统实现的整体界面的结构示意图;
图4为本申请一实施例提供的测试装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请一实施例提供的测试方法的流程示意图。如图1所示,该方法包括:
101、获取对应用程序进行测试所需的测试控制脚本,所述测试控制脚本用于指示对所述应用程序进行测试所需的随机事件序列,所述应用程序基于第一操作系统实现。
102、根据所述测试控制脚本,控制所述第一操作系统提供的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试。
本实施例提供一种测试方法,可由测试装置来执行。该测试装置安装有第一操作系统,并安装有基于第一操作系统实现的应用程序,具体用于使用第一操作系统自带的系统级测试工具对该应用程序进行压力测试。其中,第一操作系统可以是任意操作系统。第一操作系统不相同,第一操作系统自带的系统级测试工具也会不同。例如,若第一操作系统是Android系统,则系统级测试工具可以是Monkey工具,基于Android系统实现的应用程序可以是但不限于:输入法类的应用(如搜狗输入法)、游戏类的应用(如天天酷跑、斗地主)、地图类的应用(如百度地图)、浏览器类的应用(如QQ浏览器)、影音娱乐类的应用(如优酷、爱奇艺pps)。
在本实施例中,考虑到第一操作系统自带的系统级测试工具实现的测试属于系统级测试,在测试过程中随机生成的事件序列包括与第一操作系统有关的事件,例如模拟用户点击设置按钮的事件,有可能会改变第一操作系统的信息,导致不能直接进行应用级测试,故当需要对基于第一操作系统实现的应用程序进行测试时,测试装置获取用于对应用程序进行测试所需的测试控制脚本,该测试控制脚本用于指示对该应用程序进行测试所需的随机事件序列;根据该测试控制脚本,控制第一操作系统自带的系统级测试工具向应用程序发送对该应用程序进行测试所需的随机事件序列,以对该应用程序进行随机测试。
本实施例通过用于指示对应用程序进行测试所需的随机事件序列的测试控制脚本对系统级测试工具进行控制,使得系统级测试工具仅产生对应用程序进行测试所需的随机事件序列,避免系统级测试工具产生如改变第一操作系统信息等各种会导致无法继续测试应用程序的事件,从而实现通过第一操作系统自带的系统级测试工具对应用程序进行随机测试的目的,不需要为该应用程序开发专门的测试工具,有利于降低测试成本。
在一可选实施方式中,如图2所示,在步骤101之前,上述方法还包括:
100、根据应用程序在运行状态下所允许的合法用户操作,生成测试控制脚本中的脚本命令,脚本命令用于控制生成随机事件序列中的测试事件,随机事件流中的测试事件用于模拟合法用户操作。
步骤100主要描述在使用测试控制脚本之前,生成测试控制脚本的过程。该测试控制脚本主要包括一个或多个脚本命令,考虑到对应用程序进行测试的过程主要是模拟应用程序在运行状态下的用户操作并获取应用程序对所模拟的用户操作的响应结果,因此这些脚本命令可以根据应用程序在运行状态下所允许的合法用户操作生成,主要用于控制生成对该应用程序进行测试所需的随机事件序列中的测试事件,例如可以包括生成测试事件所需的参数和生成逻辑等信息。
这里的合法用户操作主要是允许用户在应用程序运行过程中执行的操作,例如对于使用无线局域网络(Wireless Local Area Networks,WLAN)上网的应用程序(例如QQ、微信、天猫),在使用过程中,不允许用户关闭WLAN,但是允许用户登录或退出登录,则用户关闭WLAN的操作就属于非法用户操作,而用户进行登录或退出登录的操作属于合法用户操作。其中,对应用程序进行测试所需的随机事件序列中的测试事件主要是对这些合法用户操作的模拟。
值得说明的是,该步骤100可由测试装置或其他装置自动来执行,即测试控制脚本可由测试装置或其他装置自动生成;或者,该测试控制脚本也可由测试人员手动编写。其中,若由测试人员手动编写或由其他装置自动生成,则需要预先将测试控制脚本导入测试装置中,即测试装置需要先获取测试控制脚本。
具体的,根据应用程序的不同,所需的随机事件序列也会不同,相应的,脚本命令也会不同。下面对一些应用程序进行测试所需的测试事件和不需要的测试事件进行举例说明:
对于使用第一操作系统的终端设备来说,第一操作系统提供的整体页面布局主要包括状态栏、应用界面区域和虚拟键,这三部分占据该终端设备的整个屏幕,具体可如图3所示。对于系统级测试来说,由于测试事件是随机生成的,所以状态栏、应用界面区域和虚拟键都有可能被点击到。由于本实施例主要用于对应用程序进行测试,所以称为测试装置,在具体实现上,该测试装置可以是使用第一操作系统并安装有该应用程序的终端设备,或者是安装于终端设备上的测试客户端。
以Android系统为例,状态栏一般包括一些功能按钮,例如WLAN开关按钮、移动数据按钮、响铃按钮、蓝牙按钮、全球定位系统(Global Positioning System,GPS)导航按钮、免打扰按钮、飞行模式按钮、音量调节按钮、自动同步按钮、单手操作按钮等等。其中,根据Android系统版本的不同,状态栏中的按钮也会有所不同。虚拟键一般存在于Android4以及之后的版本中,主要包括返回键、首页键和任务列表键。
对于一些应用程序来说,在测试过程中可能不希望点击到状态栏和/或虚拟键,基于此,本实施例的测试装置可以根据第一操作系统提供的状态栏的大小和/或第一操作系统提供的虚拟键的大小,确定合法用户操作在应用程序所在终端的屏幕上的操作范围,生成用于控制在该操作范围内产生测试事件的脚本命令。具体来说,可以通过更改测试事件的操作范围,来避免点击到状态栏和/或虚拟键。下面针对具体情况进行说明:
例如,对于需要使用互联网的应用程序(例如QQ或微信等)来说,若在测试过程中,产生了点击WLAN按钮的事件,导致WLAN被关闭,或者产生了点击飞行模式按钮的事件,导致测试装置无法继续对应用程序进行测试。又例如,对于一些需要使用GPS导航功能的应用程序(例如百度地图、高德地图等)来说,若在测试过程中,产生了点击GPS导航按钮的事件,导致GPS功能关闭,导致测试装置无法测试这些应用程序的导航功能。
也就是说,在应用程序的测试过程中,有一些应用程序不需要产生点击状态栏(具体是指点击状态栏上的功能按钮)的事件,否则会导致测试无法继续执行。以谷歌智能手机Google Nexus5为例,其屏幕的分辨率为1080*1776像素,状态栏高度为75像素,在实验中证实点击到状态栏的概率为4.2%,若设置系统级测试工具产生事件的间隔为10毫秒(ms),则十几分钟就能点击到状态栏,也就是说,这种情况发生的概率很高。对于该情况,测试装置可以根据应用程序所在终端的屏幕大小和第一操作系统提供的状态栏的大小,确定合法用户操作的第一操作范围,生成用于控制在第一操作范围内产生测试事件的脚本命令。第一操作范围是指整个屏幕大小除去状态栏之外的范围,通过该脚本命令可以控制系统级测试工具仅在第一操作范围内产生事件,可以将状态栏排除在外,不会点击到状态栏上的功能按钮,从而保证测试能够正常执行。
值得说明的是,这里屏幕大小和状态栏大小可以用像素个数来表示,但不限于此,也可以用其他单位例如英寸(inch)来表示。
又例如,在应用程序的测试过程中,若产生了点击上述虚拟键的事件,例如产生了点击首页键之后,首页上的所有应用图标都有可能被点到,这可能导致无法继续对应用程序进行测试。同理,若在应用程序的测试过程中,产生了点击任务列表键的事件,也可能导致无法继续对应用程序进行测试。
也就是说,在应用程序的测试过程中,有一些应用程序不需要产生点击虚拟键的事件,否则会导致测试无法继续执行。以谷歌智能手机Google Nexus5为例,其屏幕的分辨率为1080*1776像素,虚拟键高度为144像素,在实验中证实点击到虚拟键的概率为8.1%,若设置系统级测试工具产生事件的间隔为10ms,则十几分钟就能点击到虚拟键,也就是说,这种情况发生的概率很高。对于该情况,测试装置可以根据应用程序所在终端的屏幕大小和第一操作系统提供的虚拟键的大小,确定合法用户操作对应的第二操作范围,生成用于控制在第二操作范围内产生测试事件的脚本命令。第二操作范围是整个屏幕大小除去虚拟键之外的范围,通过该脚本命令可以控制系统级测试工具仅在第二操作范围内产生事件,可以将虚拟键排除在外,不会点击到虚拟键,从而保证测试能够正常执行。
再例如,在应用程序的测试过程中,有一些应用程序既不需要产生点击状态栏的事件,也不需要产生点击虚拟键的事件,否则会导致测试无法继续执行。对于该情况,测试装置根据应用程序所在终端的屏幕大小、第一操作系统提供的状态栏的大小和第一操作系统提供的虚拟键的大小,确定合法用户操作对应的第三操作范围,生成用于控制在第三操作范围内产生测试事件的脚本命令。第三操作范围是整个屏幕大小除去状态栏和虚拟键之外的范围,通过该脚本命令可以控制系统级测试工具仅在第三操作范围内产生事件,可以将状态栏和虚拟键排除在外,不会点击到状态栏和虚拟键,从而保证测试能够正常执行。
在使用系统级测试工具对第一操作系统进行测试的过程中,会产生一些系统事件组、导航事件组以及其他事件组中的事件,为了保证测试随机性,需要设定各事件组对应的发生概率,每个事件组中的事件均按照该发生概率随机产生。其中,系统事件组和导航事件组中的事件主要是一些按键事件。在一些应用程序的测试过程中,若产生系统事件组和/或导航事件组中的一些按键事件,也会使得测试跳转到应用程序之外的部分,导致测试无法继续执行。针对该问题,本实施例的测试装置除了可以根据第一操作系统提供的状态栏的大小和/或第一操作系统提供的虚拟键的大小,确定合法用户操作在应用程序所在终端的屏幕上的操作范围,生成用于控制在操作范围内产生测试事件的脚本命令之外,还可以执行以下至少一种操作:
根据合法用户操作,确定第一操作系统提供的系统事件组的发生概率,并确定系统事件组中需要被禁止的按键事件,生成用于控制系统事件组中未被禁止的按键事件按照系统事件组的发生概率产生的脚本命令;
根据合法用户操作,确定第一操作系统提供的导航事件组的发生概率,并确定导航事件组中需要被禁止的按键事件,生成用于控制导航事件组中未被禁止的按键事件按照导航事件组的发生概率产生的脚本命令;
根据合法用户操作,确定第一操作系统提供的除系统事件组和导航事件组之外其他事件组的发生概率,生成用于控制其他事件组中各事件按照其他事件组的发生概率产生的脚本命令。下面以针对具体情况进行说明:
以Android系统为例,系统事件组中的按键事件对应的静态常量包括:KEYCODE_HOME、KEYCODE_BACK、KEYCODE_CALL、KEYCODE_ENDCALL、KEYCODE_VOLUME_UP、KEYCODE_VOLUME_DOWN、KEYCODE_VOLUME_MUTE和KEYCODE_MUTE;导航事件组中的按键事件对应的静态常量包括:KEYCODE_MENU和KEYCODE_DPAD_CENTER。
例如,在应用程序的测试过程中,若产生系统事件组中的一些按键事件,也会使得测试跳转到应用程序之外的部分,导致测试无法继续执行;另外,系统事件组中的部分按键事件,如打电话事件和音量调整事件也会给测试者带来一些不便。对于该情况,测试装置可以根据合法用户操作,确定第一操作系统提供的系统事件组的发生概率,并确定系统事件组中需要被禁止的按键事件,并通过脚本命令,控制系统级测试工具在对应用程序的测试过程中不产生被禁止的按键事件,而是按照系统事件组的发生概率控制系统级测试工具生成未被禁止的按键事件,这样可以将测试控制在应用程序范围内,保证测试过程正常执行。值得说明的是,系统事件组中被禁止的按键事件可以是一个也可以是多个。以Android系统的系统事件为例,通过该脚本命令可以控制系统级测试工具仅产生一个按键事件,即KEYCODE_BACK,其他按键事件均需要被禁止。
又例如,在应用程序的测试过程中,若产生导航事件组中的一些按键事件也会使得测试跳转到应用程序之外的部分,导致测试无法继续执行。对于该情况,测试装置可以根据合法用户操作,确定第一操作系统提供的导航事件组的发生概率,并确定导航事件组中需要被禁止的按键事件,并通过该脚本命令控制系统级测试工具在对应用程序的测试过程中不产生被禁止的按键事件,而是按照导航事件组的发生概率控制系统级测试工具生成未被禁止的按键事件,这样可以将测试控制在应用程序范围内,保证测试过程正常执行。值得说明的是,导航事件组中被禁止的按键事件可以是一个也可以是多个。以Android系统的系统事件为例,通过该脚本命令可以控制系统级测试工具仅产生一个按键事件,即KEYCODE_MENU,其他按键事件均需要被禁止。
再例如,对于除了系统事件组和导航事件组之外的其他事件组,测试装置可以根据合法用户操作,确定除系统事件组和导航事件组之外的其他事件组的发生概率,并通过脚本命令控制系统级测试工具在对应用程序的测试过程中按照确定的发生概率产生其他事件组中的事件,这样可以满足应用程序的测试需求。
值得说明的是,若测试装置控制系统级测试工具在合法用户操作对应的屏幕上的操作范围内产生测试事件,则由于操作范围发生了变化,与操作范围有关系的事件也需要做相应修改。下面对Android系统中除系统事件组和导航事件组之外的其他事件组以及部分其他事件组中事件的实现脚本进行说明:
首先,说明一下几个公共变量:
private int statusBarPx;//状态栏高度像素数
private int screenWidthPx;//屏幕宽度像素数
private int screenHeigthPx;//屏幕高度像素数
private int navBarPx;//虚拟键(导航栏)高度像素数
private Random random;//随机因子
事件要实现的抽象方法定义为:public abstract String toScript();
各事件只要实现上述方法即可。以Java语言为例,其他事件组中的事件的具体代码如下:
其中,getRandomPoint()的作用是生成应用程序内的一个随机点,这样就保证了状态栏和虚拟键被排除在外。以图3所示为例,左上角为坐标(0,0),假设可以产生事件的坐标设置为(x,y),坐标(x,y)的范围,即去除两条状态栏和虚拟键剩余中间应用部分的范围为:x<=screenWidthPx,statusBarPx<=y<=screenHeigthPx–navBarPx,也即Point p=getRandomPoint()的坐标范围。
(2)Motion事件:
同Touch事件类似,该Motion事件中的pStart、pEnd主要是限制在应用程序范围内的一个随机点。
(3)PinchZoom事件:
同Touch事件类似,该PinchZoom事件中的p1Start、p1End、p2Start、p2End也主要是限制在应用程序范围内的一个随机点。
(4)Trackball事件:
(5)Flip事件:
其中,keyboardOpen是boolean型变量,第奇数次出现该事件设置为false,第偶数次出现设置为true。
(6)AppSwitch事件:
其中pacakgeName是应用包名,activityName是应用主activity名称。
(7)Nav事件、MajorNav事件、Sys事件、其他事件实现类似,如下:
其中,keycode对应于各个事件在Android系统中的数值,具体可以参考AndroidMonkey的源代码。
在获得测试控制脚本之后,测试装置具体可以采用但不限于以下方式控制第一操作系统自带的系统级测试工具向应用程序发送随机事件序列,以对应用程序进行随机测试:
根据测试控制脚本,生成系统级测试工具的测试命令;
根据测试命令,调用系统级测试工具,以使系统级测试工具生成随机事件序列中的测试事件并向应用程序发送所生成的测试事件,以对应用程序进行随机测试。
本实施例通过用于指示对应用程序进行测试所需的随机事件序列的测试控制脚本对系统级测试工具进行控制,使得系统级测试工具仅产生对应用程序进行测试所需的随机事件序列,避免系统级测试工具产生如改变第一操作系统信息等各种会导致无法继续测试应用程序的事件,从而实现通过第一操作系统自带的系统级测试工具对应用程序进行随机测试的目的,不需要为该应用程序开发专门的测试工具,有利于降低测试成本。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4为本申请一实施例提供的测试装置的结构示意图。如图4所示,该装置包括:获取模块41和测试控制模块42。
获取模块41,用于获取对应用程序进行测试所需的测试控制脚本,测试控制脚本用于指示对应用程序进行测试所需的随机事件序列,应用程序基于第一操作系统实现;
测试控制模块42,用于根据获取模块41获取的测试控制脚本,控制第一操作系统自带的系统级测试工具向应用程序发送随机事件序列,以对应用程序进行随机测试。
在一可选实施方式中,该测试装置还可以包括:生成模块,用于在获取模块41获取测试控制脚本之前,生成测试控制脚本。具体的,生成模块可根据应用程序在运行状态下所允许的合法用户操作,生成测试控制脚本中的脚本命令,脚本命令用于控制生成随机事件序列中的测试事件,随机事件流中的测试事件用于模拟合法用户操作。
进一步,生成模块具体用于执行以下至少一种操作:
根据第一操作系统提供的状态栏的大小和/或第一操作系统提供的虚拟键的大小,确定合法用户操作在应用程序所在终端的屏幕上的操作范围,生成用于控制在操作范围内产生测试事件的脚本命令;
根据合法用户操作,确定第一操作系统提供的系统事件组的发生概率,并确定系统事件组中需要被禁止的按键事件,生成用于控制系统事件组中未被禁止的按键事件按照系统事件组的发生概率产生的脚本命令;
根据合法用户操作,确定第一操作系统提供的导航事件组的发生概率,并确定导航事件组中需要被禁止的按键事件,生成用于控制导航事件组中未被禁止的按键事件按照导航事件组的发生概率产生的脚本命令;
根据合法用户操作,确定第一操作系统提供的除系统事件组和导航事件组之外其他事件组的发生概率,生成用于控制其他事件组中各事件按照其他事件组的发生概率产生的脚本命令。
在一可选实施方式中,测试控制模块42具体用于:
根据测试控制脚本,生成系统级测试工具的测试命令;
根据测试命令,调用系统级测试工具,以使系统级测试工具生成随机事件序列中的测试事件并向应用程序发送生成的测试事件,以对应用程序进行随机测试。
可选的,第一操作系统为安卓系统,系统级测试工具为Monkey工具。
本实施例提供的测试装置,安装有第一操作系统,并安装有基于第一操作系统实现的应用程序,具体通过用于指示对应用程序进行测试所需的随机事件序列的测试控制脚本对系统级测试工具进行控制,使得系统级测试工具仅产生对应用程序进行测试所需的随机事件序列,避免系统级测试工具产生如改变第一操作系统信息等各种会导致无法继续测试应用程序的事件,从而实现通过第一操作系统自带的系统级测试工具对应用程序进行随机测试的目的,不需要为该应用程序开发专门的测试工具,有利于降低测试成本。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (8)
1.一种测试方法,其特征在于,包括:
获取对应用程序进行测试所需的测试控制脚本,所述测试控制脚本用于指示对所述应用程序进行测试所需的随机事件序列,所述应用程序基于第一操作系统实现,所述测试控制脚本中的脚本命令根据应用程序在运行状态下所允许的合法用户操作而生成,所述脚本命令用于控制生成所述随机事件序列中的测试事件,所述随机事件流中的测试事件用于模拟所述合法用户操作,所述合法用户操作是不改变操作系统信息的操作;
根据所述测试控制脚本,控制所述第一操作系统自带的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试。
2.根据权利要求1所述的方法,其特征在于,所述根据所述应用程序在运行状态下所允许的合法用户操作,生成所述测试控制脚本中的脚本命令,包括以下至少一种操作:
根据所述第一操作系统提供的状态栏的大小和/或所述第一操作系统提供的虚拟键的大小,确定所述合法用户操作在所述应用程序所在终端的屏幕上的操作范围,生成用于控制在所述操作范围内产生测试事件的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的系统事件组的发生概率,并确定所述系统事件组中需要被禁止的按键事件,生成用于控制所述系统事件组中未被禁止的按键事件按照所述系统事件组的发生概率产生的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的导航事件组的发生概率,并确定所述导航事件组中需要被禁止的按键事件,生成用于控制所述导航事件组中未被禁止的按键事件按照所述导航事件组的发生概率产生的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的除所述系统事件组和导航事件组之外其他事件组的发生概率,生成用于控制所述其他事件组中各事件按照所述其他事件组的发生概率产生的脚本命令。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述测试控制脚本,控制所述第一操作系统自带的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试,包括:
根据所述测试控制脚本,生成所述系统级测试工具的测试命令;
根据所述测试命令,调用所述系统级测试工具,以使所述系统级测试工具生成所述随机事件序列中的测试事件并向所述应用程序发送所述生成的测试事件,以对所述应用程序进行随机测试。
4.根据权利要求1或2所述的方法,其特征在于,所述第一操作系统为安卓系统,所述系统级测试工具为Monkey工具。
5.一种测试装置,其特征在于,包括:
获取模块,用于获取对应用程序进行测试所需的测试控制脚本,所述测试控制脚本用于指示对所述应用程序进行测试所需的随机事件序列,所述应用程序基于第一操作系统实现,所述测试控制脚本中的脚本命令根据应用程序在运行状态下所允许的合法用户操作而生成,所述脚本命令用于控制生成所述随机事件序列中的测试事件,所述随机事件流中的测试事件用于模拟所述合法用户操作,所述合法用户操作是不改变操作系统信息的操作;
测试控制模块,用于根据所述测试控制脚本,控制所述第一操作系统自带的系统级测试工具向所述应用程序发送所述随机事件序列,以对所述应用程序进行随机测试。
6.根据权利要求5所述的装置,其特征在于,根据所述应用程序在运行状态下所允许的合法用户操作,生成所述测试控制脚本中的脚本命令,包括以下至少一种操作:
根据所述第一操作系统提供的状态栏的大小和/或所述第一操作系统提供的虚拟键的大小,确定所述合法用户操作在所述应用程序所在终端的屏幕上的操作范围,生成用于控制在所述操作范围内产生测试事件的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的系统事件组的发生概率,并确定所述系统事件组中需要被禁止的按键事件,生成用于控制所述系统事件组中未被禁止的按键事件按照所述系统事件组的发生概率产生的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的导航事件组的发生概率,并确定所述导航事件组中需要被禁止的按键事件,生成用于控制所述导航事件组中未被禁止的按键事件按照所述导航事件组的发生概率产生的脚本命令;
根据所述合法用户操作,确定所述第一操作系统提供的除所述系统事件组和导航事件组之外其他事件组的发生概率,生成用于控制所述其他事件组中各事件按照所述其他事件组的发生概率产生的脚本命令。
7.根据权利要求5或6所述的装置,其特征在于,所述测试控制模块具体用于:
根据所述测试控制脚本,生成所述系统级测试工具的测试命令;
根据所述测试命令,调用所述系统级测试工具,以使所述系统级测试工具生成所述随机事件序列中的测试事件并向所述应用程序发送所述生成的测试事件,以对所述应用程序进行随机测试。
8.根据权利要求5或6所述的装置,其特征在于,所述第一操作系统为安卓系统,所述系统级测试工具为Monkey工具。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510094246.4A CN105988931B (zh) | 2015-03-03 | 2015-03-03 | 测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510094246.4A CN105988931B (zh) | 2015-03-03 | 2015-03-03 | 测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988931A CN105988931A (zh) | 2016-10-05 |
CN105988931B true CN105988931B (zh) | 2019-09-17 |
Family
ID=57039394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510094246.4A Active CN105988931B (zh) | 2015-03-03 | 2015-03-03 | 测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105988931B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664392B (zh) * | 2018-03-19 | 2019-08-06 | 重庆小雨点小额贷款有限公司 | 一种应用测试方法、装置、终端及存储介质 |
CN109032947A (zh) * | 2018-07-27 | 2018-12-18 | 广州视源电子科技股份有限公司 | 用于操作系统的测试方法、装置、设备和存储介质 |
CN109388560A (zh) * | 2018-09-18 | 2019-02-26 | 广州小鹏汽车科技有限公司 | 基于Monkey的应用稳定性测试方法和装置 |
CN109634872B (zh) * | 2019-02-25 | 2023-03-10 | 北京达佳互联信息技术有限公司 | 应用测试方法、装置、终端及存储介质 |
CN110609838B (zh) * | 2019-09-09 | 2022-04-29 | 北京航天自动控制研究所 | 全局最优的随机事件发生时间序列与标准模板的匹配方法 |
CN111367816B (zh) * | 2020-03-25 | 2021-04-02 | 上海复深蓝软件股份有限公司 | 移动测试方法、装置、计算机设备及存储介质 |
CN113821431A (zh) * | 2020-12-31 | 2021-12-21 | 京东科技控股股份有限公司 | 测试结果的获取方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164336A (zh) * | 2013-02-22 | 2013-06-19 | 广东欧珀移动通信有限公司 | 一种移动终端上应用程序的自动化测试方法及装置 |
CN103778055A (zh) * | 2012-10-23 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 一种按键测试方法和装置 |
CN103838663A (zh) * | 2012-11-20 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种应用程序的测试方法及装置 |
WO2014117320A1 (en) * | 2013-01-29 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Generating test code to test executable code |
CN104346279A (zh) * | 2014-10-27 | 2015-02-11 | 百度在线网络技术(北京)有限公司 | 一种软件测试方法及装置 |
-
2015
- 2015-03-03 CN CN201510094246.4A patent/CN105988931B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778055A (zh) * | 2012-10-23 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 一种按键测试方法和装置 |
CN103838663A (zh) * | 2012-11-20 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种应用程序的测试方法及装置 |
WO2014117320A1 (en) * | 2013-01-29 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Generating test code to test executable code |
CN103164336A (zh) * | 2013-02-22 | 2013-06-19 | 广东欧珀移动通信有限公司 | 一种移动终端上应用程序的自动化测试方法及装置 |
CN104346279A (zh) * | 2014-10-27 | 2015-02-11 | 百度在线网络技术(北京)有限公司 | 一种软件测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
"基于Android系统的移动终端稳定性测试方法的研究与实践";董川;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130215(第02期);第2.3.2节 |
Also Published As
Publication number | Publication date |
---|---|
CN105988931A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105988931B (zh) | 测试方法及装置 | |
CN106095666B (zh) | 游戏自动化测试方法及相关装置 | |
CN109032691A (zh) | 一种小程序运行方法、装置及存储介质 | |
KR102167879B1 (ko) | 테스트 방법, 시스템, 기기 및 판독 가능 저장매체 | |
CN104484273B (zh) | 应用程序的测试方法、设备及系统 | |
CN108139953A (zh) | 用于查看内容的设备级授权 | |
CN109358851A (zh) | 图表组件的创建方法、装置及计算机可读存储介质 | |
CN107438845A (zh) | 基于屏幕分析的设备安全性 | |
CN110574105B (zh) | 用于基于语音发起定制装置动作的系统和方法 | |
CN103902057B (zh) | 在移动终端设备中进行网页输入的方法及装置 | |
CN109388532A (zh) | 测试方法、装置、电子设备及计算机可读取存储介质 | |
JP2018536952A (ja) | スマートデバイスを制御するための方法および装置、ならびにコンピュータ記憶媒体 | |
CN105094506B (zh) | 智能终端的解锁屏幕的方法、智能终端及操作平台 | |
CN102592087A (zh) | 标识出可因子分解的代码 | |
US11797427B2 (en) | Automatic generation of unit tests while running an application | |
CN104991734B (zh) | 一种对基于触屏方式的游戏实现操控的方法及装置 | |
CN109976966A (zh) | 一种应用程序启动时间统计方法、装置及系统 | |
CN106815134A (zh) | 一种app测试方法和装置 | |
CN103076974A (zh) | 一种触摸屏的解锁方法、装置及触摸屏设备 | |
CN110320378A (zh) | 质控测试申请方法、装置、设备及计算机可读存储介质 | |
JP2023516801A (ja) | 情報推奨方法、装置、電子機器及びプログラム | |
CN107908561A (zh) | 虚拟现实软件性能测试方法和系统 | |
CN109726543A (zh) | 一种应用程序的登录方法、装置、终端设备和存储介质 | |
CN108205455A (zh) | 应用的功能实现方法及装置、终端 | |
CN111352552B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240218 Address after: # 01-21, Lai Zan Da Building 1, 51 Belarusian Road, Singapore Patentee after: Alibaba Singapore Holdings Ltd. Country or region after: Singapore Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. Country or region before: Cayman Islands |