這篇文章給大家介紹怎么使用KubeSphere DevOps 搭建自動化測試系統(tǒng),內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
開封ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
測試的目的是為了驗證預期的功能,發(fā)現(xiàn)潛在的缺陷。測試增強了交付合格產(chǎn)品的信心,也給敏捷迭代帶來了可能??梢哉f,測試決定了產(chǎn)品的開發(fā)進度。
網(wǎng)絡模型有七層的 OSI 、四層的 TCP,而開發(fā)模式有 MTV、MVC、MVP、MVVM 等。高內(nèi)聚、低耦合,劃分職責、分模塊、分層。然后結構化、標準化,技術逐步走向成熟。
測試也分為,UI 測試、API 測試、單元測試。測試并不是一項新技術,更多是產(chǎn)出與成本的一種平衡。
下面主要講的是如何在 KubeSphere 平臺上使用 KubeSphere DevOps 系統(tǒng)運行自動化測試。
KubeSphere 針對容器與 Kubernetes 的應用場景,基于 Jenkins 提供了一站式 DevOps 系統(tǒng),包括豐富的 CI/CD 流水線構建與插件管理功能,還提供 Binary-to-Image(B2I)、Source-to-Image(S2I),為流水線、S2I、B2I 提供代碼依賴緩存支持,以及代碼質(zhì)量管理與流水線日志等功能。
KubeSphere 內(nèi)置的 DevOps 系統(tǒng)將應用的開發(fā)和自動發(fā)布與容器平臺進行了很好的結合,還支持對接第三方的私有鏡像倉庫和代碼倉庫形成完善的私有場景下的 CI/CD,提供了端到端的用戶體驗。
但是,很少有用戶知道,KubeSphere DevOps 還可以用來搭建自動化測試系統(tǒng),為自動化的單元測試、API 測試和 UI 測試帶來極大的便利性,提高測試人員的工作效率。
單元測試的運行頻率非常高,每次提交代碼都應該觸發(fā)一次。單元測試的依賴少,通常只需要一個容器運行環(huán)境即可。
下面是一個使用 golang:latest 跑單元測試的例子。
pipeline {
agent {
node {
label 'go'
}
}
stages {
stage('testing') {
steps {
container('go') {
sh '''
git clone https://github.com/etcd-io/etcd.git
cd etcd
make test
'''
}
}
}
}
}
執(zhí)行流水線的日志:
針對其他語言、框架,單元測試通過安裝一些包、Mock 相關服務,也能夠便捷地運行在 Kubernetes 上。更多可以挖掘的是寫單元測試的技巧,而不是運行時和單元測試方案。
如果團隊的自動化測試剛起步,API 自動化測試是非常好的切入點。
單元測試主要由研發(fā)負責寫。在快速迭代的過程中,有經(jīng)驗的研發(fā)也不會忘記寫單元測試。重構、變更越快,測試不會成為負擔,反而更重要。沒有寫單元測試,只能說其不被重視。推動一件不被執(zhí)行者重視、管理者很難看到收益的事情是非常難的。
而 UI 自動化測試常常又被人工測試替代。同時,維護 UI 自動化測試成本較高,在快速迭代的過程中,不應該過多地進行 UI 自動化測試。
API 測試的優(yōu)勢在于,在前后端分離的架構下,API 相關的文檔和資料相對完善,團隊成員對 API 相對熟悉,有利于進行測試。
下面是一個使用 Postman 進行 API 自動化測試的例子:
pipeline {
agent {
kubernetes {
label 'apitest'
yaml '''apiVersion: v1
kind: Pod
spec:
containers:
- name: newman
image: postman/newman_alpine33
command: [\'cat\']
tty: true
volumeMounts:
- name: dockersock
mountPath: /var/run/docker.sock
- name: dockerbin
mountPath: /usr/bin/docker
volumes:
- name: dockersock
hostPath:
path: /var/run/docker.sock
- name: dockerbin
hostPath:
path: /usr/bin/docker
'''
defaultContainer 'newman'
}
}
parameters {
string(name: 'HOST', defaultValue: '10.10.10.10', description: '')
string(name: 'PORT', defaultValue: '8000', description: '')
string(name: 'USERNAME', defaultValue: 'admin', description: '')
string(name: 'PASSWORD', defaultValue: 'password', description: '')
}
stages {
stage('testing') {
steps {
sh '''
apk add --no-cache bash git openssh
git clone https://yourdomain.com/ns/ks-api-test.git
cd ks-api-test
sed -i "s/__HOST__/$HOST/g" postman_environment.json
sed -i "s/__PORT__/$PORT/g" postman_environment.json
sed -i "s/__USERNAME__/$USERNAME/g" postman_environment.json
sed -i "s/__PASSWORD__/$PASSWORD/g" postman_environment.json
npm install -g newman-reporter-htmlextra
newman run iam/postman_collection.json -e postman_environment.json -r htmlextra
'''
}
}
}
post {
always {
archiveArtifacts 'ks-api-test/newman/*'
}
}
}
執(zhí)行后的 Archive:
下載 Archive 的 Artifact(制品),解壓后查看測試報告:
API 自動化測試的框架很容易實現(xiàn),實現(xiàn)幾點功能即可:
但一定要根據(jù)團隊的 API 測試、交付習慣選擇合適的方案??梢宰约洪_發(fā),也可以使用現(xiàn)有的工具。上面選擇的是 Postman + Newman 的方案,原因是團隊普遍都使用 Postman 進行 API 測試。
剩下的就是如何組織大家進行測試,可以分別提交文件到一個共同的倉庫,也可以使用付費版 Postman 共享數(shù)據(jù)集中測試。
UI 自動化測試的成本高有幾個方面:
這里的 UI 自動化測試,采用的是我熟悉的 Robotframework 框架,使用關鍵字進行自動化測試。
下面是一個使用 Robotframework 進行 UI 自動化測試的例子:
pipeline {
agent {
kubernetes {
label 'robotframework'
yaml '''apiVersion: v1
kind: Pod
spec:
containers:
- name: robotframework
image: shaowenchen/docker-robotframework:latest
tty: true
volumeMounts:
- name: dockersock
mountPath: /var/run/docker.sock
- name: dockerbin
mountPath: /usr/bin/docker
volumes:
- name: dockersock
hostPath:
path: /var/run/docker.sock
- name: dockerbin
hostPath:
path: /usr/bin/docker
'''
defaultContainer 'robotframework'
}
}
parameters {
string(name: 'HOST', defaultValue: '10.10.10.10', description: '')
string(name: 'PORT', defaultValue: '8080', description: '')
string(name: 'USERNAME', defaultValue: 'admin', description: '')
string(name: 'PASSWORD', defaultValue: 'password', description: '')
}
stages {
stage('testing') {
steps {
sh '''
curl -s -L https://raw.githubusercontent.com/shaowenchen/scripts/master/kubesphere/preinstall.sh | bash
git clone https://yourdomain.com/ns/ks-ui-test.git
cd ks-ui-test
sed -i "s/__USERNAME__/$USERNAME/g" tests/common.robot
sed -i "s/__PASSWORD__/$PASSWORD/g" tests/common.robot
echo "\nTestEnv http://$HOST:$PORT" >> tests/api.robot
echo "\nTestEnv http://$HOST:$PORT" >> tests/devops.robot
./start.sh'''
}
}
}
post {
always {
sh 'tar cvf report-$BUILD_NUMBER.tar ks-ui-test/tests/report'
archiveArtifacts '*.tar'
}
}
}
執(zhí)行后的流水線日志:
下載流水線 Archive 的 Artifact,解壓后查看測試報告:
KubeSphere (https://kubesphere.io) 是在 Kubernetes 之上構建的以應用為中心的多租戶容器平臺,提供全棧的 IT 自動化運維的能力,簡化企業(yè)的 DevOps 工作流。KubeSphere 提供了運維友好的向?qū)讲僮鹘缑?,幫助企業(yè)快速構建一個強大和功能豐富的容器云平臺。
關于怎么使用KubeSphere DevOps 搭建自動化測試系統(tǒng)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。