日常测试中会遇到对web应用进行UI自动化的测试场景,一般常用的工具是使用Selenium,一套简单的UI自动化架构如下:
简单的UI自动化架构
上图即为简单搭建的一套UI自动化测试架构,但存在如下缺点:
为了解决(1)的问题,可以考虑用多线程并发的方式执行测试用例,如下图
并发测试框架
为了解决(2)和(3)的问题,可以在并发框架的基础上,采用SeleniumGrid这一分布式测试工具,实现测试脚本和测试执行节点的分离,即用远程机作为SeleniumNode,在其上安装不同版本的不同浏览器,这样在本机运行测试脚本后,测试脚本会向SeleniumGrid发起测试请求,SeleniumGrid会寻找当前处于空闲状态的节点,并在其上执行测试。
整体架构如下:
并发分布式测试框架
至此,这种并发分布式测试框架基本上就可以满足我们的日常测试需求了,但仍然存在缺点:
(1) 执行节点机配置麻烦:常用的方式就是为每个执行节点配一台虚拟机,然后在每台执行节点机上都要重新配置一遍测试环境,最重要的一点是,测试资源很紧张,没有那么多虚拟机供我们使用。
为了解决(1)的问题,我们需要一台测试执行节点,需要搭建一台虚拟机,然后在其上进行环境配置,如果再需要一台测试执行节点,又要重复上述的过程。一是搭建一台虚拟机周期较长,虚拟机启动时间较长,且虚拟机资源依赖于硬件配置,二是每台虚拟机都要重新配置。
而利用docker可以解决上述问题,其具有以下优点:
至此,我们可以利用docker的容器来作为UI自动化测试的执行节点,取代之前的虚拟机。
框架搭建
基于以上介绍,整体的测试框架如下:
基于docker的多线程并发UI自动化测试框架
框架分为3个部分,多线程并发测试框架采用Python编写,调用robot framework执行测试用例,并将测试请求发送给docker容器中运行的SeleniumHub,SeleniumHub寻找处于空闲状态的SeleniumNode执行节点进行web测试,测试结束后,在部署测试脚本的主机上生成各线程运行后的测试 告,再调用robot framework的rebot命令合并测试 告,生成最后的汇总测试 告发布。下面详细介绍搭建步骤。
测试环境搭建
1、安装docker
(1)win7用户,进入Docker Toolbox的下载 页,选择windows版本下载,win10用户进入docker官 下载Docker For Windows安装。
整个安装过程非常简单,安装完成后,可以在桌面得到如下的三个图标:
win7安装docker toolbox
(2) 设置环境变量
安装完成后,建议先配置一个环境变量MACHINE_STORAGE_PATH,来自定义虚拟机保存的位置,因为之后下载的镜像越来越多,都是放在虚拟机的虚拟磁盘文件中,虚拟磁盘文件会越来越大,放在默认的C盘用户目录下可能会在以后造成一些麻烦,参考下图:
设置环境变量
(3) 开始使用
点击Docker Quickstart Terminal图标,从而打开一个Docker Toolbox terminal,若 如下图信息,则去https://github.com/boot2docker/boot2docker/releases下载对应版本的boot2docker.iso放到MACHINE_STORAGE_PATH/cache下,再重新打开Docker Quickstart Terminal
下载相应的boot2docker.iso到MACHINE_STORAGE_PATH/cache下
再次打开terminal后,terminal会自动进行一些设置,需要点时间,全部完成后,出现如下结果表示docker安装ok了:
docker启动ok
另外,我们可以记下docker宿主机的IP 192.168.99.100,可以用xshell来ssh登录docker宿主机方便操作,账号和密码是docker/tcuser:
xshell连接docker宿主机
2、下载或制作相关镜像
docker pull selenium/hub,它会自动从镜像源中下载别人制作好的最新的selenium/hub镜像,可以通过docker images看到下载好的selenium/hub镜像
selenium/hub镜像
对于seleniumnode镜像,兼容性测试时,需要我们覆盖更多版本的浏览器,所以,可以选择自己制作Dockerfile来生成自己想要的浏览器版本的镜像。
然后通过如下命令来构建镜像,其中selenium/vnc-node-firefox-debug是自己起的镜像名,后面的.表示Dockerfile所在的目录为当前目录:
docker build -t selenium/vnc-node-firefox-debug .
用同样的方法可以生成chrome浏览器的镜像,生成后的镜像如下图:
selenium-node-chrome/firefox镜像
3、启动容器
(1)启动selenium/hub容器
docker run -p 5555:4444 -d --name 'selenium_hub' selenium/hub
(2)启动selenium/node容器
docker run -P -d --link selenium_hub:hub selenium/vnc-node-firefox-debugdocker run -P -d --link selenium_hub:hub selenium/vnc-node-chrome-debug
容器启动完后,可通过docker ps查看启动的容器:
启动的容器
在浏览器中查看selenium容器是否正常启动,http://192.168.99.100:5555/grid/console
selenium容器启动成功
多线程并发测试框架搭建
采用Python编写多线程并发程序,robot framework执行测试用例。
1、测试用例
在robot framework中,将测试用例打上标签tag,来区分要测试的不同版本的不同浏览器,remote_url为selenium_hub容器的地址,已将该容器的4444端口映射到docker宿主机的5555端口,所以这里直接通过宿主机的5555端口访问hub容器。
测试用例
2、多线程并发框架
多线程并发框架采用Python编写,程序目录如下:
各文件代码如下:
utils.py
utils.py
multiThreadings.py
callRobot.py
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!