1. 程式人生 > 其它 >使用k8s做分散式自動化測試

使用k8s做分散式自動化測試

背景:

對於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

  

———— 我願翻山越嶺,我願乘風破浪。只為你,揚帆,遠航...