云原生集成开发环境——TitanIDE
通过网页在任何地方更安全、更高效地编码2022-06-24
982
作者:行云创新 何演
CloudOS是行云创新自主研发的云原生应用开发平台。它通过可视化的蓝图设计器,将复杂的软件架构图变得清晰、一目了然。它还图形化封装了K8S、Docker等底层技术,降低了云原生技术门槛。通过这些技术实现了应用的部署或升级,帮助到企业将现有业务快速迁移上云。
下面以部署应用为例,阐述如何使用Postman+Xmysql自动化测试CloudOS平台服务接口。触发部署应用的接口后,通常需要去做以下几件事来验证是否有成功将应用部署到集群。
· 验证接口响应是否为200
Postman已经有相关语法,直接使用即可。
tests["Status code is 200"] = responseCode.code === 200;
· 验证返回的json格式是否符合预期
接口自动化测试用作回归用途时,常常需要断言响应数据的结构及字段属性是否发生了变化,通过对响应进行格式校验,规避因接口发送变动但没有通知测试人员导致漏测的情况。
本文借助jsonschema来进行校验。
首先,将响应结果复制并粘贴至https://www.jsonschema.net/将内容转为json schema语言。然后将转换后的Json schema复制并粘贴至postman的script当中。接下来使用TV4进行JSON模式验证:
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;
});
· 验证数据库中是否存在该实例
node.js的扩展模块xmysql提供了mysql的http rest接口。 它可以将数据库的表数据转换成 Restful API 接口,返回 JOSN 格式的数据结果。因为postman本身没有连接数据库的功能,所以需要借助xmysql来查询数据库表。
1、启动xmysql
2、通过api的方式查询数据库表中是否存在发布的实例id
· 验证集群上面是否存在该实例(CloudOS中的实例等同于k8s的namespace)
在Kubernetes集群中,API Server是集群管理API的入口,由运行在Master节点上的一个名为kube-apiserver的进程提供的服务。除了使用官方的kubectl工具命令外,还可以使用Postman调用api的方式进行访问。
3、kubectl describe secret apiviewer-token-lxfxv
4、kubectl create rolebinding apiadmin --clusterrole cluster-admin --serviceaccount default:apiviewer,创建一个ClusterRole,把刚创建的ServiceAccount与它绑定。
5、kubectl create clusterrolebinding serviceaccounts-cluster-admin
--clusterrole=cluster-admin
--group=system:serviceaccounts 更新ClusterRole角色权限
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证书复制到Postman同一台机器上,然后双击打开,便会出现一个安装按钮,一直下一步直到安装成功即可。
8、在Postman中添加请求,设置集合变量BearerToken和APIServer URL
9、根据请求接口响应进行集群是否包含实例的校验
· 验证实例中的pod是否与预期的一样
1、在Postman中添加请求,设置集合变量BearerToken和APIServer URL
2、根据接口响应校验集群中实例包含的pod信息是否正确
通过上述这些校验,可以实现快速回归验证CloudOS平台服务发布接口的功能。
--------------------------