使用Postman+Xmysql自动化测试CloudOS服务接口

2022-06-24

219

作者:行云创新 何演


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


下面以部署应用为例,阐述如何使用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、启动xmysql



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,免费在线体验>








技术交流
我们建了一个云原生技术交流群,其中有来自Oracle、Citrix、华为、腾讯等国内外云计算专家,立即扫码,拉你进群。目前已有1000+开发者加入我们......
云原生厂商 云原生技术服务商
在云原生时代,行云创新致力于通过赋能开发者,实现企业快速迭代与交付,大幅提升创新效率。
免费试用