国产精品免费久久久久电影院_亚洲日韩蜜桃av无码一二三区_AV在线无码免费特黄毛片_亚洲欧美日韩电影在线专区_福利小视频午夜福利一区二区中文字幕_在线免费观看黄黄色视频_欧美菊爆视频在线观看免费_婷婷六月丁香五月_久久伊人精品中文字幕有码_强奸国产无码激情

使用Postman+Xmysql自動(dòng)化測試CloudOS服務(wù)接口

2022-06-24

1008

作者:kaiyun開云創(chuàng)新 何演


CloudOS是kaiyun開云創(chuàng)新自主研發(fā)的云原生應(yīng)用開發(fā)平臺(tái)。它通過可視化的藍(lán)圖設(shè)計(jì)器,將復(fù)雜的軟件架構(gòu)圖變得清晰、一目了然。它還圖形化封裝了K8S、Docker等底層技術(shù),降低了云原生技術(shù)門檻。通過這些技術(shù)實(shí)現(xiàn)了應(yīng)用的部署或升級,幫助到企業(yè)將現(xiàn)有業(yè)務(wù)快速遷移上云。


下面以部署應(yīng)用為例,闡述如何使用Postman+Xmysql自動(dòng)化測試CloudOS平臺(tái)服務(wù)接口。觸發(fā)部署應(yīng)用的接口后,通常需要去做以下幾件事來驗(yàn)證是否有成功將應(yīng)用部署到集群。

  • 1、驗(yàn)證接口響應(yīng)是否為200。
  • 2、驗(yàn)證返回的json格式是否符合預(yù)期。
  • 3、驗(yàn)證數(shù)據(jù)庫中是否存在該實(shí)例。
  • 4、驗(yàn)證集群上面是否存在該實(shí)例(CloudOS中的實(shí)例等同于k8s的namespace)
  • 5、驗(yàn)證實(shí)例中的pod是否與預(yù)期的一樣,例如單副本發(fā)布java+mysql,那么副本后的pod數(shù)是2個(gè),且正在運(yùn)行。


· 驗(yàn)證接口響應(yīng)是否為200


Postman已經(jīng)有相關(guān)語法,直接使用即可。


tests["Status code is 200"] = responseCode.code === 200;


· 驗(yàn)證返回的json格式是否符合預(yù)期


接口自動(dòng)化測試用作回歸用途時(shí),常常需要斷言響應(yīng)數(shù)據(jù)的結(jié)構(gòu)及字段屬性是否發(fā)生了變化,通過對響應(yīng)進(jìn)行格式校驗(yàn),規(guī)避因接口發(fā)送變動(dòng)但沒有通知測試人員導(dǎo)致漏測的情況。


本文借助jsonschema來進(jìn)行校驗(yàn)。


首先,將響應(yīng)結(jié)果復(fù)制并粘貼至https://www.jsonschema.net/將內(nèi)容轉(zhuǎn)為json schema語言。然后將轉(zhuǎn)換后的Json schema復(fù)制并粘貼至postman的script當(dāng)中。接下來使用TV4進(jìn)行JSON模式驗(yàn)證:


pm.test('Schema is valid', function() {

var jsonData = pm.response.json();

var versions=jsonData.data.list[0].activities[0].versions[0]

console.log(versions);

pm.expect(tv4.validate(versions, schema)).to.be.true;

});


· 驗(yàn)證數(shù)據(jù)庫中是否存在該實(shí)例


node.js的擴(kuò)展模塊xmysql提供了mysql的http rest接口。 它可以將數(shù)據(jù)庫的表數(shù)據(jù)轉(zhuǎn)換成 Restful API 接口,返回 JOSN 格式的數(shù)據(jù)結(jié)果。因?yàn)閜ostman本身沒有連接數(shù)據(jù)庫的功能,所以需要借助xmysql來查詢數(shù)據(jù)庫表。


1、啟動(dòng)xmysql



2、通過api的方式查詢數(shù)據(jù)庫表中是否存在發(fā)布的實(shí)例id



· 驗(yàn)證集群上面是否存在該實(shí)例(CloudOS中的實(shí)例等同于k8s的namespace)


在Kubernetes集群中,API Server是集群管理API的入口,由運(yùn)行在Master節(jié)點(diǎn)上的一個(gè)名為kube-apiserver的進(jìn)程提供的服務(wù)。除了使用官方的kubectl工具命令外,還可以使用Postman調(diào)用api的方式進(jìn)行訪問。


  • 1、kubectl create sa apiviewer 創(chuàng)建ServiceAccount, 它類似于傳統(tǒng)登陸里的用戶。創(chuàng)建一個(gè)ServiceAccount以后,會(huì)自動(dòng)為它創(chuàng)建一個(gè)關(guān)聯(lián)的secret(密鑰)。
  • 2、kubectl get sa apiviewer  -ojson



3、kubectl describe secret apiviewer-token-lxfxv



4、kubectl create rolebinding apiadmin --clusterrole cluster-admin --serviceaccount default:apiviewer,創(chuàng)建一個(gè)ClusterRole,把剛創(chuàng)建的ServiceAccount與它綁定。


5、kubectl create clusterrolebinding serviceaccounts-cluster-admin

--clusterrole=cluster-admin

--group=system:serviceaccounts 更新ClusterRole角色權(quán)限


6、接下來獲取Bearer Token、Certificate、API Server URL

[root@m1 ~]# SERVICE_ACCOUNT=apiviewer

[root@m1 ~]# SECRET=$(kc get serviceaccount ${SERVICE_ACCOUNT} -ojsonpath='{.secrets[0].name}')

[root@m1 ~]#  TOKEN=$(kc get secret ${SECRET} -ojsonpath='{.data.token}'|base64 -d)

[root@m1 ~]# kc get secret ${SECRET} -o jsonpath="{.data['ca.crt']}" | base64 -d > /tmp/ca.crt

[root@m1 ~]#  APISERVER=https://$(kc -n default get endpoints kubernetes --no-headers | awk '{ print $2 }' | cut -d "," -f 1)



7、通過scp等工具或命令把/tmp/ca.crt證書復(fù)制到Postman同一臺(tái)機(jī)器上,然后雙擊打開,便會(huì)出現(xiàn)一個(gè)安裝按鈕,一直下一步直到安裝成功即可。


8、在Postman中添加請求,設(shè)置集合變量BearerToken和APIServer URL



9、根據(jù)請求接口響應(yīng)進(jìn)行集群是否包含實(shí)例的校驗(yàn)



· 驗(yàn)證實(shí)例中的pod是否與預(yù)期的一樣


1、在Postman中添加請求,設(shè)置集合變量BearerToken和APIServer URL



2、根據(jù)接口響應(yīng)校驗(yàn)集群中實(shí)例包含的pod信息是否正確


通過上述這些校驗(yàn),可以實(shí)現(xiàn)快速回歸驗(yàn)證CloudOS平臺(tái)服務(wù)發(fā)布接口的功能。



--------------------------


CloudOS,免費(fèi)在線體驗(yàn)>








技術(shù)交流
我們建立了多個(gè)云原生技術(shù)交流群,其中有來自O(shè)racle、Citrix、華為、騰訊等國內(nèi)外云計(jì)算專家,立即掃碼,拉你進(jìn)群。目前已有2000+開發(fā)者加入我們......
云原生廠商 云原生技術(shù)服務(wù)商
在云原生時(shí)代,kaiyun開云創(chuàng)新致力于通過賦能開發(fā)者,實(shí)現(xiàn)企業(yè)快速迭代與交付,大幅提升創(chuàng)新效率。
產(chǎn)品下載