云原生集成開發(fā)環(huán)境——TitanIDE
通過網(wǎng)頁在任何地方更安全、更高效地編碼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)用部署到集群。
· 驗(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)行訪問。
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ā)布接口的功能。
--------------------------