使用k8s做分散式自動化測試
阿新 • • 發佈:2021-09-07
背景:
對於UI自動化來說
用例得多執行緒執行,需要得更多得瀏覽器支援,selenium grid是不二之選,加上容器技術的流行,更方便的將 grid hub、grid node執行起來。
可是case隨著時間無限的遞增,如不能增加執行的瀏覽器,執行時間就會延長,單臺伺服器已經不能滿足自動化需求。
所以,衍生了在多伺服器中的容器編排---------------k8s
天然的支援分散式測試,多伺服器分攤壓力資源,動態調整pod副本數這些優勢不得不說“很牛皮”
而k8s的原理很難理如pod中網路互通、檔案共享。不理解原理也很難寫出對應的 yaml進行部署
流程圖
.
UI自動化通過 框架比如 testng,觸發成百上千的的執行緒不是問題
據此可知,叢集提供selenium grid HUB節點的URL來支援大量用例的併發
所以把selenium grid部署在k8s即可,HUB、node分為2個服務進行部署
selenium node即通過調整pod副本數來支援更多的用例
----------------------------------------------------------------------------
以下 hub節點 的 k8s 的yaml
apiVersion: apps/v1 kind: Deployment metadata: name: selenium-hub labels: name: selenium-hub spec: replicas: 1 selector: matchLabels: name: selenium-hub template: metadata: labels: name: selenium-hub spec: containers: - name: selenium-hub image: xxxxxxxxx imagePullPolicy: ifNotPresent ports: - containerPort: 4444 env: - name: GRID_TIMEOUT value: '0' - name: GRID_THROW_ON_CAPABILITY_NOT_PRESENT value: 'true' - name: GRID_NEW_SESSION_WAIT_TIMEOUT value: '-1' - name: GRID_NEW_BROWSER_TIMEOUT value: '15000' - name: GRID_TIMEOUT value: '30000' - name: GRID_CLEAN_UP_CYCLE value: '30000' - name: JAVA_OPTS value: -Xmx512m - name: GRID_MAX_SESSION value: '30' --- apiVersion: v1 kind: Service metadata: name: selenium-hub labels: name: selenium-hub spec: type: NodePort ports: - port: 4444 targetPort: 4444 name: port0 nodePort: 30000 selector: name: selenium-hub sessionAffinity: None
———— 我願翻山越嶺,我願乘風破浪。只為你,揚帆,遠航...