1. 程式人生 > 其它 >BAT大廠都在用的Docker。學會這三招,面試、工作輕鬆hold住

BAT大廠都在用的Docker。學會這三招,面試、工作輕鬆hold住

⬇️ 點選“下方連結”,提升測試核心競爭力!

>>更多技術文章分享和免費資料領取原文連結 上期我們以Jenkins為例,一邊實戰一邊瞭解Docker的基礎命令。這期,我們將帶大家使用Docker搭建三個平時測試工作中非常有用的小工具。學會這三個實戰之後,你就可以說對Docker不是淺嘗即止在理論階段,而是真正有一定了解,也能為你的工作,真正的解決一部分問題。\n\

使用Docker搭建prometheus+grafana的伺服器監控

使用Docker搭建prometheus+grafana的伺服器監控。讓你的伺服器監控頁面有顏有料且讓人一目瞭然。讓資料分析不再侷限於數字和曲線圖,能夠多方位進行對比。

1.Docker啟動prometheus

官網下載node_exporter。地址:https://prometheus.io/\n### 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,命令有

記憶體使用率: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
進入Adddatasourcs->選擇prometheus
配置prometheus
欄位名含義NameprometheusURL啟動的prometheus的地址(localhost可能會報錯)

8.import模板grafanadashboard內填寫https://grafana.com/grafana/dashboards/8919PrometheusDataSource

欄位選擇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的配置,並dockerrestartprometheus,重新載入prometheus的配置(可以參考上面的步驟2)

5.進入prometheus頁面,檢視Targets中mysql是否啟動成功\n

6.按照上面的docker啟動prometheus過程,配置好之後進去grafana頁碼,然後選擇datasource,進入prometheus,輸入prometheus的url,選擇“Save&Test”

7.匯入mysql模板到grafana,mysql的模板id為6239,其他步驟和前面搭建伺服器監控是一樣的哦。

下面是mysql的監控效果

使用Docker搭建分散式UI自動化環境

如果我們的WebUI自動化測試用例有上千條,執行時間常常需要1~2天,我們用什麼方法可以節省這個執行時間呢?接下來我們就通過分散式UI自動化,即啟動多個瀏覽器執行UI自動化測試用例,且每個瀏覽器執行的UI自動化測試用例都是不同的。這樣子,就可以大大提升我們的UI自動化測試的效率。
分散式UI自動化架構
UITest層會將測試請求傳送到GridHub層,而GridHub則會將這些測試請求轉換為測試任務下發到每一個Node節點(在每臺機器上面我們可以裝一個或多個Node節點。),隨後Node節點驅動瀏覽器進行自動化測試。測試完成後,Node節點將測試結果傳送到GridHub上面,GridHub再將結果轉發回我們的測試程式UITest中

(如下圖所示)
Selenium映象介紹
Selenium映象網上有很多,官網下載即可。也可以定製化。而且還有非視覺化的映象。具有除錯作用的遠端UI服務的視覺化映象,還有輕量級簡易版映象版本。

1.底層映象,可以做定製化

selenium/base:BaseimagewhichincludesJavaruntimeandSeleniumServerJARfile selenium/node-base:BaseimageforGridNodeswhichincludesavirtualdesktopenvironment selenium/hub:ImageforrunningaGridHub

2.谷歌、火狐瀏覽器的非視覺化映象

selenium/node-chrome:GridNodewithChromeinstalled,needstobeconnectedtoaGridHub selenium/node-firefox:GridNodewithFirefoxinstalled,needstobeconnectedtoaGridHub

3.具有遠端UI服務的視覺化映象(除錯作用):

selenium/node-chrome-debug:GridNodewithChromeinstalledandrunsaVNCserver,needstobeconnectedtoaGridHub selenium/node-firefox-debug:GridNodewithFirefoxinstalledandrunsaVNCserver,needstobeconnectedtoaGridHub

4.簡易版映象,不需要GridHub和Node架構:

selenium/standalone-chrome:SeleniumStandalonewithChromeinstalled selenium/standalone-firefox:SeleniumStandalonewithFirefoxinstalled\nselenium/standalone-chrome-debug:SeleniumStandalonewithChromeinstalledandrunsaVNCserver selenium/standalone-firefox-debug:SeleniumStandalonewithFirefoxinstalledandrunsaVNCserver 文件連結: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為例\n
執行指令碼檢視執行結果,成功!注意:如果伺服器系統不支援視覺化不加這條會啟動失敗chrome_options.add_argument("--headless")
### ⬇️ 點選“下方連結”,提升測試核心競爭力!
>>更多技術文章分享和免費資料領取