使用docker搭建分布式UI自动化的解决方案

一,为什么要用selenium grid进行分布式?

使用这种架构可以加速UI自动化的运行速度,因为UI自动化执行是比较慢的,不像接口测试执行速度快,加上可以使用testng的多线程就更快了,所以接口测试很少遇到性能瓶颈。加上UI自动化流程比较复杂,真的运行起来如果启动几百个服务器是比较耗内存的,这个时候需要加服务器才能够满足需求,但是这样有时候会存在资源分配问题。grid相当于搭建一个浏览器集群,可以当做一个通用的基础服务,这个也有负载均衡策略,可以最大化提高资源利用率
使用docker搭建分布式UI自动化的解决方案_第1张图片
hub:主节点,负责调度
node:从节点,负责处理请求
使用docker搭建分布式UI自动化的解决方案_第2张图片

二,实战

1,命令行启动

# e:指定环境变量,相当于一个参数,会动态初始化容器的一个行为。就像写代码时候要传参一样
 docker run -d --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

启动后浏览器就可以访问界面了
使用docker搭建分布式UI自动化的解决方案_第3张图片

2,启动node节点

# 提供远程桌面的连接服务,可以进行debug服务
# NODE_MAX_SESSION=6:同时运行的浏览器数量是6
# --link:把hub和node的网络连接在一起
docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

想多注册几个也是可以的
使用docker搭建分布式UI自动化的解决方案_第4张图片
点击页面的console即可跳转到这个界面
使用docker搭建分布式UI自动化的解决方案_第5张图片
使用VNC VIEWER连接远程服务
1,登录客户端,新建连接(端口号写的node的)
使用docker搭建分布式UI自动化的解决方案_第6张图片
2,点击继续
使用docker搭建分布式UI自动化的解决方案_第7张图片
3,输入密码,默认是secret
使用docker搭建分布式UI自动化的解决方案_第8张图片
我们可以跑一个测试任务
使用docker搭建分布式UI自动化的解决方案_第9张图片
进行分布式测试
右键run
使用docker搭建分布式UI自动化的解决方案_第10张图片
可以看到vnc里面有3个浏览器会启动

三,补充

1,selenium gird 支持的浏览器类型
使用docker搭建分布式UI自动化的解决方案_第11张图片
为什么没有IE呢?docker和虚拟机的区别是什么?

  • 因为IE是需要内核的,但是docker是没有内核的。
  • 最大区别是docker没有内核,没有内核就等于没有操作系统,docker用的是宿主机的内核,这样的好处是快,节省了内核的消耗,不需要开机。启动虚拟机相当于重新开机,点开docker相当于启动qq。缺点是隔离性不太好。
  • 一切挑内核的都不要用docker
  • 如果想加入IE到grid里面,需要搭一个windows虚拟机,再到selenium官方网站下载gird,然后安装启动起来,配好java环境等

你可能感兴趣的:(自动化测试)