写点什么

软件测试 / 测试开发 / BAT 大厂都在用的 Docker。学会这三招,面试、工作轻松 hold 住

作者:测试人
  • 2022-12-29
    北京
  • 本文字数:2883 字

    阅读完需:约 9 分钟


获取更多相关知识


上期我们以 Jenkins 为例,一边实战一边了解 Docker 的基础命令。这期,我们将带大家使用 Docker 搭建三个平时测试工作中非常有用的小工具。学会这三个实战之后,你就可以说对 Docker 不是浅尝即止在理论阶段,而是真正有一定了解,也能为你的工作,真正的解决一部分问题。

使用 Docker 搭建 prometheus+grafana 的服务器监控

使用 Docker 搭建 prometheus+grafana 的服务器监控。让你的服务器监控页面有颜有料且让人一目了然。让数据分析不再局限于数字和曲线图,能够多方位进行对比。

1.Docker 启动 prometheus 官网下载 node_exporter 。地址:prometheus.io/

2.启动下载好的 node_exporter 文件


3.填写 prometheus.yml 配置文件内容


4.使用命令启动 prometheus

docker run --name prometheus -d -p 9090:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml -v `pwd`/rules/:/etc/prometheus/ prom/prometheus --config.file=/etc/prometheus/prometheus.yml
复制代码

5.输入 ip 和端口号进入 prometheus 的前端界面,然后进入 Targets 页面



6.在首页输入命令,然后点击 execute,命令有

cpu使用率:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)内存使用率:100*(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes
磁盘使用:100.0 - 100 * ((node_filesystem_avail_bytes{mountpoint=~"/", device!="rootfs"} / 1000 / 1000 ) / (node_filesystem_size_bytes{mountpoint=~"/", device!="rootfs"} / 1024 / 1024))
复制代码



不过这个展示界面不够友好,而且不好保存。所以在业内,我们常常将 prometheus+grafana 配合使用

7.启动 grafana

docker run --name grafana -d -p 8011:3000 grafana/grafana
复制代码

进入 grafana 界面,初始账号密码为 admin/admin 进入 Add data sourcs->选择 prometheus 配置 prometheus

8.import 模板


grafana dashboard 内填写grafana.com/grafana/das…Prometheus Data Source 字段选择 prometheus 点击 Import,就搭建成功了


注意,前方有坑:1.如果被监控的 node_exporter 是 mac 的话,要去 prometheus 官网下载 mac 版本的 node_exporter 执行,且 mac 需要修改一些配置参数。2.如果修改了 prometheus.yml 需要重启镜像

使用 Docker 搭建 Prometheus 监控 MySQL

1.下载 prom/mysqld-exporter 镜像

docker pull prom/mysqld-exporter
复制代码

2.启动 mysql 服务

docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306  -d mysql:5.5
复制代码

3.启动 mysqld-exporter 镜像

docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306  -d mysql:5.5docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(47.95.238.18:8888)/mysql" prom/mysqld-exporter
复制代码

注意:-e 之后的参数要填对,分别对应 用户名/密码 @(ip:端口号)/mysql

4.在 prometheus.yml 的配置文件中添加 mysql 的配置,并 docker restart prometheus ,重新加载 prometheus 的配置(可以参考上面的步骤 2)

5.进入 prometheus 页面,查看 Targets 中 mysql 是否启动成功


6.按照上面的 docker 启动 prometheus 过程,配置好之后进去 grafana 页码,然后选择 data source,进入 prometheus,输入 prometheus 的 url,选择“Save&Test”



7.导入 mysql 模板到 grafana,mysql 的模板 id 为 6239,其他步骤和前面搭建服务器监控是一样的哦。


下面是 mysql 的监控效果


使用 Docker 搭建分布式 UI 自动化环境

如果我们的 Web UI 自动化测试用例有上千条,执行时间常常需要 1~2 天,我们用什么方法可以节省这个执行时间呢?

接下来我们就通过分布式 UI 自动化,即启动多个浏览器执行 UI 自动化测试用例,且每个浏览器执行的 UI 自动化测试用例都是不同的。这样子,就可以大大提升我们的 UI 自动化测试的效率。

分布式 UI 自动化架构

UITest 层会将测试请求发送到 GridHub 层,而 GridHub 则会将这些测试请求转换为测试任务下发到每一个 Node 节点(在每台机器上面我们可以装一个或多个 Node 节点。),随后 Node 节点驱动浏览器进行自动化测试。测试完成后,Node 节点将测试结果发送到 GridHub 上面,GridHub 再将结果转发回我们的测试程序 UITest 中


Selenium 镜像介绍

Selenium 镜像网上有很多,官网下载即可。也可以定制化。而且还有非可视化的镜像。具有调试作用的远程 UI 服务的可视化镜像,还有轻量级简易版镜像版本。

1.底层镜像,可以做定制化

selenium/base: Base image which includes Java runtime and Selenium Server JAR file

selenium/node-base: Base image for Grid Nodes which includes a virtual desktop environment

selenium/hub: Image for running a Grid Hub

2.谷歌、火狐浏览器的非可视化镜像

selenium/node-chrome: Grid Node with Chrome installed, needs to be connected to a Grid Hub

selenium/node-firefox: Grid Node with Firefox installed, needs to be connected to a Grid Hub

3.具有远程 UI 服务的可视化镜像(调试作用)

selenium/node-chrome-debug: Grid Node with Chrome installed and runs a VNC server, needs to be connected to a Grid Hub

selenium/node-firefox-debug: Grid Node with Firefox installed and runs a VNC server, needs to be connected to a Grid Hub

4.简易版镜像,不需要 GridHub 和 Node 架构:

selenium/standalone-chrome: Selenium Standalone with Chrome installed

selenium/standalone-firefox: Selenium Standalone with Firefox installed

selenium/standalone-chrome-debug: Selenium Standalone with Chrome installed and runs a VNC server

selenium/standalone-firefox-debug: Selenium Standalone with Firefox installed and runs a VNC server

文档链接:

https://github.com/SeleniumHQ/docker-selenium

实战演示

使用 docker 启动 GridHub

docker run --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 启动 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_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
复制代码

如果想启动多个 Node,可以重新修改一下端口映射比如,将 5902:5900 修改为 5903:5900 这时候我们就可以发现图片中又显示了一个 Node 信息。


如果想在一个 Node 中启动多个浏览器,我们可以更改这两个字段的数量,比如我们将 6 修改为 7NODE_MAX_INSTANCES=7;NODE_MAX_SESSION=7,这时候我们可以看到有 7 个谷歌浏览器的 logo


准备一个自动化测试脚本,以 Python 为例


运行脚本查看运行结果,成功!


注意:如果服务器系统不支持可视化不加这条会启动失败chrome_options.add_argument('--headless')


获取更多相关知识

发布于: 刚刚阅读数: 2
用户头像

测试人

关注

还未添加个人签名 2022-08-29 加入

还未添加个人简介

评论

发布
暂无评论
软件测试 / 测试开发 / BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住_Docker_测试人_InfoQ写作社区