作者:行云创新 何演

CloudOS是行云创新自主研发的。它通过可视化的蓝图设计器,将复杂的软件架构图变得清晰、一目了然。它还图形化封装了K8S、Docker等底层技术,降低了云原生技术门槛。通过这些技术实现了应用的部署或升级,帮助到企业将现有业务快速迁移上云。

CloudOS,在线体验环境 >

下面以部署应用为例,阐述如何使用Postman+Xmysql自动化测试CloudOS平台服务接口。触发部署应用的接口后,通常需要去做以下几件事来验证是否有成功将应用部署到集群。

1、验证接口响应是否为200。 2、验证返回的json格式是否符合预期。 3、验证数据库中是否存在该实例。 4、验证集群上面是否存在该实例(CloudOS中的实例等同于k8s的namespace) 5、验证实例中的pod是否与预期的一样,例如单副本发布java+mysql,那么副本后的pod数是2个,且正在运行。

· 验证接口响应是否为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、启动xmysq

2、通过api的方式查询数据库表中是否存在发布的实例id

· 验证集群上面是否存在该实例(CloudOS中的实例等同于k8s的namespace)

在Kubernetes集群中,API Server是集群管理API的入口,由运行在Master节点上的一个名为kube-apiserver的进程提供的服务。除了使用官方的kubectl工具命令外,还可以使用Postman调用api的方式进行访问。

1、kubectl create sa apiviewer 创建ServiceAccount, 它类似于传统登陆里的用户。创建一个ServiceAccount以后,会自动为它创建一个关联的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,创建一个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平台服务发布接口的功能。

CloudOS ,在线体验环境 >

查看原文