用户界面交互功能的测试方法和装置与流程

文档序号:14268321阅读:615来源:国知局

本发明涉及计算机测试技术领域,尤其涉及一种用户界面交互功能的测试方法和装置。



背景技术:

对正在开发的应用程序,通常要进行压力测试(也称为稳定性测试),以测试其运行稳定性、健壮性。在进行自动化测试时,通常向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试。



技术实现要素:

本发明实施例提供一种用户界面ui交互功能的测试方法,以提升测试覆盖率和效率。该方法包括:

针对应用程序,构建测试用例对象的集合,其中,通过将每一测试用例对象传入应用程序编程接口以启动所述应用程序中与该测试用例对象对应的ui交互组件,所述ui交互组件用于展示相应的ui;

当进行测试时,执行如下处理:

从所述测试用例对象集合中选择一测试用例对象,通过将所选择的测试用例对象传入应用程序编程接口,启动所选择的测试用例对象所对应的ui交互组件以展示所述ui交互组件对应的ui;

获得对所述ui中至少一个控件的操作的执行结果;

根据所述执行结果,确定测试结果。

本发明实施例提供一种用户界面ui交互功能的测试装置,以提升测试覆盖率。该方法包括:

构建模块,用于针对应用程序,构建测试用例对象的集合,其中,通过将每一测试用例对象传入应用程序编程接口以启动所述应用程序中与该测试用例对象对应的ui交互组件,所述ui交互组件用于展示相应的ui;

测试模块,用于当进行测试时,执行如下处理:从所述测试用例对象集合中选择一测试用例对象,通过将所选择的测试用例对象传入应用程序编程接口,启动所选择的测试用例对象所对应的ui交互组件以展示所述ui交互组件对应的ui;获得对所述ui中至少一个控件的操作的执行结果;根据所述执行结果,确定测试结果。

采用上述技术方案,通过从所述测试用例对象集合中选择一测试用例对象以启动所选择的测试用例对象所对应的ui交互组件以展示所述ui交互组件对应的ui,提升了测试覆盖率和效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所涉及的实施环境示意图;

图2为本发明实施例中一种ui交互功能的测试方法的流程示意图;

图3为本发明实施例中一种ui交互功能的测试配置方法的流程示意图;

图4为本发明实施例中测试配置用户界面的示意图;

图5为本发明实施例中一种构建测试用例对象的集合的方法的流程示意图;

图6为本发明实施例中一种构建测试用例对象的集合的方法的流程示意图;

图7为本发明实施例中一种ui交互功能的测试方法的流程示意图;

图8为本发明实施例提供的一种ui交互功能的测试装置的结构示意图;

图9为本发明实施例提供的一种ui交互功能的测试装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的发明人在研究过程中发现,在进行测试时,在随机启动了某个ui交互组件以展示(例如,android操作系统中的活动)其对应的ui后,还会该ui界面中随机操作控件,并启动该控件对应ui交互组件以展示相应的下一级ui,然后再在该下一级ui中随机操作控件,并启动该下一级ui中控件对应ui交互组件以展示相应的再下一级ui,并继续在该再下一级ui中进行测试。这样,压力测试就“卡”在了初始启动的ui交互组件上,而很难跳出该ui交互组件和与其关联的下级ui交互组件,跳转到与其它分支上的ui交互组件。

有鉴于此,本发明实施例提出了ui交互功能的测试方法和装置。图1为本发明实施例所涉及的实施环境示意图。参见图1,该实施环境包括测试服务器110和终端设备120。

测试服务器110可以是一台服务器,或者由若干台服务器组成的服务器群,或者是一个云计算服务中心。

终端设备120可以是具有数据计算处理功能的终端设备,包括但不限于(安装有通信模块的)智能手机、掌上电脑、平板电脑、智能电视(smarttv)等。这些通信终端上都安装有操作系统,包括但不限于:android操作系统、symbian操作系统、windowsmobile操作系统、以及苹果iphoneos操作系统等等。在本实施例中,该终端设备120中安装有测试应用121和应用程序122,其中,测试应用121从测试服务器获取测试指令和测试配置信息,对应用程序120进行测试配置并对其进行测试,然后将测试结果上报至测试服务器110。

在一个实施方式中,终端设备120上安装有android操作系统。android操作系统的应用程序122包含用户界面(ui)交互组件,例如,活动(activity)是应用程序中负责与用户交互的组件,为应用程序提供可视化用户界面。在android操作系统中,通常需要借助于意图(intent)对象来启动ui交互组件及传递数据,它是应用程序内不同组件之间通信的载体。例如,在启动一个活动时,该intent对象包含启动该活动所需要的信息,例如,动作(action)和组件类型(category)属性。这样,发送intent对象的组件就通过动作属性和类型属性联合筛选确定的一个或多个活动,并启动。

图2为本发明实施例中一种ui交互功能的测试方法的示例性流程图。如图2所示,该方法可以包括如下步骤:

步骤201:针对应用程序,构建测试用例对象的集合。

其中,通过将每一测试用例对象传入应用程序编程接口以启动所述应用程序中与该测试用例对象对应的ui交互组件,所述ui交互组件用于展示相应的ui。

步骤202:当进行测试时,执行如下处理:从所述测试用例对象集合中选择一测试用例对象,通过将所选择的测试用例对象传入应用程序编程接口,启动所选择的测试用例对象所对应的ui交互组件以展示所述ui交互组件对应的ui;获得对所述ui中至少一个控件的操作的执行结果;根据所述执行结果,确定测试结果。

在一个实施方式中,当进行测试时,接收来自测试服务器的测试配置指令,所述测试配置指令指示测试所述应用程序中指定ui交互组件。从所述测试用例对象集合中选择一测试用例对象,包括:根据所述测试配置指令所述从测试用例对象集合中选择所述指定ui交互组件对应的测试用例对象。

在一个实施方式中,在启动所选择的测试用例对象所对应的ui交互组件之后,根据预设的定时器时长,启动定时器;当所述定时器超时,判断当前是否展示所述ui交互组件对应的ui,如果否,从所述测试用例对象集合中再选择所述ui交互组件对应的测试用例对象,再启动所述测试用例对象对应的ui交互组件,获得对所述ui中至少一个控件的操作的执行结果,根据所述执行结果,确定测试结果。

在一个实施方式中,所述从所述测试用例对象集合中选择一测试用例对象,包括:根据预设的测试周期,周期性地从所述测试用例对象集合中选择一测试用例对象。

在一个实施方式中,当进行测试时,响应于针对所述应用程序的测试操作,生成所述测试操作对应的测试用例对象;通过将所生成的测试用例对象传入所述应用程序编程接口,启动所生成的测试用例对象所对应的第二ui交互组件以展示所述第二ui交互组件对应的第二ui;获得对所述第二ui中至少一个控件的操作的第二执行结果;根据所述第二执行结果,确定第二测试结果。

在一个实施方式中,所述构建测试用例对象的集合,包括:响应于ui交互操作,生成所述ui交互操作能够启动的ui交互组件对应的测试用例对象,将所述生成的测试用例对象添加到所述测试用例对象集合。

在一个实施方式中,所述构建测试用例对象的集合,包括:响应于ui交互操作,生成所述ui交互操作能够启动的ui交互组件对应的测试用例对象,将所生成的测试用例对象添加到所述测试用例对象的集合中,并将其插入队列;判断所述队列是否为空,如果否,从所述队列取出一测试用例对象,通过将所取出的测试用例对象传入所述应用程序编程接口,启动所述所取出的测试用例对象对应的ui交互组件以展示所述ui交互组件对应的ui;针对所展示的ui中所包含的每个控件,响应于对所述控件的ui操作,生成所述控件对应的子ui交互组件的测试用例对象,将所生成的测试用例对象添加到所述测试用例对象集合中,并将其插入队列;返回执行所述判断所述队列是否为空的处理。

在一个实施方式中,在构建测试用例对象的集合后,将所述测试用例对象集合中的测试用例对象发送至测试服务器,以使所述测试服务器将所述测试用例对象转发至另一终端设备。

在一个实施方式中,所述构建测试用例对象的集合,包括:接收来自测试服务器的测试用例对象,并将其添加到所述测试用例对象的集合。

图3为本发明实施例中一种ui交互功能的测试配置方法的示例性流程图。如图3所示,该方法包括如下步骤:

步骤301:响应于测试配置操作,测试服务器生成测试配置消息,并将其发送至指定的终端设备。

如图4所示,在测试配置用户界面中,测试人员可以选择测试应用程序、测试应用、被测应用程序安装包、测试设备。通过选择“测试应用程序”,可以确定被测试的应用程序,其中,测试应用程序为被测试的应用程序,可以包括腾讯体育(android操作系统)、腾讯体育(ios操作系统)、腾讯新闻(android操作系统)、腾讯新闻(ios操作系统)等。测试应用为一种测试工具,通过选择测试应用,可以确定本次测试所使用的测试应用,其中,测试应用可以包括应用稳定性测试应用(比如,android猴子(monkey)工具、googlemonkey工具、robotiummonkey工具)。通过选择被测试应用程序安装包,可以确定本次被测应用程序对应的版本安装包。例如,当选择被测应用程序为腾讯体育(android操作系统),可以确定腾讯体育4.2.1版本安装包。通过选择测试设备,可以确定参与本次测试的终端设备。

进一步地,如图4所示,在测试配置用户界面中,测试人员可以从ui交互组件列表中选择测试ui交互组件。通过选择测试ui交互组件,可以确定本次测试的ui交互组件,例如,关于活动(aboutactivity)、辅助活动(assistactivity)、通道预览活动(channelpreviewactivity)、通道搜索活动(channelsearchactivity)等。

针对所选择的每个被测终端设备,该测试配置消息携带了测试应用标识;如果确定该终端设备上已安装了该被测应用程序安装包,该测配置消息中携带被测应用程序安装包标识,否则,该测试配置消息中携带该被测应用程序安装包。进一步地,如果还选择了ui交互组件,该测试配置消息中还需携带测试ui交互组件标识。

步骤302:终端设备接收该测试配置消息,执行测试配置。

如果该测试配置消息中携带了被测应用程序安装包,终端设备通过该安装包安装该被测应用程序。根据该消测试配置息中携带的测试应用标识,启动该测试应用。如果该配置消息中携带了被测ui交互组件标识,将该ui交互组件标识转发至该测试应用。

步骤303:终端设备启动该被测试应用程序,通过测试应用对该应用程序进行测试。

图5为本发明实施例中一种构建测试用例对象的集合的方法的示例性流程图。在本实施例中,ui交互组件是以该被测应用程序中的活动(activity)为例,测试用例对象是以与活动对应的intent对象为例,测试用例对象的集合为intent对象集合。在本实施例中,可以通过接收到来自测试服务器的构造测试用例对象集合指令来触发执行该方法,也可以周期性执行该方法以构建测试用例对象集合,或者采用其它方式触发执行该方法,本发明对此不做限定。如图5所示,该方法包括如下步骤:

步骤501:启动该应用程序,获取主活动(mainactivity)对应的intent对象,将所生成的intent对象添加到所述测试用例对象的集合中,并将其插入队列。

主活动是创建该应用程序的android工程时默认的主页面,例如,微信应用程序中的好友列表页面。

步骤502:判断该队列是否为空。

如果是,执行结束。如果否,执行步骤503。

步骤503:从该队列取出一intent对象,通过将所取出的intent对象传入所述应用程序编程接口,启动该intent对象对应的活动,展示该活动对应的ui。

步骤504:针对展示的ui上每个控件,执行点击操作,如果响应于该点击操作跳转至另一活动,获取所跳转至的活动对应的intent对象,将该intent对象添加到intent对象集合中,并将其插入队列,返回步骤502。

其中,存储在intent对象集合中的intent对象可以通过终端设备机型、活动名称等信息进行标识。例如,intent对象可以标识为honor_intent_assistactivity、honor_intent_adlandingpagingactivity、honor_intent_associatematchactivity、honor_intent_bbscircledetailactivity等。

根据上述广度遍历的构建方法,所构建的intent对象集合包括该应用程序中所有活动对应的intent对象,使所构建的intent对象集合全面、完整。

图6为本发明实施例中一种构建测试用例对象的集合的方法的示例性流程图。如图6所示,ui交互组件是以该被测应用程序中的活动(activity)为例,测试用例对象是以与活动对应的intent对象为例,测试用例对象的集合为intent对象集合,该方法包括如下步骤:

步骤601:第一终端设备将本地intent对象集合中至少一个intent对象发送至测试服务器。

步骤602:测试服务器接收来自第一终端设备的至少一个intent对象,并将其存储在数据库中。

步骤603:测试服务器从数据库中获取适用于第二终端设备的至少一个intent对象。

步骤604:测试服务器将适用于第二终端设备的至少一个intent对象发送至第二终端设备。

步骤605:第二终端设备接收来自测试服务器的至少一个intent对象,并将其添加到本地intent对象集合中。

在上述方法中,步骤601-602与步骤603-604可以顺序执行,也可以同时执行,本发明对此不做限定。

图7为本发明实施例中一种ui交互功能的测试方法的示例性流程图。如图7所示,ui交互组件是以该被测应用程序中的活动(activity)为例,测试用例对象是以与活动对应的intent对象为例,测试用例对象的集合为intent对象集合,该方法应用于终端设备,可以包括如下步骤:

步骤701:接收来自测试服务器的测试配置指令,该测试指令指示测试所述应用程序中指定被测活动;

步骤702:从intent对象集合中选择所述指定活动对应的intent对象。

步骤703:通过将所选择的intent对象传入应用程序编程接口,启动所选择的活动以展示该活动对应的ui,并根据预设的定时器时长启动定时器。

步骤704:获得对该ui中至少一个控件的操作的执行结果,根据所述执行结果,确定测试结果。

步骤705:当所述定时器超时,判断当前是否展示所述指定活动对应的ui,如果否,从intent对象集合中再选择所述指定活动对应的intent对象,再启动该intent对象对应的指定活动,获得对该ui中至少一个控件的操作的执行结果,根据所述执行结果,确定测试结果。

在一个实施方式中,可以判断当前展示的ui所对应的活动的标识是否为所指定的活动的标识,如果是,确定当前正在展示所指定的活动对应的ui。

根据上述方法,在进行测试时,在每个周期中,都会检测当前是否正在测试指定活动,从而,提高了对特定活动的测试效率。在一个具体实例中,采用上述方法分别对腾讯体育4.0版本应用程序进行测试。其中,在相同长时间的压力测试中,未采用上述方法的测试发现了3个漏洞(bug),采用上述方法进行测试发现了7个漏洞;在相同长时间的内存泄露测试中,未采用上述方法的测试发现了1个漏洞,采用上述方法进行测试发现了3个漏洞。可见,上述方法能够大幅提升了测试效率。

下述为本发明装置实施例,可以用于执行本发明对应的方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例中的描述。

图8为本发明实施例提供的一种ui交互功能的测试装置的结构示意图。如图8所示,该装置800包括:构建模块801、测试模块802。其中,

构建模块801用于针对应用程序,构建测试用例对象的集合,其中,通过将每一测试用例对象传入应用程序编程接口以启动所述应用程序中与该测试用例对象对应的ui交互组件,所述ui交互组件用于展示相应的ui;

测试模块802用于当进行测试时,执行如下处理:从所述测试用例对象集合中选择一测试用例对象,通过将所选择的测试用例对象传入应用程序编程接口,启动所选择的测试用例对象所对应的ui交互组件以展示所述ui交互组件对应的ui;获得对所述ui中至少一个控件的操作的执行结果;根据所述执行结果,确定测试结果。

在一个实施方式中,所述测试模块802进一步用于当进行测试时,接收来自测试服务器的测试配置指令,所述测试配置指令指示测试所述应用程序中指定ui交互组件;

所述测试模块802用于根据所述测试配置指令所述从测试用例对象集合中选择所述指定ui交互组件对应的测试用例对象。

在一个实施方式中,所述测试模块802进一步用于在启动所选择的测试用例对象所对应的ui交互组件之后,根据预设的定时器时长,启动定时器;当所述定时器超时,判断当前是否展示所述ui交互组件对应的ui,如果否,从所述测试用例对象集合中再选择所述ui交互组件对应的测试用例对象,再启动所述测试用例对象对应的ui交互组件,获得对所述ui中至少一个控件的操作的执行结果,根据所述执行结果,确定测试结果。

在一个实施方式中,所述测试模块802用于根据预设的测试周期,周期性地从所述测试用例对象集合中选择一测试用例对象。

在一个实施方式中,所述测试模块802进一步用于当进行测试时,响应于针对所述应用程序的测试操作,生成所述测试操作对应的测试用例对象;通过将所生成的测试用例对象传入所述应用程序编程接口,启动所生成的测试用例对象所对应的第二ui交互组件以展示所述第二ui交互组件对应的第二ui;获得对所述第二ui中至少一个控件的操作的第二执行结果;根据所述第二执行结果,确定第二测试结果。

在一个实施方式中,所述构建模块801用于响应于ui交互操作,生成所述ui交互操作能够启动的ui交互组件对应的测试用例对象,将所述生成的测试用例对象添加到所述测试用例对象集合。

在一个实施方式中,所述构建模块801用于响应于ui交互操作,生成所述ui交互操作能够启动的ui交互组件对应的测试用例对象,将所生成的测试用例对象添加到所述测试用例对象的集合中,并将其插入队列;判断所述队列是否为空,如果否,从所述队列取出一测试用例对象,通过将所取出的测试用例对象传入所述应用程序编程接口,启动所述所取出的测试用例对象对应的ui交互组件以展示所述ui交互组件对应的ui;针对所展示的ui中所包含的每个控件,响应于对所述控件的ui操作,生成所述控件对应的子ui交互组件的测试用例对象,将所生成的测试用例对象添加到所述测试用例对象集合中,并将其插入队列;返回执行所述判断所述队列是否为空的处理。

在一个实施方式中,该装置800进一步包括:上报模块803,用于在构建测试用例对象的集合后,将所述测试用例对象集合中的测试用例对象发送至测试服务器,以使所述测试服务器将所述测试用例对象转发至另一终端设备。

在一个实施方式中,所述构建模块801用于接收来自测试服务器的测试用例对象,并将其添加到所述测试用例对象的集合。

图9为本发明实施例提供的一种ui交互功能的测试装置的结构示意图。如图9所示,该装置包括:处理器901、非易失性计算机可读存储器902、显示单元903、网络通信接口904。这些组件通过总线905进行通信。

本本实施例中,存储器902中存储有多个程序模块,包括操作系统906、网络通信模块907和应用程序908。

处理器901可以读取存储器902中的应用程序所包括的各种模块(图中未示出)来执行该装置的各种功能应用以及数据处理。本实施例中的处理器501可以为一个,也可以为多个,其可以为cpu,处理单元/模块,asic,逻辑模块或可编程门阵列等。

应用程序908可包括:ui交互功能的测试模块909。该ui交互功能的测试模块909可包括图8所示装置中的各个功能模块形成的计算机可执行指令集909-1及对应的元数据和启发式算法909-2。这些计算机可执行指令集可以由所述处理器901执行并完成图2-7所示方法或图8所示装置的功能。

在本实施例中,网络通信接口904与网络通信模块907相配合完成信息交互装置的各种网络信号的收发。

显示单元903具有一显示面板,例如液晶显示屏,用于完成相关信息的输入及显示。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述各实施例的功能模块可以位于一个终端或网络节点,或者也可以分布到多个终端或网络节点上。

另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如cd-rom等)、磁光存储介质(如mo等)等。

因此本发明还提供了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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