自动化测试方法及装置.pdf

上传人:小** 文档编号:1306102 上传时间:2018-04-14 格式:PDF 页数:21 大小:1.36MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510409182.2

申请日:

2015.07.13

公开号:

CN106708715A

公开日:

2017.05.24

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/36申请日:20150713|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

阿里巴巴集团控股有限公司

发明人:

徐达峰

地址:

英属开曼群岛大开曼资本大厦一座四层847号邮箱

优先权:

专利代理机构:

北京亿腾知识产权代理事务所 11309

代理人:

陈霁

PDF下载: PDF下载
内容摘要

本申请实施例涉及一种自动化测试方法及装置,主控模块从测试任务列表中读取未被执行过的至少一个测试任务;对未被执行过的至少一个测试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块;向空闲节点模块发送对应的测试任务,以使空闲节点模块根据测试任务,获取对应的测试用例集合,并使空闲节点模块执行测试用例集合中的测试用例,并记录测试用例的执行结果信息。由此,可以支持多个测试任务并发执行,从而提高了自动化测试方法的效率。

权利要求书

1.一种自动化测试方法,其特征在于,该方法包括:
主控模块从测试任务列表中读取未被执行过的至少一个测试任务;
对所述未被执行过的至少一个测试任务中的每个测试任务,从节点模块集
合中选取对应的空闲节点模块;
向所述空闲节点模块发送对应的测试任务,以使所述空闲节点模块根据所
述测试任务,获取对应的测试用例集合,并使所述空闲节点模块执行所述测
试用例集合中的测试用例,记录所述测试用例的执行结果信息。
2.根据权利要求1所述的方法,其特征在于,所述测试用例是根据待测
试网页Web的第一用户界面UI及控件预先编写的。
3.根据权利要求1或2所述的方法,其特征在于,所述测试任务中还携
带操作系统的类型,所述空闲节点模块在执行所述测试用例集合中的测试用
例时,通过所述类型的操作系统的应用程序编程接口API函数,实现与所述
类型的操作系统交互,其中,所述类型的操作系统的API函数封装在所述空
闲节点模块的驱动单元中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述主控模块周期性向所述空闲节点模块发送执行结果询问请求,以使所
述空闲节点模块在记录所述测试用例的执行结果信息后,向所述主控模块返
回所述执行结果信息。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述从节点模块
集合中选取对应的空闲节点模块包括:
向所述节点模块集合中的每个节点模块发送空闲询问请求,并将根据所述
空闲询问请求,返回用于表示空闲的消息的任一节点模块选取为所述空闲节
点模块。
6.一种自动化测试方法,其特征在于,该方法包括:
空闲节点模块集合中的至少一个空闲节点模块接收主控模块发送的对应
的测试任务,其中,所述测试任务是由所述主控模块从测试任务列表中读取
的未被执行过的至少一个测试任务中的测试任务;
所述空闲节点模块根据所述测试任务,获取对应的测试用例集合;
所述空闲节点模块执行所述测试用例集合中的测试用例,并记录所述测试
用例的执行结果信息。
7.根据权利要求6所述的方法,其特征在于,所述测试任务中携带与所
述测试任务对应的测试用例集合的地址信息;
所述空闲节点模块根据所述测试任务,获取对应的测试用例集合包括:
所述空闲节点模块根据所述地址信息,从代码仓库中下载对应的测试用例
集合。
8.根据权利要求6或7所述的方法,其特征在于,所述测试任务中还携
带操作系统的类型;
所述空闲节点模块执行所述测试用例集合中的测试用例包括:
所述空闲节点模块在执行所述测试用例集合中的测试用例时,通过所述类
型的操作系统的应用程序编程接口API函数,实现与所述类型的操作系统交
互,其中,所述类型的操作系统的API函数封装在所述空闲节点模块的驱动
单元中。
9.根据权利要求6所述的方法,其特征在于,在所述记录所述测试用例
的执行结果信息之后,所述方法还包括:
所述空闲节点模块直接向所述主控模块返回所述执行结果信息;或者,
所述空闲节点模块在接收到所述主控模块发送的询问请求时,向所述主控
模块返回所述执行结果信息。
10.一种自动化测试装置,其特征在于,该装置包括:读取单元、选取单
元和发送单元;
所述读取单元,用于从测试任务列表中读取未被执行过的至少一个测试任
务;
所述选取单元,用于对所述读取单元读取的所述未被执行过的至少一个测
试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块;
所述发送单元,用于向所述选取单元选取的所述空闲节点模块发送对应的
测试任务,以使所述空闲节点模块根据所述测试任务,获取对应的测试用例
集合,并使所述空闲节点模块执行所述测试用例集合中的测试用例,记录所
述测试用例的执行结果信息。
11.根据权利要求10所述的装置,其特征在于,所述测试用例是根据待
测试网页Web的第一用户界面UI及控件预先编写的。
12.根据权利要求10或11所述的装置,其特征在于,所述测试任务中还
携带操作系统的类型,所述空闲节点模块在执行所述测试用例集合中的测试
用例时,通过所述类型的操作系统的应用程序编程接口API函数,实现与所
述类型的操作系统交互,其中,所述类型的操作系统的API函数封装在所述
空闲节点模块的驱动单元中。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述发送单元
还用于:周期性向所述空闲节点模块发送执行结果询问请求,以使所述空闲
节点模块在记录所述测试用例的执行结果信息后,返回所述执行结果信息。
14.根据权利要求10-13任一项所述的装置,其特征在于,所述选取单元
具体用于:
向所述节点模块集合中的每个节点模块发送空闲询问请求,并将根据所述
空闲询问请求,返回用于表示空闲的消息的任一节点模块选取为所述空闲节
点模块。
15.一种自动化测试装置,其特征在于,该装置包括:接收单元、获取单
元和执行单元;
所述接收单元,用于接收主控模块发送的对应的测试任务,其中,所述测
试任务是由所述主控模块从测试任务列表中读取的未被执行过的至少一个测
试任务中的测试任务;
所述获取单元,用于根据所述接收单元接收的所述测试任务,获取对应的
测试用例集合;
所述执行单元,用于执行所述获取单元获取的所述测试用例集合中的测试
用例,并记录所述测试用例的执行结果信息。
16.根据权利要求15所述的装置,其特征在于,所述测试任务中携带与
所述测试任务对应的测试用例集合的地址信息;
所述获取单元具体用于:
根据所述地址信息,从代码仓库中下载对应的测试用例集合。
17.根据权利要求15或16所述的装置,其特征在于,所述测试任务中还
携带操作系统的类型;
所述执行单元具体用于:在执行所述测试用例集合中的测试用例时,通过
所述类型的操作系统的应用程序编程接口API函数,实现与所述类型的操作
系统交互,其中,所述类型的操作系统的API函数封装在所述装置的驱动单
元中。
18.根据权利要求15所述的装置,其特征在于,所述装置还包括:返回
单元,用于直接向所述主控模块返回所述执行结果信息;或者,
在接收到所述主控模块发送的询问请求时,向所述主控模块返回所述执行
结果信息。

说明书

自动化测试方法及装置

技术领域

本申请涉及测试技术领域,尤其涉及一种自动化测试方法及装置。

背景技术

随着自动化测试技术的普及,对终端设备的用户界面(UI,User
Interface)进行测试逐渐由手工测试转为UI自动化测试。UI自动化测试,
即由机器模拟用户针对UI的操作,从而进行自动化测试,主要包含网页
(Web)UI自动化测试和本地应用程序UI自动化测试。

现有技术进行Web UI自动化测试时,程序员预先编写测试脚本,然后在
服务端或者通信代理端插入测试脚本,从而实现Web运行时执行测试脚本,
以获得测试结果,然而在上述测试方法中,一次只能执行一个测试任务,如,
一次只能对一种运行环境(如,IOS 6.0)下的Web进行测试,当需要对多种
运行环境下的Web进行测试时,则需要根据串行的方式依次进行,这会影响
自动化测试方法的效率。

发明内容

本申请实施例提供了一种自动化测试方法及装置,可以支持多个测试任
务并发执行,由此提高了自动化测试方法的效率。

第一方面,提供了一种自动化测试方法,该方法包括:

主控模块从测试任务列表中读取未被执行过的至少一个测试任务;

对所述未被执行过的至少一个测试任务中的每个测试任务,从节点模块集
合中选取对应的空闲节点模块;

向所述空闲节点模块发送对应的测试任务,以使所述空闲节点模块根据所
述测试任务,获取对应的测试用例集合,并使所述空闲节点模块执行所述测
试用例集合中的测试用例,记录所述测试用例的执行结果信息。

第二方面,提供了一种自动化测试方法,该方法包括:

空闲节点模块集合中的至少一个空闲节点模块接收主控模块发送的对应
的测试任务,其中,所述测试任务是由所述主控模块从测试任务列表中读取
的未被执行过的至少一个测试任务中的测试任务;

所述空闲节点模块根据所述测试任务,获取对应的测试用例集合;

所述空闲节点模块执行所述测试用例集合中的测试用例,并记录所述测
试用例的执行结果信息。

第三方面,提供了一种自动化测试装置,该装置包括:读取单元、选取
单元和发送单元;

所述读取单元,用于从测试任务列表中读取未被执行过的至少一个测试任
务;

所述选取单元,用于对所述读取单元读取的所述未被执行过的至少一个测
试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块;

所述发送单元,用于向所述选取单元选取的所述空闲节点模块发送对应
的测试任务,以使所述空闲节点模块根据所述测试任务,获取对应的测试用
例集合,并使所述空闲节点模块执行所述测试用例集合中的测试用例,记录
所述测试用例的执行结果信息。

第四方面,提供了一种自动化测试装置,该装置包括:接收单元、获取
单元和执行单元;

所述接收单元,用于接收主控模块发送的对应的测试任务,其中,所述测
试任务是由所述主控模块从测试任务列表中读取的未被执行过的至少一个测
试任务中的测试任务;

所述获取单元,用于根据所述接收单元接收的所述测试任务,获取对应的
测试用例集合;

所述执行单元,用于执行所述获取单元获取的所述测试用例集合中的测
试用例,并记录所述测试用例的执行结果信息。

本申请提供的自动化测试方法及装置,主控模块从测试任务列表中读取
未被执行过的至少一个测试任务;对所述未被执行过的至少一个测试任务中
的每个测试任务,所述主控模块从节点模块集合中选取对应的空闲节点模块;
所述主控模块向所述空闲节点模块发送对应的测试任务,以使所述空闲节点
模块根据所述测试任务,获取对应的测试用例集合,并使所述空闲节点模块
执行所述测试用例集合中的测试用例,并记录所述测试用例的执行结果信息。
由此,可以支持多个测试任务并发执行,从而提高了自动化测试方法的效率。

附图说明

图1为本申请一种实施例提供的自动化测试方法流程图;

图2为本申请的测试系统的示意图;

图3为图2中的主控模块的示意图;

图4为图2中的一个节点模块的示意图;

图5为图4中的驱动单元的示意图;

图6为本申请的测试任务列表的示意图之一;

图7为本申请的测试任务列表的示意图之二;

图8为本申请的测试任务列表的示意图之三;

图9为本申请另一种实施例提供的自动化测试方法流程图;

图10为本申请再一种实施例提供的自动化测试装置示意图;

图11为本申请又一种实施例提供的自动化测试装置示意图。

具体实施方式

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

为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步
的解释说明,实施例并不构成对本申请实施例的限定。

本申请实施例提供的自动化测试方法及装置,适用于对终端设备的Web
UI进行自动化测试的场景,尤其适用于对不同运行环境下的移动终端的Web
UI进行并发自动化测试的场景,此处,不同的运行环境可以是指运行Web UI
的移动终端的多种类型操作系统的不同版本,如IOS(6,7.2,8+)或者Andriod
(2.3,3,4.2,4.4.4,5+)。当然,在实际应用中,上述不同运行环境也
可以是指Web UI的不同版本(存在表现差异或者容器差异)等。

此外,本说明书中的Web可以为如下三种类型中的任一种:

1)基于本地(操作系统)运行的应用程序(Appl icat ion,App),也称
原生(Nat ive)App;

2)基于高端机的浏览器运行的Web App;

3)混合式(Hybrid)App。

其中,第三种类型的Web为目前通用的Web类型,如,淘宝客户端或者
支付宝钱包客户端等均采用第三种类型的Web。

图1为本申请一种实施例提供的自动化测试方法流程图。所述方法的执
行主体可以为具有处理能力的设备:服务器或者系统或者装置,例如,可以
是测试系统中的主控模块(Mas ter),参见图2所示的测试系统的示意图,
该测试系统包括主控模块21和一个或者多个节点模块(Slave)22,一个或
者多个节点模块22组成节点模块集合,主控模块21与一个或者多个节点模
块22之间可以通过长链接的方式通信,如,在任一节点模块执行测试任务结
束后,实时向主控模块21返回测试任务的执行结果信息;也可以是主控模块
21周期性向一个或者多个节点模块22发送执行结果询问请求(如,超文本传
输协议(HyperText Transfer Protocol,HTTP)请求),一个或者多个节点
模块22在接收到执行结果询问请求之后,向主控模块21返回测试任务的执
行结果信息。

优选地,上述节点模块集合中的节点模块的个数不小于测试任务的个数。

参见图3所示的图2中的主控模块的示意图,图3中,主控模块21包含
第二UI211,主控模块21通过第二UI211接收用户输入的操作指令;和/或,
主控模块21通过第二UI211向用户展示执行结果信息。举例来说,管理员可
以基于该第二UI211创建、修改或者删除测试任务。此外,管理员还可以通
过该第二UI211查看已创建的测试任务的执行结果信息。在一种具体实现方
式中,主控模块21通过测试任务列表维护上述创建的测试任务,其中,维护
是指增加、删除以及修改测试任务。

图3中,主控模块21还具有调度与派发测试任务的功能,即当读取到已
创建的未被执行的测试任务时,从节点模块集合中选取空闲节点模块22,然
后将上述测试任务派发给空闲节点模块22进行处理;在空闲节点模块22执
行该测试任务之后,也即在空闲节点模块22执行与测试任务对应的测试用例
之后,空闲节点模块22主动向主控模块21返回测试任务的执行结果信息(如
在上述长连接的方式下),或者,空闲节点模块22在接收到主控模块21发
送的执行结果询问请求之后,向主控模块21返回测试任务的执行结果信息。

图3中,主控模块21可以周期性从本地读取已创建的未被执行的至少一
个测试任务;也可以是在接收到代码仓库发送的提示消息之后,从本地读取
已创建的未被执行的至少一个测试任务,此处,提示消息用于提示主控模块
21有新的代码被上传。上述代码仓库用于对开发过程中的代码进行管理,其
中,代码可以包括开发代码和测试代码,其中,开发代码也称为被测代码,
是程序员编写的用于实现一个或者多个功能的计算机语言;测试代码也可以
称为测试用例集合,该测试用例集合中可以包括一个或者多个测试用例,其
用于模拟真实场景下对开发代码的调用,通过将调用结果与预先设置好的期
望值的比较,可以判定测试结果是通过还是失败。

上述代码仓库包括客户端和服务端,程序员在本地完成代码(包括开发
代码以及测试代码)的编写之后,可以通过在客户端中输入服务端的地址、
用户名以及密码登录到服务端,然后将编写好的代码提交到服务端。当然,
程序员在通过上述方式登录到服务端后,还可以根据测试用例集合的地址信
息,从代码仓库中下载测试用例集合。

综上,通过主控模块21可以将要执行的测试任务保存起来,然后定时循
环执行或者依照其它优先级策略执行上述保存的测试任务,由此,本申请的
测试系统可以支持持续集成测试。

参见图4所示的图2中的一个节点模块的示意图,图4中,节点模块22
包含服务单元(Slave Sever)221和驱动单元(Slave Driver)222,服务单
元221可以对主控模块发送的空闲询问请求进行处理,其中,该空闲询问请
求是在主控模块21从本地读取已创建的未被执行的测试任务时发送的。服务
单元221对主控模块21发送的空闲询问请求的处理过程具体为:如果当前节
点模块22正在执行测试任务,则向主控模块21返回用于表示忙的信息,而
如果当前节点模块22没有正在执行的测试任务,则向主控模块21返回用于
表示空闲的信息。需要说明的是,如果当前节点模块22空闲,且接收到主控
模块21发送的测试任务时,则服务单元221根据测试任务中携带的与该测试
任务对应的测试用例集合的地址信息,从代码仓库中下载测试用例集合(该
过程也称为服务单元221的配置管理功能)。之后通过与驱动单元222的通
信实现对测试用例集合中测试用例的执行,并在测试用例执行完成之后,根
据测试用例的执行结果信息生成测试报告。

需要说明的是,上述服务单元221还集成了多种测试框架(如,mochajs
以及JS单元测试框架(Jasmine)等),也即在通过本申请的测试方法对待测
Web进行测试时,可以不对Web客户端的框架进行限制,甚至可以不用限制
Web客户端的编写语言,由此,提高了本申请自动化测试方法的适用性。

在一种具体实现方式中,服务单元221与驱动单元222之间使用socket
通过指定端口通信。

参见图5所示的图4中的驱动单元的示意图,驱动单元222包含服务端
(Driver Server)和客户端(Driver Cl ient),服务端封装了多种类型操
作系统的应用程序编程接口(Appl icat ion Programming Interface,API)
函数,如,封装了多种类型操作系统的不同版本的API函数,如,封装了IOS
(6,7.2,8+)或者Andriod(2.3,3,4.2,4.4.4,5+)的API函数,此外,
还封装了上述操作系统的底层事件以及驱动器等,通过在驱动单元222的服
务端中封装上述API函数,就可以实现对操作系统的版本模拟器的模拟,由
此,本申请的自动化测试方法即可在虚拟的环境下进行,这与现有技术中使
用堆叠真机的测试方法相比,可以极大的节约成本。此外,当本申请中的节
点模块集合中包括多个节点模块,每个节点模块均包含驱动单元,且在多个
节点模块均处于空闲状态时,就可以实现对多个测试任务的并发执行,如,
可以对运行在多种类型操作系统的不同版本下的Web同时进行测试。

举例来说,假设有两个未被执行的测试任务:IOS 7操作系统下的第一
Web的功能1和Andriod 4.2操作系统下的第一Web的功能1,且节点模块集
合中有三个空闲节点模块,则从三个空闲模块中任选两个空闲模块,通过该
两个空闲模块来并发执行上述两个未被执行的测试任务。

图5中,服务单元221在执行测试用例集合中的测试用例之前,首先确
定与当前测试任务对应的操作系统的类型以及版本,之后通过浏览器驱动协
议(如,Webdriver API)向驱动单元222的服务端发送指示消息,该指示消
息用于指示服务端执行具体的功能,服务端在执行具体的功能时,通过与上
述确定类型以及版本的操作系统的API,实现与操作系统交互。如前述例子中,
当服务单元221在执行第二个测试任务时,驱动单元222的服务端通过UI
Automator实现与操作系统Andriod 4.2交互。

回到图1,所述方法具体可以包括:

步骤110,主控模块从测试任务列表中读取未被执行过的至少一个测试任
务。

此处,测试任务列表用于维护(包括:增加、删除以及修改)测试任务,
而测试任务可以是程序员根据待测试Web的第一UI及控件预先编写好的。测
试任务列表中的测试任务可以包括三种状态:未开始(即未被执行过)、正
在执行和已结束。对于已结束的测试任务,程序员可以通过第一UI查看其执
行结果信息。

参见图6所示的测试任务列表的示意图之一,该测试任务列表显示在主
控模块的第二UI的一个界面中,图6中,测试任务列表中包含两个测试任务,
该两个测试任务是程序员根据支付宝钱包客户端的第一UI及控件预先编写好
的。在程序员编写好上述测试任务之后,主控模块21唯一地为每个测试任务
分配一个ID。此外,图6中,每个测试任务可以唯一地对应一种类型的设备,
也即每个测试任务可以唯一地对应一种类型操作系统的一个版本,如,第一
个测试任务的设备类型为IOS 7,第二个测试任务的设备类型为Andriod 4.2。

当然,图6、图7和图8只是作为一种具体的实施方式,在其他实施方式
中,测试任务列表也可以为其它形式,本申请对此也不作特别限定。本发明
的保护范围应该以权利要求的保护范围为准。

在编写好上述测试任务之后,程序员还需要编写与测试任务相对应的测
试用例集合,该测试用例集合中包括一个或者多个测试用例,其中,测试用
例集合中的测试用例可以是根据待测试网页Web的第一用户界面UI及控件编
写的。程序员在编写好与测试任务对应的测试用例集合之后,将该测试用例
集合上传到代码仓库,并建立测试用例集合在代码仓库的地址信息与测试任
务的对应关系。

步骤110中,主控模块可以周期性从测试任务列表中读取未被执行过的
至少一个测试任务;也可以是在接收到代码仓库发送的提示消息之后,从测
试任务列表中读取未被执行过的至少一个测试任务。

步骤120,对所述未被执行过的至少一个测试任务中的每个测试任务,从
节点模块集合中选取对应的空闲节点模块。

此处,节点模块集合中可以包括一个或者多个节点模块。可以理解的是,
初始时,节点模块集合中的每个节点模块均为空闲节点模块。

图6中,当主控模块从测试任务列表中读取两个测试任务,则对该两个
测试任务中的每个测试任务,主控模块从节点模块集合中选取对应的空闲节
点模块。可以理解的是,当有两个测试任务时,则需要选取两个空闲节点模
块。当节点模块集合中有两个空闲节点模块时,则两个空闲节点模块分别执
行上述两个测试任务,也即并发执行测试任务;而当节点模块集合中只有一
个空闲节点模块时,则可以按照优先级策略先执行一个测试任务,待节点模
块集合中有其它空闲节点模块时,再执行另一个测试任务。此外,当空闲节
点模块的个数多于两个时,则从空闲节点模块中任选两个空闲节点模块,以
用于执行上述两个测试任务。

当然,在实际应用中,主控模块也可以读取两个以上测试任务,两个以
上测试任务的执行方法同两个测试任务的执行方法类似,即先选取两个以上
空闲节点模块,若空闲节点模块的个数M大于等于测试任务的个数N,则两个
以上的测试任务并发执行,而当空闲节点模块的个数M小于测试任务的个数N
时,则按照优先级策略先执行两个以上测试任务中的部分测试任务(即M个
测试任务),待节点模块集合中有其它空闲节点模块时,再执行其它测试任
务,直至所有的测试任务均执行完成。

需要说明的是,步骤120中从节点模块集合中选取对应的空闲节点模块
包括:

向所述节点模块集合中的每个节点模块发送空闲询问请求,并将根据所
述空闲询问请求,返回用于表示空闲的消息的任一节点模块选取为所述空闲
节点模块。

即主控模块向节点模块集合中的每个节点模块发送空闲询问请求,如果
节点模块正在执行测试任务,则向主控模块返回用于表示忙的信息,而如果
节点模块没有正在执行的测试任务,则向主控模块返回用于表示空闲的信息,
主控模块在接收到用于表示空闲的信息时,则将发送该用于表示空闲的信息
的节点模块选取为空闲节点模块。

在上述过程中,在主控模块向节点模块集合中的每个节点模块发送空闲
询问请求后,可以有多个节点模块返回用于表示空闲的信息,此时,主控模
块可以将该多个节点模块选取为多个空闲节点模块,并建立该多个空闲节点
模块与多个测试任务的对应关系。当还有剩余的测试任务未选取空闲节点模
块时,则间隔阈值时间之后再次向节点模块集合中的每个节点模块发送空闲
询问请求,直至为至少一个测试任务中的每个测试任务选取对应的空闲节点
模块为止。

当然,在主控模块向节点模块集合中的每个节点模块发送空闲询问请求
后,也可能主控模块只接收到节点模块返回的用于表示忙的信息,主控模块
在间隔阈值时间之后再次向节点模块集合中的每个节点模块发送空闲询问请
求,直至为至少一个测试任务中的每个测试任务选取对应的空闲节点模块为
止。

步骤130,向所述空闲节点模块发送对应的测试任务,以使所述空闲节点
模块根据所述测试任务,获取对应的测试用例集合,并使所述空闲节点模块
执行所述测试用例集合中的测试用例,记录所述测试用例的执行结果信息。

在一种实施方式中,所述测试任务中携带与所述测试任务对应的测试用例
集合的地址信息;所述空闲节点模块根据所述测试任务,获取对应的测试用
例集合包括:

所述空闲节点模块根据所述地址信息,从代码仓库中下载对应的测试用
例集合。

如前述例子中,主控模块为两个测试任务选取对应的两个空闲节点模块,
并向两个空闲节点模块发送对应的测试任务,两个空闲节点模块中的每个空
闲节点模块在接收到与其对应的测试任务后,根据测试任务中携带的与该测
试任务对应的测试用例集合的地址信息,从代码仓库中下载对应的测试用例
集合,并执行测试用例集合中的测试用例。

当然,上述根据测试任务中携带的与该测试任务对应的测试用例集合的
地址信息,从代码仓库中下载对应的测试用例集合只是作为本申请实施例中
一种优选的做法,在实际应用中,空闲节点模块也可以通过其它方式获取与
测试任务对应的测试用例集合,如,测试任务中直接携带与所述测试任务对
应的测试用例集合,空闲节点模块在接收到测试用例集合后,执行测试用例
集合中的测试用例。

可选地,所述测试任务中还携带操作系统的类型,所述空闲节点模块在
执行所述测试用例集合中的测试用例时,通过所述类型的操作系统的应用程
序编程接口API函数,实现与所述类型的操作系统交互,其中,所述类型的
操作系统的API函数封装在所述空闲节点模块的驱动单元中。

如前述例子,与ID=1的测试任务(与其对应的设备类型为:IOS 7.0)
对应的空闲节点模块在执行与其对应的测试用例集合中的测试用例时,空闲
节点模块中的服务单元通过浏览器驱动协议(如,Webdriver API)向驱动单
元的服务端发送指示消息,该指示消息用于指示服务端执行具体的功能,服
务端在执行具体的功能时,通过UI Automat ion实现与操作系统IOS 7.0交
互,此处,UI Automat ion为操作系统IOS 7.0的API函数,也即空闲节点模
块通过所述类型的操作系统的API函数,实现与所述类型的操作系统交互。
而当与ID=2的测试任务(与其对应的设备类型为:Andriod 4.2)对应的空
闲节点模块在执行与其对应的测试用例集合中的测试用例时,服务端在执行
具体的功能时,通过UI Automator实现与操作系统Andriod 4.2交互。由此,
本申请通过对操作系统的版本模拟器的调用,可以方便地实现对多种类型终
端设备的Web进行测试,这与现有技术中使用堆叠真机的测试方法相比,可
以极大的节约成本。

可选地,主控模块还可以周期性向空闲节点模块发送执行结果询问请求,
以使空闲节点模块在记录测试用例的执行结果信息后,向主控模块返回执行
结果信息。如前述例子中,与两个测试任务对应的两个空闲节点模块在接收
到主控模块发送的执行结果询问请求,并且在执行完成测试用例集合中的测
试用例之后,分别向主控模块返回执行结果信息。

当然,空闲节点模块也可以在执行完成测试用例集合中的测试用例之后,
直接向主控模块返回执行结果信息。

可以理解的是,由于测试任务与测试用例集合一一对应,因此,测试用
例集合中测试用例的执行结果信息,也即为测试任务的执行结果信息。主控
模块在接收到上述执行结果信息之后,将其记录到测试任务列表中的对应位
置,也即将其存储到主控模块的数据库中。当用户想要查看任一测试任务的
执行结果信息时,可以点击图6中的“查看”按钮;在用户点击图6中的“查
看”按钮之后,就可以加载图7所示的界面,该界面可以为主控模块的第二
UI中的另一界面;而在用户点击图7中的任一行记录之后,就可以加载图8
所示的界面,该界面可以为主控模块的第二UI中的再一界面,通过图8用户
可以查看测试用例集合中每个测试用例的执行情况,即可以查看每个测试用
例是否执行成功,以及执行每个测试用例所消耗的时间等。

本申请提供的用户界面自动化测试方法,主控模块从测试任务列表中读
取未被执行过的至少一个测试任务;对所述未被执行过的至少一个测试任务
中的每个测试任务,所述主控模块从节点模块集合中选取对应的空闲节点模
块;所述主控模块向所述空闲节点模块发送对应的测试任务,以使所述空闲
节点模块根据所述测试任务,获取对应的测试用例集合,并使所述空闲节点
模块执行所述测试用例集合中的测试用例,并记录所述测试用例的执行结果
信息。由此,可以支持多个测试任务并发执行,从而提高了自动化测试方法
的效率。

图9为本申请另一种实施例提供的自动化测试方法流程图,所述方法的
执行主体可以为图2中测试系统的节点模块,如图9所示,所述方法具体可
以包括:

步骤910,空闲节点模块集合中的至少一个空闲节点模块接收主控模块发
送的对应的测试任务,其中,所述测试任务是由所述主控模块从测试任务列
表中读取的未被执行过的至少一个测试任务中的测试任务。

上述空闲节点模块集合中的空闲节点模块是由主控模块从节点模块集合
中选取的,其选取方法可以如下:

向所述节点模块集合中的每个节点模块发送空闲询问请求,并将根据所
述空闲询问请求,返回用于表示空闲的消息的任一节点模块选取为所述空闲
节点模块。

即主控模块向节点模块集合中的每个节点模块发送空闲询问请求,如果
节点模块正在执行测试任务,则向主控模块返回用于表示忙的信息,而如果
节点模块没有正在执行的测试任务,则向主控模块返回用于表示空闲的信息,
主控模块在接收到用于表示空闲的信息时,则将发送该用于表示空闲的信息
的节点模块选取为空闲节点模块。

在上述过程中,在主控模块向节点模块集合中的每个节点模块发送空闲
询问请求后,可以有多个节点模块返回用于表示空闲的信息,此时,主控模
块可以将该多个节点模块选取为多个空闲节点模块。

当然,在主控模块向节点模块集合中的每个节点模块发送空闲询问请求
后,也可能主控模块只接收到节点模块返回的用于表示忙的信息,主控模块
在间隔阈值时间之后再次向节点模块集合中的每个节点模块发送空闲询问请
求,直至为至少一个测试任务中的每个测试任务选取对应的空闲节点模块为
止。

可以理解的是,初始时,节点模块集合中的每个节点模块均为空闲节点
模块,也即空闲节点模块集合与节点模块集合是相同的。

步骤910中,测试任务列表用于维护(包括:增加、删除以及修改)测
试任务,而测试任务可以是程序员根据待测试Web的第一UI及控件预先编写
好的。测试任务列表中的测试任务可以包括三种状态:未开始(即未被执行
过)、正在执行和已结束。对于已结束的测试任务,程序员可以通过第一UI
查看其执行结果信息。

参见图6所示的测试任务列表的示意图之一,该测试任务列表显示在主
控模块的第二UI的一个界面中,图6中,测试任务列表中包含两个测试任务,
该两个测试任务是程序员根据支付宝钱包客户端的第一UI及控件预先编写好
的。在程序员编写好上述测试任务之后,主控模块21唯一地为每个测试任务
分配一个ID。此外,图6中,每个测试任务可以唯一地对应一种类型的设备,
也即每个测试任务可以唯一地对应一种类型操作系统的一个版本,如,第一
个测试任务的设备类型为IOS 7,第二个测试任务的设备类型为Andriod 4.2。

在编写好上述测试任务之后,程序员还需要编写与测试任务相对应的测
试用例集合,该测试用例集合中包括一个或者多个测试用例,其中,测试用
例集合中的测试用例可以是根据待测试网页Web的第一用户界面UI及控件编
写的。程序员在编写好与测试任务对应的测试用例集合之后,将该测试用例
集合上传到代码仓库,并建立测试用例集合在代码仓库的地址信息与测试任
务的对应关系。

步骤910中,主控模块可以周期性从测试任务列表中读取未被执行过的
至少一个测试任务;也可以是在接收到代码仓库发送的提示消息之后,从测
试任务列表中读取未被执行过的至少一个测试任务。

图6中,当主控模块从测试任务列表中读取两个测试任务,则对该两个
测试任务中的每个测试任务,主控模块从节点模块集合中选取对应的空闲节
点模块。

步骤920,所述空闲节点模块根据所述测试任务,获取对应的测试用例集
合。

可选地,所述测试任务中携带与所述测试任务对应的测试用例集合的地址
信息;

所述空闲节点模块根据所述测试任务,获取对应的测试用例集合包括:

所述空闲节点模块根据所述地址信息,从代码仓库中下载对应的测试用
例集合。

步骤930,所述空闲节点模块执行所述测试用例集合中的测试用例,并记
录所述测试用例的执行结果信息。

如前述例子中,当主控模块选取两个测试任务时,则两个空闲节点模块
接收主控模块发送的对应的测试任务,两个空闲节点模块中的每个空闲节点
模块在接收到与其对应的测试任务后,根据测试任务中携带的与该测试任务
对应的测试用例集合的地址信息,从代码仓库中下载对应的测试用例集合,
并执行测试用例集合中的测试用例。

可选地,所述测试任务中还携带操作系统的类型,所述空闲节点模块执
行所述测试用例集合中的测试用例包括:

所述空闲节点模块在执行所述测试用例集合中的测试用例时,通过所述
类型的操作系统的应用程序编程接口API函数,实现与所述类型的操作系统
交互,其中,所述类型的操作系统的API函数封装在所述空闲节点模块的驱
动单元中。

如前述例子,与ID=1的测试任务(与其对应的设备类型为:IOS 7.0)
对应的空闲节点模块在执行与其对应的测试用例集合中的测试用例时,空闲
节点模块中的服务单元通过浏览器驱动协议(如,Webdriver API)向驱动单
元的服务端发送指示消息,该指示消息用于指示服务端执行具体的功能,服
务端在执行具体的功能时,通过UI Automat ion实现与操作系统IOS 7.0交
互,此处,UI Automat ion为操作系统IOS 7.0的API函数,也即空闲节点模
块通过所述类型的操作系统的API函数,实现与所述类型的操作系统交互。
而当与ID=2的测试任务(与其对应的设备类型为:Andriod 4.2)对应的空
闲节点模块在执行与其对应的测试用例集合中的测试用例时,服务端在执行
具体的功能时,通过UI Automator实现与操作系统Andriod 4.2交互。由此,
本申请通过对操作系统的版本模拟器的调用,可以方便地实现对多种类型终
端设备的Web进行测试,这与现有技术中使用堆叠真机的测试方法相比,可
以极大的节约成本。

在所述记录所述测试用例的执行结果信息之后,所述方法还包括:

所述空闲节点模块直接向所述主控模块返回所述执行结果信息;或者,

所述空闲节点模块在接收到所述主控模块发送的询问请求时,向所述主
控模块返回所述执行结果信息。

如前述例子中,与两个测试任务对应的两个空闲节点模块在接收到主控
模块发送的执行结果询问请求,并且在执行完成测试用例集合中的测试用例
之后,分别向主控模块返回执行结果信息。

可以理解的是,由于测试任务与测试用例集合一一对应,因此,测试用
例集合中测试用例的执行结果信息,也即为测试任务的执行结果信息。主控
模块在接收到上述执行结果信息之后,将其记录到测试任务列表中的对应位
置,也即将其存储到主控模块的数据库中。当用户想要查看任一测试任务的
执行结果信息时,可以点击图6中的“查看”按钮;在用户点击图6中的“查
看”按钮之后,就可以加载图7所示的界面,该界面可以为主控模块的第二
UI中的另一界面;而在用户点击图7中的任一行记录之后,就可以加载图8
所示的界面,该界面可以为主控模块的第二UI中的再一界面,通过图8用户
可以查看测试用例集合中每个测试用例的执行情况,即可以查看每个测试用
例是否执行成功,以及执行每个测试用例所消耗的时间等。

本申请提供的用户界面自动化测试方法,空闲节点模块集合中的至少一
个空闲节点模块接收主控模块发送的对应的测试任务,其中,所述测试任务
是由所述主控模块从测试任务列表中读取的未被执行过的至少一个测试任务
中的测试任务;所述空闲节点模块根据所述测试任务,获取对应的测试用例
集合;所述空闲节点模块执行所述测试用例集合中的测试用例,并记录所述
测试用例的执行结果信息。由此,可以支持多个测试任务并发执行,从而提
高了自动化测试方法的效率。

与上述自动化测试方法对应地,本申请实施例还提供的一种自动化测试
装置,如图10所示,该装置包括:读取单元1001、选取单元1002和发送单
元1003。

读取单元1001,用于从测试任务列表中读取未被执行过的至少一个测试
任务。

选取单元1002,用于对读取单元1001读取的所述未被执行过的至少一个
测试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块。

选取单元1002具体用于:向所述节点模块集合中的每个节点模块发送空
闲询问请求,并将根据所述空闲询问请求,返回用于表示空闲的消息的任一
节点模块选取为所述空闲节点模块。

发送单元1003,用于向选取单元1002选取的所述空闲节点模块发送对应
的测试任务,以使所述空闲节点模块根据所述测试任务,获取对应的测试用
例集合,并使所述空闲节点模块执行所述测试用例集合中的测试用例,记录
所述测试用例的执行结果信息。

所述测试用例可以是根据待测试网页Web的第一用户界面UI及控件预先
编写的。

可选地,所述测试任务中还携带操作系统的类型,所述空闲节点模块在
执行所述测试用例集合中的测试用例时,通过所述类型的操作系统的应用程
序编程接口API函数,实现与所述类型的操作系统交互,其中,所述类型的
操作系统的API函数封装在所述空闲节点模块的驱动单元中。

可选地,发送单元1003还用于:周期性向所述空闲节点模块发送执行结
果询问请求,以使所述空闲节点模块在记录所述测试用例的执行结果信息后,
返回所述执行结果信息。

本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各
步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。

本申请提供的自动化测试装置,读取单元1001从测试任务列表中读取未
被执行过的至少一个测试任务;选取单元1002对所述未被执行过的至少一个
测试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块;
发送单元1003向所述空闲节点模块发送对应的测试任务,以使所述空闲节点
模块根据所述测试任务,获取对应的测试用例集合,并使所述空闲节点模块
执行所述测试用例集合中的测试用例,记录所述测试用例的执行结果信息。
由此,可以支持多个测试任务并发执行,从而提高了自动化测试方法的效率。

与上述自动化测试方法对应地,本申请实施例还提供的一种自动化测试
装置,如图11所示,该装置包括:接收单元1101、获取单元1102和执行单
元1103。

接收单元1101,用于接收主控模块发送的对应的测试任务,其中,所述
测试任务是由所述主控模块从测试任务列表中读取的未被执行过的至少一个
测试任务中的测试任务。

获取单元1102,用于根据接收单元1101接收的所述测试任务,获取对应
的测试用例集合。

执行单元1103,用于执行获取单元1102获取的所述测试用例集合中的测
试用例,并记录所述测试用例的执行结果信息。

可选地,所述测试任务中携带与所述测试任务对应的测试用例集合的地址
信息;

获取单元1102具体用于:根据所述地址信息,从代码仓库中下载对应的
测试用例集合。

可选地,所述测试任务中还携带操作系统的类型;

执行单元具1103体用于:在执行所述测试用例集合中的测试用例时,通
过所述类型的操作系统的应用程序编程接口API函数,实现与所述类型的操
作系统交互,其中,所述类型的操作系统的API函数封装在所述装置的驱动
单元中。

可选地,所述装置还包括:返回单元1104,用于直接向所述主控模块返
回所述执行结果信息;或者,

在接收到所述主控模块发送的询问请求时,向所述主控模块返回所述执
行结果信息。

本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各
步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。

本申请提供的自动化测试装置,接收单元1101接收主控模块发送的对应
的测试任务,其中,所述测试任务是由所述主控模块从测试任务列表中读取
的未被执行过的至少一个测试任务中的测试任务;获取单元1102根据所述测
试任务,获取对应的测试用例集合;执行单元1103执行所述测试用例集合中
的测试用例,并记录所述测试用例的执行结果信息。由此,可以支持多个测
试任务并发执行,从而提高了自动化测试方法的效率。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的
各示例的对象及算法步骤,能够以电子硬件、计算机软件或者二者的结合来
实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能
一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来
执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每
个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为
超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理
器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器
(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、
寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式
的存储介质中。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行
了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而
已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做
的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

自动化测试方法及装置.pdf_第1页
第1页 / 共21页
自动化测试方法及装置.pdf_第2页
第2页 / 共21页
自动化测试方法及装置.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《自动化测试方法及装置.pdf》由会员分享,可在线阅读,更多相关《自动化测试方法及装置.pdf(21页珍藏版)》请在专利查询网上搜索。

本申请实施例涉及一种自动化测试方法及装置,主控模块从测试任务列表中读取未被执行过的至少一个测试任务;对未被执行过的至少一个测试任务中的每个测试任务,从节点模块集合中选取对应的空闲节点模块;向空闲节点模块发送对应的测试任务,以使空闲节点模块根据测试任务,获取对应的测试用例集合,并使空闲节点模块执行测试用例集合中的测试用例,并记录测试用例的执行结果信息。由此,可以支持多个测试任务并发执行,从而提高了自。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1