DevOps之自动化测试平台

2020-07-06 16:40:46 浏览数 (1)

1. 背景

oss软件整体采用前后端分离的模式,前端采用JQuery自研组件,包含常用web组件。后端采用spring boot spring cloud consul gRPC的微服务架构。内部服务的调用通过consul注册中心集群,建立调用通道,因此后端开发了大量的api接口。为了满足这些api能更好的回归测试,我们希望能有一个自动化测试平台,它应该要满足以下几个特性:

1. 能简单的管理测试集和测试用例,并和api管理平台能集成。

2. 选型自动化测试框架,能同时支持api和web。参考wiki文章

3. 开发尽量简单化,平台能有IDE,和丰富的调用库。

4. 一些简单的CRUD的api,平台可自动生成测试代码。

5. 和CI / DevOps实践的其他ALM工具无缝集成。

2. 流程说明

以下是我司的软件测试和发布流程,自动化测试做为整个发布流程的一个checkpoint,在staging环境运行,当用例不能全部通过时,打包不通过。

3. katalon用法

3.1. 项目结构

katalon项目结构

1. profiles,全局配置文件,用于管理项目的全局配置,如域名、登录的账号/密码等;

2. Test Case,用例开发入口,groovy语法;

3. Object Repository,可定义Test Object和Web Service Request,界面元素和请求;

4. Test Suites,用例集入口,管理Test Cases;

5. Key Words,定义一些常用的groovy类;

6. Reports,用例执行完的报告。

详细说明可见:https://www.testclass.cn/katalon_studio_start.html

官方文档:https://docs.katalon.com/katalon-studio/docs/index.html

3.2. 用例设计

1.api数据维护到api-doc,需要检查入参、出参、示例的准确性;

2.确定api是读还是写操作,读操作在prod上执行,写操作在staging执行;

3.用例设计:

• 通用用例:api状态码返回200,api接口返回数据响应时长在3s内;

• 业务用例:一些重要的业务特性需要考虑用例覆盖。example:边缘流量是否大于中转流量,请求成功率是否低于90%,推送成功与否。

3.3. 用例开发

1.Test Cases新增一个用例文件,文件命名遵循api-doc的命名方式:模块_接口编号.tc,如:customer_tc9_bandwidth_country.tc。注意必须有后缀,否则集成到jenkins报告显示会有问题;

2.指定用例执行环境,staging或prod;

3.获取登录的授权token;

4.构造参数,header、body、请求方式get/post;

5.对返回的数据设置断言,assert 或 KeywordUtil.markFailed;

6.代码调试,通过设计不同用例,验证用例passes和failure的状态;

7.用例开发完成,需要加入到对应的Test Suites,jenkins持续集成才可覆盖到该用例的执行。

3.4. 与jenkins集成

考虑到oss自动化测试用例的差异性,在jenkins新建3个集成项目,Jenkins的配置详见:http://ci.onewocloud.net/job/autotest-peacock/configure,具体项目说明如下:

autotest-ossweb,页面自动化测试项目,目前10个用例,主要是登录、配置单、证书查询、带宽查询等客户高频操作。但因为后续页面会调整成react新框架,因此原有的用例将不适用,需要重新录制。用例录制可参考文档:Katalon简介.pptx

autotest-peacock,复杂业务的api自动化测试项目,目前45个用例,主要覆盖swan、open-api、cygnet模块。如推送预取成功率、带宽是否掉坑、swan的统计报表等。详见具体用例列表

autotest-ossapi,简单业务可由用例平台生成的api自动化测试项目,目前8个用例,主要用于管理简单的增删改查,业务逻辑较为简单的用例,通过平台配置用例的基本参数即可自动生成。在用户中心->组件用例统计->新增用例集/用例。

自动化测试结果:

4. 用例生成平台

4.1. 流程图

流程图

研发新开发完一个接口,需要在falcon平台配置对应的api参数,也需要配置对应的自动化测试用例,具体流程如下:

1. 新开发一个api接口,用户在falcon平台界面设置api的属性,属性有:标题、url、所属组件、method、接口类型等;

2. 新增该api接口的用例信息,对应的属性有:用例编号、用例名称、用例执行顺序、重要性、状态、用例路径、测试用户、匹配符替换(用于替换url的**)、输入、输出等;

3. partridge每隔30分钟请求falcon的测试用例数据接口,将json格式封装成数据对象放到内存;

4. 根据不同的接口类型(get/post/put/delete),调用不同的freemaker模板,生成xml和groovy文件,涉及的文件:

1) Test Cases/api/cygnet_api/component.delete.tc #用例xml

2) Scripts/api/cygnet_api/component.delete/Script1548905939790.groovy #脚本数据

3) Test Suites/api/cygnet_api.ts #用例集数据

5. 用JGit将生成的文件提交到gitlab上;

6. Jenkins构建,运行自动化测试项目。

4.2. 平台操作

1. 用例数统计

2. 用例管理界面

5. 机器部署

1. partridge:192.168.1.115,规则密码

部署路径:/usr/local/partridge,supervisor启动

2. Jenkins-agent:192.168.1.187,规则密码

部署路径:C:jenkins,启动start_slave.bat

用例执行脚本:C:katalonrun_autotest_ossapirun_ossapi_test.bat

0 人点赞