溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)

發(fā)布時(shí)間:2021-12-10 17:59:13 來(lái)源:億速云 閱讀:379 作者:柒染 欄目:云計(jì)算

這篇文章給大家介紹怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

測(cè)試分層

測(cè)試的目的是為了驗(yàn)證預(yù)期的功能,發(fā)現(xiàn)潛在的缺陷。測(cè)試增強(qiáng)了交付合格產(chǎn)品的信心,也給敏捷迭代帶來(lái)了可能??梢哉f(shuō),測(cè)試決定了產(chǎn)品的開(kāi)發(fā)進(jìn)度。

網(wǎng)絡(luò)模型有七層的 OSI 、四層的 TCP,而開(kāi)發(fā)模式有 MTV、MVC、MVP、MVVM 等。高內(nèi)聚、低耦合,劃分職責(zé)、分模塊、分層。然后結(jié)構(gòu)化、標(biāo)準(zhǔn)化,技術(shù)逐步走向成熟。

測(cè)試也分為,UI 測(cè)試、API 測(cè)試、單元測(cè)試。測(cè)試并不是一項(xiàng)新技術(shù),更多是產(chǎn)出與成本的一種平衡。 

下面主要講的是如何在 KubeSphere 平臺(tái)上使用 KubeSphere DevOps 系統(tǒng) 運(yùn)行自動(dòng)化測(cè)試。

 

什么是 KubeSphere DevOps

KubeSphere 針對(duì)容器與 Kubernetes 的應(yīng)用場(chǎng)景,基于 Jenkins 提供了一站式 DevOps 系統(tǒng),包括豐富的 CI/CD 流水線構(gòu)建與插件管理功能,還提供 Binary-to-Image(B2I)、Source-to-Image(S2I),為流水線、S2I、B2I 提供代碼依賴(lài)緩存支持,以及代碼質(zhì)量管理與流水線日志等功能。

KubeSphere 內(nèi)置的 DevOps 系統(tǒng)將應(yīng)用的開(kāi)發(fā)和自動(dòng)發(fā)布與容器平臺(tái)進(jìn)行了很好的結(jié)合,還支持對(duì)接第三方的私有鏡像倉(cāng)庫(kù)和代碼倉(cāng)庫(kù)形成完善的私有場(chǎng)景下的 CI/CD,提供了端到端的用戶(hù)體驗(yàn)。

但是,很少有用戶(hù)知道,KubeSphere DevOps 還可以用來(lái)搭建自動(dòng)化測(cè)試系統(tǒng),為自動(dòng)化的單元測(cè)試、API 測(cè)試和 UI 測(cè)試帶來(lái)極大的便利性,提高測(cè)試人員的工作效率。

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  
 

單元測(cè)試

單元測(cè)試的運(yùn)行頻率非常高,每次提交代碼都應(yīng)該觸發(fā)一次。單元測(cè)試的依賴(lài)少,通常只需要一個(gè)容器運(yùn)行環(huán)境即可。

下面是一個(gè)使用 golang:latest 跑單元測(cè)試的例子。

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í)行流水線的日志:

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  

針對(duì)其他語(yǔ)言、框架,單元測(cè)試通過(guò)安裝一些包、Mock 相關(guān)服務(wù),也能夠便捷地運(yùn)行在 Kubernetes 上。更多可以挖掘的是寫(xiě)單元測(cè)試的技巧,而不是運(yùn)行時(shí)和單元測(cè)試方案。

 

API 測(cè)試

如果團(tuán)隊(duì)的自動(dòng)化測(cè)試剛起步,API 自動(dòng)化測(cè)試是非常好的切入點(diǎn)。

單元測(cè)試主要由研發(fā)負(fù)責(zé)寫(xiě)。在快速迭代的過(guò)程中,有經(jīng)驗(yàn)的研發(fā)也不會(huì)忘記寫(xiě)單元測(cè)試。重構(gòu)、變更越快,測(cè)試不會(huì)成為負(fù)擔(dān),反而更重要。沒(méi)有寫(xiě)單元測(cè)試,只能說(shuō)其不被重視。推動(dòng)一件不被執(zhí)行者重視、管理者很難看到收益的事情是非常難的。

而 UI 自動(dòng)化測(cè)試常常又被人工測(cè)試替代。同時(shí),維護(hù) UI 自動(dòng)化測(cè)試成本較高,在快速迭代的過(guò)程中,不應(yīng)該過(guò)多地進(jìn)行 UI 自動(dòng)化測(cè)試。

API 測(cè)試的優(yōu)勢(shì)在于,在前后端分離的架構(gòu)下,API 相關(guān)的文檔和資料相對(duì)完善,團(tuán)隊(duì)成員對(duì) API 相對(duì)熟悉,有利于進(jìn)行測(cè)試。

下面是一個(gè)使用 Postman 進(jìn)行 API 自動(dòng)化測(cè)試的例子:

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:

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  

下載 Archive 的 Artifact(制品),解壓后查看測(cè)試報(bào)告:

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  

API 自動(dòng)化測(cè)試的框架很容易實(shí)現(xiàn),實(shí)現(xiàn)幾點(diǎn)功能即可:

  • 接口請(qǐng)求
  • 響應(yīng)斷言
  • 請(qǐng)求編排
  • 生成報(bào)告

但一定要根據(jù)團(tuán)隊(duì)的 API 測(cè)試、交付習(xí)慣選擇合適的方案??梢宰约洪_(kāi)發(fā),也可以使用現(xiàn)有的工具。上面選擇的是 Postman + Newman 的方案,原因是團(tuán)隊(duì)普遍都使用 Postman 進(jìn)行 API 測(cè)試。

剩下的就是如何組織大家進(jìn)行測(cè)試,可以分別提交文件到一個(gè)共同的倉(cāng)庫(kù),也可以使用付費(fèi)版 Postman 共享數(shù)據(jù)集中測(cè)試。

 

UI 測(cè)試

UI 自動(dòng)化測(cè)試的成本高有幾個(gè)方面:

  • 測(cè)試用例難維護(hù)。前端樣式變化、產(chǎn)品邏輯變化。
  • 很難提供穩(wěn)定的運(yùn)行環(huán)境。各種超時(shí)、臟數(shù)據(jù)會(huì)導(dǎo)致失敗率很高。

這里的 UI 自動(dòng)化測(cè)試,采用的是我熟悉的 Robotframework 框架,使用關(guān)鍵字進(jìn)行自動(dòng)化測(cè)試。

下面是一個(gè)使用 Robotframework 進(jìn)行 UI 自動(dòng)化測(cè)試的例子:

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í)行后的流水線日志:

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  

下載流水線 Archive 的 Artifact,解壓后查看測(cè)試報(bào)告:

怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  
怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)  

KubeSphere (https://kubesphere.io) 是在 Kubernetes 之上構(gòu)建的以應(yīng)用為中心的多租戶(hù)容器平臺(tái),提供全棧的 IT 自動(dòng)化運(yùn)維的能力,簡(jiǎn)化企業(yè)的 DevOps 工作流。KubeSphere 提供了運(yùn)維友好的向?qū)讲僮鹘缑?,幫助企業(yè)快速構(gòu)建一個(gè)強(qiáng)大和功能豐富的容器云平臺(tái)。

關(guān)于怎么使用KubeSphere DevOps 搭建自動(dòng)化測(cè)試系統(tǒng)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI