Selenium+Docker成功解决这一大难题

这篇具有很好参考价值的文章主要介绍了Selenium+Docker成功解决这一大难题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

01、需求背景

日常测试中会遇到对web应用进行UI自动化的测试场景,一般常用的工具是使用Selenium,一套简单的UI自动化架构如下:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

上图即为简单搭建的一套UI自动化测试架构,但

串行执行测试用例:

一台机器只能安装一个版本的浏览器:有时兼容性测试不仅要测试不同浏览器的情况,还要测试同一浏览器不同版本的情况,通常一台机器只能安装1个版本的chrome或firefox,这样就没办法测试不同版本的兼容性情况了。

测试脚本与浏览器部署在同一台机器,试想一台机器既跑测试脚本,又开启进程启动浏览器进行测试,严重消耗机器硬件资源。

为了解决(1)的问题,可以考虑用多线程并发的方式执行测试用例,如下图
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

为了解决(2)和(3)的问题,可以在并发框架的基础上,采用SeleniumGrid这一分布式测试工具,实现测试脚本和测试执行节点的分离,即用远程机作为SeleniumNode,在其上安装不同版本的不同浏览器,这样在本机运行测试脚本后,测试脚本会向SeleniumGrid发起测试请求,SeleniumGrid会寻找当前处于空闲状态的节点,并在其上执行测试。
整体架构如下:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

至此,这种并发分布式测试框架基本上就可以满足我们的日常测试需求了,但仍然存在缺点:

(1) 执行节点机配置麻烦:常用的方式就是为每个执行节点配一台虚拟机,然后在每台执行节点机上都要重新配置一遍测试环境,最重要的一点是,测试资源很紧张,没有那么多虚拟机供我们使用。

为了解决(1)的问题,我们需要一台测试执行节点,需要搭建一台虚拟机,然后在其上进行环境配置,如果再需要一台测试执行节点,又要重复上述的过程。一是搭建一台虚拟机周期较长,虚拟机启动时间较长,且虚拟机资源依赖于硬件配置,二是每台虚拟机都要重新配置。

而利用docker可以解决上述问题,其具有以下优点:

docker镜像不并包含linux内核,多个docker镜像共用宿主机的linux内核,即相当于我们只要有一个linux内核虚拟机就可以了,可以减少对硬件资源的依赖。

一个docker镜像可以运行很多docker容器,每个docker容器之间都是物理隔离的。

docker镜像仓库里会有其他人已经制作好的相关镜像,不需要我们自己制作,或者我们把其他人的镜像拿来,改下某些配置变为我们自己想要的镜像就ok了

至此,我们可以利用docker的容器来作为UI自动化测试的执行节点,取代之前的虚拟机。

02、框架搭建

基于以上介绍,整体的测试框架如下:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

框架分为3个部分,多线程并发测试框架采用Python编写,调用robot framework执行测试用例,并将测试请求发送给docker容器中运行的SeleniumHub,SeleniumHub寻找处于空闲状态的SeleniumNode执行节点进行web测试,测试结束后,在部署测试脚本的主机上生成各线程运行后的测试报告,再调用robot framework的rebot命令合并测试报告,生成最后的汇总测试报告发布。下面详细介绍搭建步骤。

03、测试环境搭建

1、安装docker

(1)win7用户,进入Docker Toolbox的下载网页,选择windows版本下载,win10用户进入docker官网下载Docker For Windows安装。

整个安装过程非常简单,安装完成后,可以在桌面得到如下的三个图标:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

(2) 设置环境变量

安装完成后,建议先配置一个环境变量MACHINE_STORAGE_PATH,来自定义虚拟机保存的位置,因为之后下载的镜像越来越多,都是放在虚拟机的虚拟磁盘文件中,虚拟磁盘文件会越来越大,放在默认的C盘用户目录下可能会在以后造成一些麻烦,参考下图:

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

(3) 开始使用

点击Docker Quickstart Terminal图标,从而打开一个Docker Toolbox terminal,若报如下图信息,则去https://github.com/boot2docker/boot2docker/releases下载对应版本的boot2docker.iso放到MACHINE_STORAGE_PATH/cache下,再重新打开Docker Quickstart Terminal

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生
再次打开terminal后,terminal会自动进行一一些设置,需要点时间,全部完成后,出现如下结果表示docker安装ok了:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

另外,我们可以记下docker宿主机的IP 192.168.99.100,可以用xshell来ssh登录docker宿主机方便操作,账号和密码是docker/tcuser:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

2、下载或制作相关镜像

docker pull selenium/hub,它会自动从镜像源中下载别人制作好的最新的selenium/hub镜像,可以通过docker images看到下载好的selenium/hub镜像
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

对于seleniumnode镜像,兼容性测试时,需要我们覆盖更多版本的浏览器,所以,可以选择自己制作Dockerfile来生成自己想要的浏览器版本的镜像。

然后通过如下命令来构建镜像,其中selenium/vnc-node-firefox-debug是自己起的镜像名,后面的.表示Dockerfile所在的目录为当前目录:

docker build -t selenium/vnc-node-firefox-debug .

用同样的方法可以生成chrome浏览器的镜像,生成后的镜像如下图:

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生
3、启动容器

(1)启动selenium/hub容器

docker run -p 5555:4444 -d --name 'selenium_hub'  selenium/hub

run:通过镜像启动一个容器

-p:端口映射,5555是容器宿主机(运行docker的主机)的端口,4444是我们容器(运行selenium_hub虚拟机)的端口。我们把容器的4444端口映射给docker主机的5555端口,就可以通过docker主机的5555端口来访问selenium_hub容器了

(2)启动selenium/node容器

docker run -P -d --link selenium_hub:hub  selenium/vnc-node-firefox-debug

docker run -P -d --link selenium_hub:hub  selenium/vnc-node-chrome-debug

-P:随机生成映射端口号,上文中的-p是指定特定的端口号,这里node并不需要知道容器内部的端口号,所以随机映射即可

–link:指定selenium-node容器依赖容器selenium_hub

容器启动完后,可通过docker ps查看启动的容器
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

在浏览器中查看selenium容器是否正常启动,http://192.168.99.100:5555/grid/console
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

04、多线程并发测试框架搭建

采用Python编写多线程并发程序,robot framework执行测试用例。

1、测试用例

 在robot framework中,将测试用例打上标签tag,来区分要测试的不同版本的不同浏览器,remote_url为selenium_hub容器的地址,已将该容器的4444端口映射到docker宿主机的5555端口,所以这里直接通过宿主机的5555端口访问hub容器。
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

2、多线程并发框架

多线程并发框架采用Python编写,程序目录如下:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

各文件代码如下:

utils.py:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生
multiThreadings.py
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

callRobot.py
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

run.py
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

脚本run.py接收两个参数,第1个参数为要执行的robot测试套件,第2个参数为要执行的robot用例的标签,各标签之间以逗号分隔,有多少个标签,就启动多少个线程来调用robot的pybot命令执行打上相应标签的测试用例。

05、运行

这里开启2个node节点,一个chrome,一个firefox。

cmd下执行脚本,robot测试套件名为TestSuite.txt,执行标签为chromeNode1,firefoxNode1的测试用例:

python run.py TestSuite.txt selenium_node=chromeNode1,firefoxNode1

docker宿主机下,执行docker logs -f selenium_hub,可以查看hub容器的执行日志:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

 通过vnc viwer可视化查看node容器内浏览器的运行情况:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生
最终用rebot命令合并各线程生成的测试报告,合并后的报告如下:
Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

至此,基于docker的selenium并发web应用UI自动化测试框架搭建完成。之后,自己会再探究将docker容器的创建,启动和停止自动化,实现测试环境的自动化搭建 

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

Selenium+Docker成功解决这一大难题,软件测试,selenium,docker,测试工具,功能测试,自动化测试,软件测试,程序人生文章来源地址https://www.toymoban.com/news/detail-848953.html

到了这里,关于Selenium+Docker成功解决这一大难题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2个半月学习成功上岗软件测试,我一个文科女也能吃IT饭了

    想不到我一个文科生也能吃上IT饭,真的是太香了!!! 程序员的待遇怎么这么好!(请大家原谅我没有见过市面的感叹,对于我这种刚上岗的新手而言,能够在厦门这个全国工资房价比最低的地方拿到7K+的薪水而且还包住宿和午餐,我真的已经很满足了。(厦门岛内的房租

    2024年02月06日
    浏览(65)
  • 1000个已成功入职的软件测试工程师简历范文模板(含真实简历)

        如果你想学习自动化测试,那么下面这套视频应该会帮到你很多  如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖.... 最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了 以上内容,对于

    2024年02月07日
    浏览(46)
  • 【软件测试】selenium3

    自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试就相当于将人工测试手段进行转换,让代码去执行。提高测试效率,保障软件质量。 自动化测

    2024年02月08日
    浏览(61)
  • 【软件测试】什么是selenium

    前置条件: Java最低版本要求为8,浏览器使用chrome浏览器 https://www.google.cn/chrome/ 点击关于Google chrome.  记住版本的前三个数. http://chromedriver.chromium.org/downloads 下载 对应浏览器版本 的驱动. 解压下载好的驱动压缩包,将下载好的chromedriver.exe放到Java的系统环境变量下.即jdk的bin目录下

    2024年02月15日
    浏览(70)
  • 软件测试 -- 自动化测试(Selenium)

            在这里记录一下  自动化测试 -- Selenium 的一些基础知识点,只记录方法。 Selenium 浏览器操作 Selenium 元素定位(包含 Web 表单) findElement 和 findElements         findElement 和 findElements 都可以用于定位元素,它们都需要传入一个 By 类型,但是他们的返回值不同,区

    2024年04月22日
    浏览(64)
  • 【软件测试】自动化测试selenium

    目录 一、什么是自动化测试 二、Selenium介绍 1、Selenium是什么 2、Selenium的原理 三、了解Selenium的常用API 1、webDriver API   1.1、元素定位 1.1.1、CSS选择器 1.1.2、Xpath元素定位 1.1.3、面试题  1.2、操作测试对象 1.3、添加等待  1.4、打印信息  1.5、浏览器的操作 1.6、键盘事件 1.7、鼠

    2024年01月17日
    浏览(63)
  • 软件测试面试题(Selenium相关)

    1、什么是Selenium? Selenium 是一个开源的自动化测试框架,主要用于自动化Web应用程序的测试。它支持多种浏览器(如Chrome、Firefox、Safari、Internet Explorer等)和多种编程语言(如Java、C#、Python、Ruby、JavaScript等),使测试人员可以编写测试脚本来模拟用户对Web应用程序的交互,

    2024年03月15日
    浏览(57)
  • 【软件测试】selenium中元素的定位

    不管用那种方式,必须保证页面上该属性的唯一性 CSS(Cascading Style Sheets) 是一种语言,它被用来描述 HTML 和 XML 文档的表现。 CSS 使用选择器来为页面元素绑定属性。这些选择器可以被 selenium 用作另外的定位策略 CSS 的获取可以用 chrome 的 F12 开发者模式中 Element- 右键 -copy-cop

    2024年02月16日
    浏览(44)
  • 【软件测试】面试题之selenium篇

    2024年01月18日
    浏览(68)
  • 软件测试|selenium执行js脚本

    JavaScript是运行在客户端(浏览器)和服务器端的脚本语言,允许将静态网页转换为交互式网页。可以通过 Python Selenium WebDriver 执行 JavaScript 语句,在Web页面中进行js交互。那么js能做的事,Selenium应该大部分也能做。WebDriver是模拟终端用户的交互,所以就不能点击不可见的元素

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包