一种分布式的WEB自动化测试系统及方法与流程

文档序号:15399590发布日期:2018-09-11 17:09阅读:148来源:国知局

本发明属于计算机处理技术的服务发现领域,具体涉及一种分布式的web自动化测试系统及方法。



背景技术:

随着软件技术的发展以及业务的飞速增长,现在网站系统的功能都非常的复杂,传统的手工测试很容易发生遗漏与错误,项目一般都需要投入大量的测试人力来适配迭代速度,并且测试人员的测试环境并非统一化、标准化,这样测试的质量就不会很高,因此web自动化测试技术作为一种辅助测试方法也得到了越来越广泛的应用,但是随着自动化测试规模的增大、流程的愈加复杂、多浏览器的兼容等因素,传统的自动化测试已无法满足需求,所以需要一种分布式的高可用web自动化测试方法。

随着docker浏览器技术的流行,很多应用以docker标准化的方式管理,各种浏览器及操作系统都以镜像的方式在docker仓库下载,有了标准化镜像的支持,这就使web分布式自动化测试成为了可能。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的不足,提供一种分布式的web自动化测试系统及方法。

为解决上述技术问题,本发明提供一种分布式的web自动化测试系统,其特征在于:包括用例管理平台、用例执行平台和浏览器集群,所述用例管理平台是自动化用例及用例集的管理平台,用于抽象用例集、用例的数据模型,管理用例及用例集的基础信息,是作为用户触发自动化用例执行的入口,所述用例管理平台与用例执行平台相连,所述用例执行平台包含持续集成平台、代码管理服务模块和测试框架,所述用例执行平台与浏览器集群相连,所述浏览器集群包括分发中心和浏览器节点,分发中心是用来接收执行平台发起的webdriver请求并转发到浏览器镜像节点执行并向用例执行平台返回执行结果。

所述用例管理平台包括用例集管理模块、用例管理模块、环境管理模块和结果展示模块,其中用例集管理模块用于关联用例、执行参数选择和执行发起,用例集包括以下基础信息:类型、状态、测试环境、版本、执行节点、执行参数等。用例包括以下基础信息:class路径、用例参数、类型等,用例集与用例存在关联关系,用例集作为执行的最小单元。

所述持续集成平台通过jenkins实现,所述代码管理服务模块是用例库git,所述用例库git用于管理测试用例的代码及版本,所述测试框架基于maven-surefire+testing+selenium封装,所述测试框架分为公共模块及用例模块两个模块。

所述浏览器集群的分发中心是基于ubuntu基础镜像镜像打包出selenium的hub镜像,所述浏览器节点是基于ubuntu基础镜像打包出的浏览器镜像。

一种分布式的web自动化测试方法,其特征在于,包括如下步骤:

步骤101:基于maven-surefire+testing+selenium封装的测试框架内按照约定规范开发用例,分为两个模块:公共模块及用例模块,公共模块中封装了webdriver,初始化webdriver是通过外部参数控制、使用pageobject模式开发用例、提供一些公共的页面操作方法、公共数据处理方法,实现了用例的失败截图、失败重试、结果入库等功能;用例模块依赖公共模块,存放用例脚本,执行时即执行该模块下的用例脚本;

步骤102:用例管理平台中实现用例集管理、用例管理、环境管理、结果展示等功能,这些功能是为了配合用例执行平台的使用,为用户提供一个用户界面操作代码用例,并为用户提供一个友好的操作方式来实现对用例集的管理、执行及报告查看、用户在用例管理平台上发起执行某个用例集的请求;

步骤103:用例执行的前置操作,具体为持续集成平台接收到来自用例管理平台的执行请求后,解析具体的请求参数,包含:用例版本、测试环境、数据库、执行节点、并发数量、通知者,根据相应的请求参数做如下操作:a、下载相应版本用例;b、编译用例代码;c、替换测试环境;d、修改相关配置项;e、执行task模板;

测试用例的代码是maven结构的,在执行task模板时会先调用maven-surefire插件,该插件用来驱动测试执行并接收外部参数,maven-surefire插件执行时接收参数具体为:用例集的id、task模板的构建号、并发数量;

步骤104:调用测试框架执行具体的用例代码,具体为maven-surefire驱动testng执行,将用例集id、task模板的构建号、并发数量参数传递给testng,testng根据具体的用例集id从数据库中查询出关联的用例,根据并发数量将用例分组并生成可执行的xml文件,运行该文件;

步骤105:xml可执行文件在运行时,testng会根据并发数开启相应的线程数,同时发送执行请求至分发中心;

步骤106:分发中心在第一次接受到具体的执行命令之后会与testng之间建立session,每一个线程建立一个session,分发中心会把执行命令转发给执行节点,如果执行线程数量大于执行节点数量则剩余的线程会挂起无法建立session,当执行节点空闲出来后分发中心会为挂起的线程建立session,重复之前的操作;

步骤107:执行节点在执行完成命令后都会通知分发中心,分发中心通知执行线程将执行结果返回,testng执行线程在得到执行结果后将结果记录到数据库中,用例管理平台即可实施查看结果。

本发明所达到的有益效果:

(1)自动化用例在统一的容器中执行,保证了环境一致性;

(2)通过分发中心将用例的执行请求发送到空闲的容器,无需人为干预;

(3)将测试用例抽象成对象模型并提供友好的用户界面供用户使用,以简单的方式进行

环境配置;

(4)分布式执行,提升用例执行效率。

附图说明

图1为本发明实施例中分布式的web自动化测试系统架构图;

图2为本发明实施例中分布式的web自动化测试方法实现步骤。

具体实施方式

下面结合附图和示例性实施例对本发明作进一步的说明:

如图1所示,分布式的web自动化测试系统架构中包含三个主体,用例管理平台、用例执行平台、浏览器集群。

本发明中将测试用例、测试用例集核心信息抽象成一套数据模型,设计开发出一套用例管理平台用来管理用例及用例集的基础信息及执行信息并且作为用户触发自动化用例执行的入口。所述用例执行平台包含持续集成平台、代码管理服务模块和测试框架,本发明中创造性的在持续集成平台中将用例的执行流程抽象成模板,用例管理平台调用持续集成平台api,将用例的动态执行信息发送到持续集成平台,持续集成平台在接收用例信息后驱动模板执行。所述浏览器集群是以docker容器技术为基础,在docker官方仓库提供的ubuntu基础镜像基础上将不同浏览器打包成标准的镜像,利于屏蔽环境的差异性,使用相同的镜像启动多个容器形成浏览器集群,浏览器集群中包括分发中心和多个浏览器节点,分发中心接收测试用例发起的webdriver请求并转发到多个浏览器节点执行并返回执行结果。他们的调用关系是:用例管理平台调用用例执行平台,用例执行平台调用浏览器集群。

所述用例管理平台,是指自动化用例及用例集的管理平台;用例开发完成后提交至用例仓库,测试用例会自动被加载至用例管理平台,该过程是通过git提供的webhook实现,只要测试用例按照规范编写都能够自动被加载,用例管理平台是为了方便测试用例的管理与维护专门开发的一套web系统,平台提供用例集的维护与关联用例集功能,是作为用户触发自动化用例执行的入口,在该平台上用户可以方便的对用例进行增删改查,并可通过简单的属性配置发起执行以及查看执行结果。

所述用例执行平台,是指在该方法体系内要求必须在测试框架内依照规范开发完成的用例才能在用例管理平台上被管理并触发执行,用例执行平台包括持续集成服务器(即ci服务器)、代码托管服务(即git仓库)及测试框架。当收到用例管理平台发起的用例执行请求时,持续集成服务器会触发用例执行的模板任务,模板任务解析相应的执行参数后按照模板流程从代码托管服务器上拉取到相应版本的用例代码后编译执行。

所述浏览器集群,包括分发中心和多个浏览器节点,分发中心及浏览器节点都是依赖docker技术在ubuntu镜像基础上打包的镜像,所有的镜像都是统一配置,没有环境差异,一个镜像启动多个容器形成集群统一在分发中心上注册,并统一由分发中心控制(所有的webdriver请求都有分发中心路由分发)。浏览器集群中存在一个分发中心、多个执行节点。节点启动时在分发中心注册,如上,测试用例的代码被编译执行后,测试用例的执行请求会发送到分发中心。分发中心基于selenium的hub实现,浏览器节点可以根据实际需要选择,通常是chrome、firefox等,对于浏览器的版本也可以根据需要调整重新打包镜像。分发中心根据请求的数量分发中心动态的向空闲浏览器(当前没有会话)节点转发请求,最终在空闲的浏览器节点中打开浏览器执行相应的操作,从而实现分布式执行,提升整体执行效率。

特别地,测试用例与浏览器之间的通信使用的是webdriver协议,浏览器的每一个操作结果都会返回到持续集成的执行平台并存储到数据库,用例管理平台也可以实时呈现出每一个用例的执行状态。

如图2所示,分布式的web自动化测试方法包括:

步骤101:自动化测试用例的开发,具体为在本发明中提到的基于selenium封装的框架内按照约定规范开发用例,分为两个模块:公共模块及用例模块。公共模块中封装了webdriver,初始化webdriver是通过外部参数控制、使用pageobject模式开发用例、提供一些公共的页面操作方法、公共数据处理方法、实现了用例的失败截图、失败重试、结果入库等功能;用例模块依赖公共模块,存放一些用例脚本,执行时即执行该模块下的用例脚本。

步骤102:用例管理平台中实现用例集管理、用例管理、环境管理、结果展示等功能,这些功能是为了配合测试框架的使用,为用户提供一个用户界面操作代码用例,并为用户提供一个友好的操作方式来实现对用例集的管理、执行及报告查看,用户在用例管理平台上发起执行某个用例集的请求。

步骤103:用例执行的前置操作,具体为持续集成服务器接收到来自用例管理平台的执行请求后,解析具体的请求参数,包含:用例版本、测试环境、数据库、执行节点、并发数量、通知者,根据相应的请求参数做如下操作:a、下载相应版本用例;b、编译用例代码;c、替换测试环境;d、修改相关配置项;e、执行task模板。

测试用例的代码是maven结构的,在执行task模板时会先调用maven-surefire插件,该插件用来驱动测试执行并接收外部参数,maven-surefire插件执行时接收参数具体为:用例集的id、task模板的构建号、并发数量。

步骤104:调用测试框架执行具体的用例代码,具体为maven-surefire驱动testng执行,将用例集id、task模板的构建号、并发数量参数传递给testng,testng根据具体的用例集id从数据库中查询出关联的用例,根据并发数量将用例分组并生成可执行的xml文件,运行该文件。

步骤105:xml可执行文件在运行时,testng会根据并发数开启相应的线程数,同时发送执行请求至分发中心。

步骤106:分发中心在第一次接受到具体的执行命令之后会与testng之间建立session,每一个线程建立一个session,因为每一个用例中都会包含多个具体的执行命令所以session可以保证每一个命令之间是有联系的不会混乱,分发中心会把执行命令转发给执行节点,如有5个执行线程,则会建立5个session,请求转发至5个执行节点,如果执行线程数量大于执行节点数量则剩余的线程会挂起无法建立session,当执行节点空闲出来后分发中心会为挂起的线程建立session,重复之前的操作。

步骤107:执行节点在执行完成命令后都会通知分发中心,分发中心通知执行线程将执行结果返回,testng执行线程在得到执行结果后将结果记录到数据库中,用例管理平台即可实施查看结果。

下面用一具体实施例流程对本发明做进一步说明:

1、测试人员使用本发明中的测试框架开发测试用例,测试用例类必须继承tc类(所有继承tc类的类会被用例管理平台加载),一个类作为一个用例,类中包含多个method作为检查点(以注解@test标注),在@beforemethod中初始化webdriver,初始化webdriver的时候必须传入参数:browser及nodeurl两个外部参数。具体示例如下:

2、测试人员将测试用例提交至用例库git,然后登陆至用例管理平台,依次新建用例集、关联该用例、选择执行参数(测试环境、执行机器、用例版本、并发数量、通知者),点击执行。

3、用例管理平台连接至执行平台的持续集成服务,将用户发起的执行请求发送到执行task。

4、持续集成服务执行task,执行过程如下:a.根据用例版本从用例库git下载相应的代码至执行机器。b.修改环境配置,如用例中涉及到的文件存储路径等。c.执行maven命令驱动maven-surefire插件。d.maven-surefire驱动测试代码中的webuimain类执行,该类会根据传过来的用例集的id从数据库中查找到关联的用例,并将用例以testng的格式按并发数分组成新的testng.xml数据,然后testng执行用例。

5、testng执行用例发起的请求会发送到浏览器集群中的分发中心。分发中心是基于selenium的hub实现的,它负责维护注册的浏览器执行节点,并将testng发来的执行请求转发到浏览器执行节点。每一个testng发起的执行线程都会在分发中心上注册一个session,后面再与分发中心通信时就会带上这个session信息,告诉分发中心我之前来过,并且之前是被分配到哪个浏览器执行节点上执行过测试。

6、浏览器执行节点执行完成后的结果会通过分发中心告知testng当前线程的请求的执行结果。

7、测试的执行结果会被写入到数据库中,测试人员此时即可以在用例管理平台中查看到实时的测试结果。

本发明主要用于提供一种分布式的web自动化测试系统及方法,具有如下有益效果:

(1)自动化用例在标准的统一的环境中执行,保证了环境一致性;

(2)通过分发中心将用例的执行请求发送到空闲的容器,无需人为干预;

(3)将测试用例抽象成对象模型并提供友好的用户界面供用户使用,以简单的方式进行环境配置;

(4)分布式执行,提升用例执行效率。

以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

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