CN108415822B - 一种随机测试方法和装置 - Google Patents
一种随机测试方法和装置 Download PDFInfo
- Publication number
- CN108415822B CN108415822B CN201710074045.7A CN201710074045A CN108415822B CN 108415822 B CN108415822 B CN 108415822B CN 201710074045 A CN201710074045 A CN 201710074045A CN 108415822 B CN108415822 B CN 108415822B
- Authority
- CN
- China
- Prior art keywords
- type
- control
- event
- determining
- test
- 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 9
- 238000012360 testing method Methods 0.000 claims abstract description 206
- 238000000034 method Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims description 34
- 238000005096 rolling process Methods 0.000 claims description 20
- 241000282693 Cercopithecidae Species 0.000 description 30
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请提供一种随机测试方法和装置,应用于移动终端的测试工具,所述测试工具内置在所述移动终端包括的应用程序中,该方法包括:接收用于触发随机测试的请求消息;在接收到所述请求消息后,获取应用程序的显示界面的可操作控件;对所述可操作控件进行随机测试。通过本申请的技术方案,由于可操作控件是显示界面存在且可以操作的控件,因此,针对可操作控件进行随机测试时,可以测试成功,避免测试失效等问题,提高随机测试的有效性、测试的覆盖率、测试质量、测试效率,使得每次随机测试都可以测试成功。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种随机测试方法和装置。
背景技术
Monkey测试是自动化测试的一种快速有效的手段,用于对移动终端的应用程序(APP)进行压力测试,检测应用程序是否会发生异常、多长时间发生异常,继而检测应用程序的稳定性、健壮性。为了实现Monkey测试,可以在模拟器或者物理设备配置Monkey工具,Monkey工具可以向移动终端的应用程序发送操作事件,以使应用程序执行该操作事件,从而实现对应用程序的Monkey测试。
例如,Monkey工具先随机生成一个点击事件,并将点击事件的参数发送给移动终端的应用程序。假设应用程序的UI(User Interface,用户界面)存在按钮,则应用程序可以针对该按钮执行点击事件,从而完成Monkey测试。但是,若应用程序的UI不存在按钮,则应用程序无法执行点击事件,导致测试失效。
发明内容
本申请提供一种随机测试方法,应用于移动终端的测试工具,所述测试工具内置在所述移动终端包括的应用程序中,所述方法包括:
接收用于触发随机测试的请求消息;
在接收到所述请求消息后,获取所述应用程序的显示界面的可操作控件;
对所述可操作控件进行随机测试。
本申请提供一种随机测试方法,应用于移动终端,所述方法包括:
接收用于触发随机测试的请求消息;
在接收到所述请求消息后,获取应用程序的显示界面的可操作控件;
对所述可操作控件进行随机测试。
本申请提供一种随机测试装置,应用于移动终端,所述装置包括:
接收模块,用于接收用于触发随机测试的请求消息;
获取模块,用于在接收到所述请求消息后,获取应用程序的显示界面的可操作控件;
测试模块,用于对所述可操作控件进行随机测试。
基于上述技术方案,本申请实施例中,通过获取应用程序的显示界面的可操作控件,并对可操作控件进行随机测试,由于可操作控件是显示界面存在且可以操作的控件,因此针对可操作控件进行随机测试时,可以测试成功,避免测试失效等问题,提高随机测试的有效性,使得每次随机测试都可以测试成功。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的应用场景示意图;
图2是本申请一种实施方式中的随机测试方法的流程图;
图3是本申请另一种实施方式中的随机测试方法的流程图;
图4A-图4C是本申请另一种实施方式中的随机测试过程的示意图;
图5是本申请一种实施方式中的移动终端的硬件结构图;
图6是本申请一种实施方式中的随机测试装置的结构图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种随机测试方法,该方法可以应用于移动终端,且移动终端运行有应用程序(即APP),该方法用于对该应用程序进行随机测试。其中,随机测试具体可以包括但不限于Monkey测试,而Monkey测试是自动化测试的一种快速有效的手段,用于对应用程序进行压力测试,检测应用程序是否会发生异常、多长时间发生异常,继而检测应用程序的稳定性、健壮性。
在一个例子中,与传统方式(在模拟器或者物理设备配置测试工具)不同的是,用于进行随机测试的测试工具(如Monkey工具)可以内置在应用程序中,即测试工具配置在移动终端。基于此,为了实现随机测试,远程设备(如服务端、PC、测试设备等)可以向移动终端发送用于触发随机测试的API(Application Programming Interface,应用程序编程接口)请求消息;移动终端在接收到该API请求消息后,就执行随机测试(例如,内置在应用程序中的测试工具在接收到该API请求消息后,执行随机测试),即采用该随机测试方法进行随机测试。
参见图1所示,为该随机测试方法的应用场景示意图,为了触发随机测试,远程设备只需要向移动终端发送一个API请求消息,就可以触发内置在应用程序中的测试工具执行随机测试。而且,只要移动终端安装了内置有测试工具的应用程序,就可以启动随机测试,无需远程设备向移动终端发送其它消息。
参见图2所示,为本申请实施例提出的随机测试方法的流程图,该方法可以应用于移动终端(如应用程序中的测试工具),该方法可以包括以下步骤:
步骤201,接收用于触发随机测试的请求消息(如上述API请求消息)。
步骤202,在接收到该请求消息后,获取应用程序的显示界面的可操作控件。
步骤203,对该可操作控件进行随机测试(如Monkey测试等)。
在一个例子中,上述执行顺序只是为了方便描述所给出的一个示例,在实际应用中,还可以改变各步骤之间的执行顺序,对此执行顺序不做限制。
针对步骤202,在一个例子中,针对“获取应用程序的显示界面的可操作控件”的过程,可以包括但不限于如下方式:获取该应用程序的显示界面的每个控件的类型和属性,并根据每个控件的类型和属性确定显示界面的可操作控件。
在一个例子中,针对“获取应用程序的显示界面的每个控件的类型和属性”的过程,可以包括但不限于如下方式:获取该应用程序的显示界面的每个控件对应的子视图,并从每个控件对应的子视图中解析出每个控件的类型和属性。
其中,针对“获取该应用程序的显示界面的每个控件对应的子视图,并从每个控件对应的子视图中解析出每个控件的类型和属性”的过程,由于测试工具内置在应用程序中,因此,在执行随机测试之前,还可以先查询应用程序的显示界面(即window)的UI层级结构,该UI层级结构可以包括多个子视图(即subview),每个子视图对应一个控件,从而可以得到每个控件对应的子视图。然后,由于子视图可以包括但不限于控件的类型和属性,因此,通过递归分析所有子视图,可以获取到每个控件的类型和属性,对此过程不再详加赘述。
在一个例子中,针对“根据每个控件的类型和属性确定该显示界面的可操作控件”的过程,可以包括但不限于如下方式:针对显示界面的每个控件,若该控件的类型是第一类型,且该控件的属性是该第一类型对应的可执行属性,则将该控件确定为可操作控件;若该控件的类型是第一类型,且该控件的属性不是该第一类型对应的可执行属性,则将该控件确定为非可操作控件,即该控件不是可操作控件。若该控件的类型是第二类型,则将该控件确定为可操作控件。若该控件的类型不是第一类型和第二类型,将该控件确定为非可操作控件。
其中,可操作控件是指actionable的控件,可操作控件是显示界面存在且可以操作的控件,是一个能够有效响应操作事件的控件,可以执行自身能够响应的操作事件。例如,操作事件可以为点击事件,而按钮控件是一个可操作控件,该按钮控件是能够有效响应点击事件的控件,并且可以执行点击事件。
在一个例子中,第一类型可以包括但不限于以下之一或任意组合:控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型等。此外,第二类型可以包括添加手势识别的视图类型、添加点击测试的视图类型等。而且,该控制类型对应的可执行属性为可激活属性、该滚动视图类型对应的可执行属性为可滚动属性、该表格视图类型对应的可执行属性为可编辑属性、该集合视图类型对应的可执行属性为可编辑属性、该文本视图类型对应的可执行属性为可激活属性、该文本框类型对应的可执行属性为可激活属性。
其中,控制类型是指可以添加action(行动)的UIControl类型,如UIButton(按钮)类型。滚动视图类型是指可以scroll(滚动)的UIScrollView类型。表格视图类型是指可以复用Cell(区块)的UITableView类型,集合视图类型是指可以复用Cell的UICollectionView类型。文本视图类型是指可以输入文字的UITextView类型,文本框类型是指可以输入文字的UITextField类型。添加手势识别的视图类型是指添加了GestureRecognizer(手势识别)的UIView类型,添加点击测试的视图类型是指添加了hit test(点击测试)的UIView类型。
综上所述,若控件的类型是控制类型,且控件的属性是可激活属性(即enable),则将该控件确定为可操作控件;若控件的类型是控制类型,且控件的属性是不可激活属性,则将该控件确定为非可操作控件。若控件的类型是滚动视图类型,且控件的属性是可滚动属性(即scrollEnable),则将该控件确定为可操作控件;若控件的类型是滚动视图类型,且控件的属性是不可滚动属性,则将该控件确定为非可操作控件。若控件的类型是表格视图类型/集合视图类型,且控件的属性是可编辑属性,则将该控件确定为可操作控件;若控件的类型是表格视图类型/集合视图类型,且控件的属性是不可编辑属性,则将该控件确定为非可操作控件。若控件的类型是文本视图类型/文本框类型,且控件的属性是可激活属性,则将该控件确定为可操作控件;若控件的类型是文本视图类型/文本框类型,且控件的属性是不可激活属性,则将该控件确定为非可操作控件。若控件的类型是添加手势识别的视图类型,则将该控件确定为可操作控件;若控件的类型是添加点击测试的视图类型,则将该控件确定为可操作控件。
针对步骤203,在一个例子中,针对“对可操作控件进行随机测试”的过程,可以包括但不限于:确定该可操作控件的类型;确定与该类型对应的操作事件,该操作事件是能够有效执行的事件;利用操作事件对可操作控件进行随机测试。
其中,针对“确定该可操作控件的类型”的过程,可以从该可操作控件对应的子视图中解析出该可操作控件的类型,该可操作控件的类型可以为“控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型、添加手势识别的视图类型、添加点击测试的视图类型”中的一种。
在一个例子中,针对“确定与该类型对应的操作事件”的过程,可以包括但不限于如下方式:若该类型为控制类型,则确定操作事件为点击事件;若该类型为滚动视图类型,则确定操作事件为滚动事件;若该类型为表格视图类型,则确定操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;若该类型为集合视图类型,则确定操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;若该类型为文本视图类型,则确定操作事件为输入事件;若该类型为文本框类型,则确定操作事件为输入事件;若该类型为添加手势识别的视图类型,则确定操作事件为点击事件,或者,滚动事件,或者,滑动事件;若该类型为添加点击测试的视图类型,则确定操作事件为点击事件。
在一个例子中,由于不同类型的可操作控件可以对应不同的操作事件,因此,在确定可操作控件的类型之后,还可以确定与该类型对应的操作事件,该操作事件也就是该可操作控件需要执行的事件。进一步的,为了确定出与类型对应的操作事件,还可以配置类型与操作事件的对应关系,并可以基于此对应关系确定出与该类型对应的操作事件。例如,可以预先配置如下对应关系:控制类型与点击事件的对应关系;滚动视图类型与滚动事件的对应关系;表格视图类型与滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件的对应关系;集合视图类型与滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件的对应关系;文本视图类型与输入事件的对应关系;文本框类型与输入事件的对应关系;添加手势识别的视图类型与点击事件,或者,滚动事件,或者,滑动事件的对应关系;添加点击测试的视图类型与点击事件的对应关系。
其中,针对“利用操作事件对可操作控件进行随机测试”的过程,可以包括但不限于:将操作事件的参数(如可操作控件的位置、操作事件是点击事件、或滚动事件等)发送给应用程序,基于可操作控件的位置,应用程序可以准确定位到可操作控件,并针对该可操作控件执行该操作事件,完成随机测试。
在一个例子中,在针对该可操作控件执行该操作事件的过程中,若该操作事件是点击事件,则可以模拟用户点击该可操作控件;若该操作事件是滚动事件,则可以模拟用户滚动该可操作控件,即拖拽该可操作控件;若该操作事件是输入事件,则可以模拟用户输入预先配置的字符串;若该操作事件是滑动事件,则可以模拟用户滑动该可操作控件,即针对该可操作控件滑动轨迹球。若该操作事件是滚动事件和点击事件,则可以模拟用户先滚动该可操作控件,即拖拽该可操作控件到指定位置,然后模拟用户点击该可操作控件。以此类推。
在一个例子中,在获取到应用程序的显示界面的可操作控件(即步骤202)之后,若获取到的可操作控件为多个,则可以从多个可操作控件中随机选择一个可操作控件,并针对选择的该可操作控件进行随机测试,具体的随机测试过程可以参见上述步骤203的详细处理过程,在此不再重复赘述。
在一个例子中,在对可操作控件进行随机测试(即步骤203)之后,还可以判断是否满足测试终止策略。若满足测试终止策略,则可以输出测试结果;若不满足测试终止策略,则可以重新获取应用程序的显示界面的可操作控件,即重新执行步骤202,然后执行步骤203,以此类推,一直到满足测试终止策略。
其中,若测试时间已经达到预设时间,和/或,测试次数已经达到预设次数,则可以确定满足测试终止策略;否则,可以确定不满足测试终止策略。
基于上述技术方案,本申请实施例中,通过获取应用程序的显示界面的可操作控件,并对可操作控件进行随机测试,由于可操作控件是显示界面存在且可以操作的控件,因此,针对可操作控件进行随机测试时,可以测试成功,从而避免测试失效等问题,并且可以提高随机测试的有效性,提高测试的覆盖率,提高测试质量,提高测试效率,并使得每次随机测试都可以测试成功。
参见图3所示,为本申请实施例提出的随机测试方法的流程图,该方法可以应用于移动终端(如应用程序中的测试工具),该方法可以包括以下步骤:
步骤301,接收用于触发随机测试的API请求消息,开始随机测试过程。
步骤302,获取应用程序的显示界面的每个控件对应的子视图(subview)。
步骤303,从每个控件对应的子视图中解析出每个控件的类型和属性。
步骤304,根据每个控件的类型和属性确定该显示界面的可操作控件。
在一个例子中,针对“根据每个控件的类型和属性确定该显示界面的可操作控件”的过程,可以包括但不限于如下方式:针对显示界面的每个控件,若该控件的类型是第一类型,且该控件的属性是该第一类型对应的可执行属性,则将该控件确定为可操作控件;若该控件的类型是第一类型,且该控件的属性不是该第一类型对应的可执行属性,则将该控件确定为非可操作控件,即该控件不是可操作控件。若该控件的类型是第二类型,则将该控件确定为可操作控件。若该控件的类型不是第一类型和第二类型,将该控件确定为非可操作控件。
在一个例子中,第一类型可以包括但不限于以下之一或任意组合:控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型等。此外,第二类型可以包括添加手势识别的视图类型、添加点击测试的视图类型等。而且,该控制类型对应的可执行属性为可激活属性、该滚动视图类型对应的可执行属性为可滚动属性、该表格视图类型对应的可执行属性为可编辑属性、该集合视图类型对应的可执行属性为可编辑属性、该文本视图类型对应的可执行属性为可激活属性、该文本框类型对应的可执行属性为可激活属性。
步骤305,确定与该可操作控件的类型对应的操作事件,该操作事件是能够有效执行的事件。若步骤304中确定的可操作控件为多个,则从多个可操作控件中随机选择一个可操作控件,并确定与该可操作控件的类型对应的操作事件。
其中,针对“确定与类型对应的操作事件”的过程,可以包括但不限于如下方式:若该类型为控制类型,则确定操作事件为点击事件;若该类型为滚动视图类型,则确定操作事件为滚动事件;若该类型为表格视图类型,则确定操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;若该类型为集合视图类型,则确定操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;若该类型为文本视图类型,则确定操作事件为输入事件;若该类型为文本框类型,则确定操作事件为输入事件;若该类型为添加手势识别的视图类型,则确定操作事件为点击事件,或者,滚动事件,或者,滑动事件;若该类型为添加点击测试的视图类型,则确定操作事件为点击事件。
步骤306,利用操作事件对可操作控件进行随机测试(如Monkey测试等)。
其中,针对“利用操作事件对可操作控件进行随机测试”的过程,可以包括但不限于:将操作事件的参数(如可操作控件的位置、操作事件是点击事件、或滚动事件等)发送给应用程序,基于可操作控件的位置,应用程序可以准确定位到可操作控件,并针对该可操作控件执行该操作事件,完成随机测试。
在一个例子中,在针对该可操作控件执行该操作事件的过程中,若该操作事件是点击事件,则可以模拟用户点击该可操作控件;若该操作事件是滚动事件,则可以模拟用户滚动该可操作控件,即拖拽该可操作控件;若该操作事件是输入事件,则可以模拟用户输入预先配置的字符串;若该操作事件是滑动事件,则可以模拟用户滑动该可操作控件,即针对该可操作控件滑动轨迹球。若该操作事件是滚动事件和点击事件,则可以模拟用户先滚动该可操作控件,即拖拽该可操作控件到指定位置,然后模拟用户点击该可操作控件。以此类推。
步骤307,判断是否满足测试终止策略。如果是,则执行步骤308;如果否,则执行步骤302。其中,若测试时间已经达到预设时间,和/或,测试次数已经达到预设次数,则确定满足测试终止策略;否则,确定不满足测试终止策略。
步骤308,输出测试结果。
基于上述技术方案,本申请实施例中,通过获取应用程序的显示界面的可操作控件,并对可操作控件进行随机测试,由于可操作控件是显示界面存在且可以操作的控件,因此,针对可操作控件进行随机测试时,可以测试成功,从而避免测试失效等问题,并且可以提高随机测试的有效性,提高测试的覆盖率,提高测试质量,提高测试效率,并使得每次随机测试都可以测试成功。
以下结合具体的应用场景,对本申请实施例的上述技术方案进行详细说明。
本应用场景下,如图4A所示,应用程序的显示界面包括控件A、控件B和控件C,内置在应用程序中的Monkey工具分别获取控件A对应的子视图、控件B对应的子视图、控件C对应的子视图。Monkey工具从控件A对应的子视图中解析出控件A的类型和属性,假设为控制类型和可激活属性(即enable);Monkey工具从控件B对应的子视图中解析出控件B的类型和属性,假设为表格视图类型和可编辑属性;Monkey工具从控件C对应的子视图中解析出控件C的类型和属性,假设为控制类型和不可激活属性。
由于控件A的类型和控件B的类型是第一类型,控件A的属性和控件B的属性是可执行属性,因此,Monkey工具确定控件A和控件B是可操作控件。由于控件C的类型是第一类型,但控件A的属性不是可执行属性,因此Monkey工具确定控件C不是可操作控件,即可操作控件为控件A和控件B。
在确定控件A和控件B是可操作控件之后,Monkey工具从控件A和控件B中随机选取一个控件,假设选取控件A,则Monkey工具确定与控件A的类型对应的操作事件,即与控制类型对应的点击事件。假设选取控件B,则Monkey工具确定与控件B的类型对应的操作事件,即与表格视图类型对应的输入事件。
在一个例子中,假设选取控件A,Monkey工具可以将控件A的位置(Monkey工具可以从控件A对应的子视图中解析出控件A的位置)、点击事件等参数发送给应用程序。应用程序可以基于控件A的位置准确定位到控件A,并模拟用户点击控件A,如图4B所示。假设选取控件B,Monkey工具可以将控件B的位置(Monkey工具可以从控件B对应的子视图中解析出控件B的位置)、输入事件等参数发送给应用程序。应用程序可以基于控件B的位置准确定位到控件B,并模拟用户输入预先配置的字符串(如abcded),如图4C所示。
经过上述操作,就可以利用点击事件对控件A进行Monkey测试,或者利用输入事件对控件B进行Monkey测试,具体的Monkey测试过程不再赘述。
若Monkey测试结束后,未满足测试终止策略,则返回重新执行上述过程,以此类推,一直到满足测试终止策略,并输出Monkey测试的测试结果。
基于与上述方法同样的申请构思,本申请实施例还提供一种随机测试装置120,该随机测试装置120应用在移动终端10上。随机测试装置120可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的移动终端10的处理器11,读取非易失性存储器12中对应的计算机程序指令形成的。从硬件层面而言,如图5所示,为随机测试装置120所在的移动终端10的硬件结构图,除图5所示的处理器11、非易失性存储器12外,移动终端10还可以包括其它硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,移动终端10还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图6所示,为本申请提出的随机测试装置的结构图,所述装置包括:
接收模块1201,用于接收用于触发随机测试的请求消息;
获取模块1202,用于在所述接收模块1201接收到所述请求消息后,获取应用程序的显示界面的可操作控件;
测试模块1203,用于对所述可操作控件进行随机测试。
在一个例子中,所述获取模块1202,具体用于在获取应用程序的显示界面的可操作控件的过程中,获取应用程序的显示界面的每个控件的类型和属性;根据每个控件的类型和属性确定所述显示界面的可操作控件;
所述获取模块1202,具体用于在获取应用程序的显示界面的每个控件的类型和属性的过程中,获取应用程序的显示界面的每个控件对应的子视图;从每个控件对应的子视图中解析出每个控件的类型和属性;
所述获取模块1202,具体用于在根据每个控件的类型和属性确定所述显示界面的可操作控件的过程中,若控件的类型是第一类型,且控件的属性是所述第一类型对应的可执行属性,将所述控件确定为可操作控件;若控件的类型是第一类型,且控件的属性不是所述第一类型对应的可执行属性,将所述控件确定为非可操作控件;若控件的类型是第二类型,则将所述控件确定为可操作控件;若控件的类型不是第一类型和第二类型,将所述控件确定为非可操作控件;
其中,所述第一类型包括以下之一或者任意组合:控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型;
所述第二类型包括添加手势识别的视图类型、添加点击测试的视图类型;
所述控制类型对应的可执行属性为可激活属性、所述滚动视图类型对应的可执行属性为可滚动属性、所述表格视图类型对应的可执行属性为可编辑属性、所述集合视图类型对应的可执行属性为可编辑属性、所述文本视图类型对应的可执行属性为可激活属性、所述文本框类型对应的可执行属性为可激活属性。
所述测试模块1203,具体用于在对所述可操作控件进行随机测试的过程中,确定所述可操作控件的类型;确定与所述类型对应的操作事件,所述操作事件是能够有效执行的事件;利用所述操作事件对所述可操作控件进行随机测试。
在一个例子中,所述测试模块1203,具体用于在确定与所述类型对应的操作事件的过程中,若所述类型为控制类型,则确定所述操作事件为点击事件;
若所述类型为滚动视图类型,则确定所述操作事件为滚动事件;
若所述类型为表格视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为集合视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为文本视图类型,则确定所述操作事件为输入事件;
若所述类型为文本框类型,则确定所述操作事件为输入事件;
若所述类型为添加手势识别的视图类型,则确定所述操作事件为点击事件,或者,滚动事件,或者,滑动事件;
若所述类型为添加点击测试的视图类型,则确定所述操作事件为点击事件。
在一个例子中,所述随机测试装置应用于移动终端的测试工具,所述测试工具内置在所述移动终端包括的应用程序中;所述随机测试具体为Monkey测试;所述获取模块1202,还用于在所述测试模块1203对所述可操作控件进行随机测试之后,判断是否满足测试终止策略;若满足测试终止策略,则输出测试结果;若不满足测试终止策略,则重新获取应用程序的显示界面的可操作控件;其中,若测试时间已经达到预设时间,和/或,测试次数已经达到预设次数,则确定满足测试终止策略;否则,确定不满足测试终止策略。
基于上述技术方案,本申请实施例中,通过获取应用程序的显示界面的可操作控件,并对可操作控件进行随机测试,由于可操作控件是显示界面存在且可以操作的控件,因此,针对可操作控件进行随机测试时,可以测试成功,从而避免测试失效等问题,并且可以提高随机测试的有效性,提高测试的覆盖率,提高测试质量,提高测试效率,并使得每次随机测试都可以测试成功。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可以采用完全硬件实施例、完全软件实施例、或者结合软件和硬件方面的实施例的形式。而且,本申请可以采用在一个或者多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种随机测试方法,其特征在于,应用于移动终端的测试工具,所述测试工具内置在所述移动终端包括的应用程序中,所述方法包括:
接收用于触发随机测试的请求消息;
在接收到所述请求消息后,获取所述应用程序的显示界面的可操作控件;
对所述可操作控件进行随机测试;
其中,所述获取所述应用程序的显示界面的可操作控件,包括:获取所述应用程序的显示界面的每个控件的类型和属性;其中,所述控件的属性是可执行属性或者不是可执行属性;根据每个控件的类型和属性确定所述显示界面的可操作控件;其中,若控件的类型是第一类型,且控件的属性是所述第一类型对应的可执行属性,则将所述控件确定为可操作控件;若控件的类型是第一类型,且控件的属性不是所述第一类型对应的可执行属性,则将所述控件确定为非可操作控件;若控件的类型是第二类型,则将所述控件确定为可操作控件;若控件的类型不是第一类型和第二类型,将所述控件确定为非可操作控件。
2.根据权利要求1所述的方法,其特征在于,所述获取所述应用程序的显示界面的每个控件的类型和属性的过程,具体包括:
获取所述应用程序的显示界面的每个控件对应的子视图;
从每个控件对应的子视图中解析出每个控件的类型和属性。
3.一种随机测试方法,应用于移动终端,其特征在于,所述方法包括:
接收用于触发随机测试的请求消息;
在接收到所述请求消息后,获取应用程序的显示界面的可操作控件;
对所述可操作控件进行随机测试;
其中,所述获取应用程序的显示界面的可操作控件,包括:获取应用程序的显示界面的每个控件的类型和属性;其中,所述控件的属性是可执行属性,或者不是可执行属性;根据每个控件的类型和属性确定所述显示界面的可操作控件;其中,若控件的类型是第一类型,且控件的属性是所述第一类型对应的可执行属性,则将所述控件确定为可操作控件;若控件的类型是第一类型,且控件的属性不是所述第一类型对应的可执行属性,则将所述控件确定为非可操作控件;若控件的类型是第二类型,则将所述控件确定为可操作控件;若控件的类型不是第一类型和第二类型,将所述控件确定为非可操作控件。
4.根据权利要求3所述的方法,其特征在于,
所述获取应用程序的显示界面的每个控件的类型和属性的过程,具体包括:
获取应用程序的显示界面的每个控件对应的子视图;
从每个控件对应的子视图中解析出每个控件的类型和属性。
5.根据权利要求3所述的方法,其特征在于,
所述第一类型包括以下之一或者任意组合:控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型;
所述第二类型包括添加手势识别的视图类型、添加点击测试的视图类型;
所述控制类型对应的可执行属性为可激活属性、所述滚动视图类型对应的可执行属性为可滚动属性、所述表格视图类型对应的可执行属性为可编辑属性、所述集合视图类型对应的可执行属性为可编辑属性、所述文本视图类型对应的可执行属性为可激活属性、所述文本框类型对应的可执行属性为可激活属性。
6.根据权利要求3所述的方法,其特征在于,
所述对所述可操作控件进行随机测试的过程,具体包括:
确定所述可操作控件的类型;
确定与所述类型对应的操作事件,所述操作事件是能够有效执行的事件;
利用所述操作事件对所述可操作控件进行随机测试。
7.根据权利要求6所述的方法,其特征在于,
所述确定与所述类型对应的操作事件的过程,具体包括:
若所述类型为控制类型,则确定所述操作事件为点击事件;
若所述类型为滚动视图类型,则确定所述操作事件为滚动事件;
若所述类型为表格视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为集合视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为文本视图类型,则确定所述操作事件为输入事件;
若所述类型为文本框类型,则确定所述操作事件为输入事件;
若所述类型为添加手势识别的视图类型,则确定所述操作事件为点击事件,或者,滚动事件,或者,滑动事件;
若所述类型为添加点击测试的视图类型,则确定所述操作事件为点击事件。
8.根据权利要求3-7任一项所述的方法,其特征在于,
所述对所述可操作控件进行随机测试之后,所述方法还包括:
若满足测试终止策略,则输出测试结果;
若不满足测试终止策略,则重新获取应用程序的显示界面的可操作控件;
其中,若测试时间已经达到预设时间,和/或,测试次数已经达到预设次数,则确定满足测试终止策略;否则,确定不满足测试终止策略。
9.一种随机测试装置,应用于移动终端,其特征在于,所述装置包括:
接收模块,用于接收用于触发随机测试的请求消息;
获取模块,用于在接收到所述请求消息后,获取应用程序的显示界面的可操作控件;
测试模块,用于对所述可操作控件进行随机测试;
其中,所述获取模块,具体用于在获取应用程序的显示界面的可操作控件的过程中,获取应用程序的显示界面的每个控件的类型和属性;根据每个控件的类型和属性确定所述显示界面的可操作控件;其中,所述控件的属性是可执行属性或者不是可执行属性;其中,若控件的类型是第一类型,且控件的属性是所述第一类型对应的可执行属性,则将所述控件确定为可操作控件;若控件的类型是第一类型,且控件的属性不是所述第一类型对应的可执行属性,则将所述控件确定为非可操作控件;若控件的类型是第二类型,则将所述控件确定为可操作控件;若控件的类型不是第一类型和第二类型,将所述控件确定为非可操作控件。
10.根据权利要求9所述的装置,其特征在于,
所述获取模块,具体用于在获取应用程序的显示界面的每个控件的类型和属性的过程中,获取应用程序的显示界面的每个控件对应的子视图;从每个控件对应的子视图中解析出每个控件的类型和属性;
其中,所述第一类型包括以下之一或者任意组合:控制类型、滚动视图类型、表格视图类型、集合视图类型、文本视图类型、文本框类型;
所述第二类型包括添加手势识别的视图类型、添加点击测试的视图类型;
所述控制类型对应的可执行属性为可激活属性、所述滚动视图类型对应的可执行属性为可滚动属性、所述表格视图类型对应的可执行属性为可编辑属性、所述集合视图类型对应的可执行属性为可编辑属性、所述文本视图类型对应的可执行属性为可激活属性、所述文本框类型对应的可执行属性为可激活属性。
11.根据权利要求9所述的装置,其特征在于,
所述测试模块,具体用于在对所述可操作控件进行随机测试的过程中,确定所述可操作控件的类型;确定与所述类型对应的操作事件,所述操作事件是能够有效执行的事件;利用所述操作事件对所述可操作控件进行随机测试。
12.根据权利要求11所述的装置,其特征在于,
所述测试模块,具体用于在确定与所述类型对应的操作事件的过程中,若所述类型为控制类型,则确定所述操作事件为点击事件;
若所述类型为滚动视图类型,则确定所述操作事件为滚动事件;
若所述类型为表格视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为集合视图类型,则确定所述操作事件为滚动事件和点击事件,或者,滚动事件和输入事件,或者,点击事件,或者,输入事件;
若所述类型为文本视图类型,则确定所述操作事件为输入事件;
若所述类型为文本框类型,则确定所述操作事件为输入事件;
若所述类型为添加手势识别的视图类型,则确定所述操作事件为点击事件,或者,滚动事件,或者,滑动事件;
若所述类型为添加点击测试的视图类型,则确定所述操作事件为点击事件。
13.根据权利要求9所述的装置,其特征在于,所述随机测试装置应用于移动终端的测试工具,所述测试工具内置在所述移动终端包括的应用程序中;
所述获取模块,还用于在所述测试模块对所述可操作控件进行随机测试之后,判断是否满足测试终止策略;若满足测试终止策略,则输出测试结果;若不满足测试终止策略,则重新获取应用程序的显示界面的可操作控件;
其中,若测试时间已经达到预设时间,和/或,测试次数已经达到预设次数,则确定满足测试终止策略;否则,确定不满足测试终止策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710074045.7A CN108415822B (zh) | 2017-02-10 | 2017-02-10 | 一种随机测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710074045.7A CN108415822B (zh) | 2017-02-10 | 2017-02-10 | 一种随机测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415822A CN108415822A (zh) | 2018-08-17 |
CN108415822B true CN108415822B (zh) | 2022-09-20 |
Family
ID=63125118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710074045.7A Active CN108415822B (zh) | 2017-02-10 | 2017-02-10 | 一种随机测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108415822B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990283A (zh) * | 2019-12-04 | 2020-04-10 | 中国直升机设计研究所 | 一种机载显控软件健壮性自动测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598380A (zh) * | 2015-01-16 | 2015-05-06 | 广东欧珀移动通信有限公司 | 一种基于控件的自动化测试方法及*** |
CN105607993A (zh) * | 2015-09-30 | 2016-05-25 | 北京奇虎科技有限公司 | 一种对应用的用户界面ui进行测试的方法和装置 |
CN106033393A (zh) * | 2015-03-13 | 2016-10-19 | 展讯通信(天津)有限公司 | 一种应用程序测试方法及***以及移动终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9841839B2 (en) * | 2013-10-07 | 2017-12-12 | Tactual Labs Co. | System for measuring latency on a touch device |
CN104063324B (zh) * | 2014-07-10 | 2017-11-24 | 上海斐讯数据通信技术有限公司 | 一种Monkey测试方法及*** |
CN105550101A (zh) * | 2015-12-02 | 2016-05-04 | 北京奇虎科技有限公司 | 一种用于应用程序的测试方法、电子设备及*** |
CN106168923A (zh) * | 2016-06-30 | 2016-11-30 | 北京奇虎科技有限公司 | 一种功能遍历与界面遍历方法及*** |
CN106383780A (zh) * | 2016-09-05 | 2017-02-08 | 努比亚技术有限公司 | 一种Monkey测试方法及装置 |
-
2017
- 2017-02-10 CN CN201710074045.7A patent/CN108415822B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598380A (zh) * | 2015-01-16 | 2015-05-06 | 广东欧珀移动通信有限公司 | 一种基于控件的自动化测试方法及*** |
CN106033393A (zh) * | 2015-03-13 | 2016-10-19 | 展讯通信(天津)有限公司 | 一种应用程序测试方法及***以及移动终端 |
CN105607993A (zh) * | 2015-09-30 | 2016-05-25 | 北京奇虎科技有限公司 | 一种对应用的用户界面ui进行测试的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108415822A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729227B (zh) | 应用程序测试范围确定方法、***、服务器和存储介质 | |
US9280451B2 (en) | Testing device | |
CN111427803B (zh) | 自动化随机测试方法、装置、计算机设备及介质 | |
CN108459792B (zh) | 一种流量切换方法、装置、及计算机设备 | |
CN106604362B (zh) | 一种无线保真Wi-Fi扫描方法及移动终端 | |
US20140298297A1 (en) | Automatic feature-driven testing and quality checking of applications | |
CN105302717A (zh) | 一种大数据平台的检测方法及装置 | |
CN107656864A (zh) | 一种基于概率模型的移动应用自动化测试方法 | |
CN107608609B (zh) | 一种事件对象发送方法与装置 | |
CN103353858B (zh) | 一种基于动作触摸模拟的自动化测试方法和装置 | |
CN108628732B (zh) | 一种应用界面控件遍历测试方法及装置 | |
CN105302714A (zh) | 一种测试过程中内存泄漏的监控方法和装置 | |
CN114546738A (zh) | 服务器通用测试方法、***、终端及存储介质 | |
CN103034575A (zh) | 崩溃分析方法和装置 | |
CN103092748A (zh) | 一种确定需要进行回归测试的测试用例的方法及*** | |
CN103049373A (zh) | 一种崩溃的定位方法和装置 | |
CN105512562B (zh) | 一种漏洞挖掘方法、装置及电子设备 | |
CN104156305A (zh) | 一种应用程序测试方法及装置 | |
CN106528429A (zh) | 一种ui界面测试方法及装置 | |
CN109726543A (zh) | 一种应用程序的登录方法、装置、终端设备和存储介质 | |
CN107544902B (zh) | 程序测试方法、装置和设备 | |
CN108415822B (zh) | 一种随机测试方法和装置 | |
CN113778878A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
EP2360578B1 (en) | A method for detecting user screens in mobile devices working under symbian operating system | |
KR101794016B1 (ko) | 분산 컴퓨팅 기반의 어플리케이션 객체 분석 방법, 이를 수행하는 어플리케이션 객체 분석 서버 및 이를 저장하는 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240208 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: United Kingdom |
|
TR01 | Transfer of patent right |