使用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
————
我愿翻山越岭,我愿乘风破浪。只为你,扬帆,远航...

浙公网安备 33010602011771号