一种基于容器云平台的自动化测试方法与流程
未命名
10-25
阅读:90
评论:0
1.本发明公开一种方法,涉及容器云平台应用技术领域,具体地说是一种基于容器云平台的自动化测试方法。
背景技术:
2.kubernets简称k8s,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效,kubernetes提供了应用部署,规划,更新,维护的一种机制。越来越多的公司正利用k8s,在基于k8s的平台上运行自己的业务。
3.软件的自动化测试能够有效提高测试效率,减少人力成本,对快速发现软件中存在的问题,保障软件的正确性、完整性、安全性和质量有重要意义。但是无论是对于容器云平台自身的测试又或者是其他业务系统的测试,在任意地方搭建一个完全一致的自动化测试环境均是费时费力的工作,而且还无法保证完全正确。以及在任意时间段构建一个新的自动化测试环境并执行测试,也很难完成。尤其在实际测试中,经常需要到客户现场给客户进行测试,需要在现场重新搭建一套测试环境,而对于不同的操作系统其所需的依赖不完全一致,导致了环境搭建困难以及容易出错。
4.由上可见,在自动化测试过程中,现有自动化测试环境构建复杂,容易出错,不能保证完全一致的自动化测试环境以及不能保证随时能顺利执行的自动化测试。
技术实现要素:
5.本发明针对现有技术的问题,提供一种基于容器云平台的自动化测试方法,能够极大提高在不同环境下借助云平台实现自动化测试的速度以及降低基础环境及依赖对测试框架的影响及初始化难度,保证测试的一致性,重复使用性,自动更新执行等特性,减少了人力资源的消耗及成本。
6.本发明提出的具体方案是:
7.本发明提供一种基于容器云平台的自动化测试方法,基于容器云平台,包括:
8.步骤1:创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数;
9.步骤2:创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;
10.步骤3:部署cicd插件至容器云平台;
11.步骤4:关联gitlab代码源,导入自动化测试代码项目autotest;
12.步骤5:根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:
13.步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,
14.步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,
15.步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;
16.步骤6:根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;
17.步骤7:根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。
18.进一步,所述的一种基于容器云平台的自动化测试方法中步骤2中部署存储插件至容器云平台,查看容器云平台插件列表中各存储插件是否状态正常,若正常则根据环境所具备的存储插件进行选择,根据存储插件选择支持多副本多线程并行模式或者单副本多线程并行模式,根据存储插件对接存储池。
19.进一步,所述的一种基于容器云平台的自动化测试方法中步骤3中查询容器云平台插件列表中是否存在cicd插件,若不存在则部署cicd插件至容器云平台,并等待cicd插件正常运行。
20.进一步,所述的一种基于容器云平台的自动化测试方法中步骤7中根据pod按照多副本多线程并行模式自动执行测试脚本,包括:
21.步骤71:检查所有副本的自动化测试脚本的卷目录下的用例配置文件,根据定义的测试文件路径,遍历路径并查找出所有路径下的符合要求的用例配置文件,
22.步骤72:将测试文件路径统一存放到卷目录下的用例配置文件中,每条路径为一条数据,每一条数据都赋予测试标识test_flag,测试标识为0表示未执行,测试标识为1表示已执行,
23.步骤73:从用例配置文件中读取所有副本执行用例,若测试标识test_flag为0,则执行所述用例,若测试标识为1则跳过所述用例,继续判断下一条,直到遍历完所有用例,
24.步骤74:读取所有用例的测试报告,将报告中的用例及其结果整合到总报告中,待所有报告整合完毕后生成整体的成功数、失败数、错误数和跳过数信息,并存放到pvc中。
25.本发明还提供一种基于容器云平台的自动化测试装置,应用于容器云平台,包括配置模块、部署模块、关联模块、流水线模块、挂载模块和执行模块,
26.配置模块创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数;创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;
27.部署模块部署cicd插件至容器云平台;
28.关联模块关联gitlab代码源,导入自动化测试代码项目autotest;
29.流水线模块根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:
30.步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,
31.步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的
基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,
32.步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;
33.挂载模块根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;
34.执行模块根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。
35.进一步,所述的一种基于容器云平台的自动化测试装置中配置模块部署存储插件至容器云平台,查看容器云平台插件列表中各存储插件是否状态正常,若正常则根据环境所具备的存储插件进行选择,根据存储插件选择支持多副本多线程并行模式或者单副本多线程并行模式,根据存储插件对接存储池。
36.进一步,所述的一种基于容器云平台的自动化测试装置中部署模块查询容器云平台插件列表中是否存在cicd插件,若不存在则部署cicd插件至容器云平台,并等待cicd插件正常运行。
37.进一步,所述的一种基于容器云平台的自动化测试装置中执行模块包括获取脚本路径模块、初始化模块、用例执行模块和测试报告整合模块,
38.获取脚本路径模块检查所有副本的自动化测试脚本的卷目录下的用例配置文件,根据定义的测试文件路径,遍历路径并查找出所有路径下的符合要求的用例配置文件,
39.初始化模块将测试文件路径统一存放到卷目录下的用例配置文件中,每条路径为一条数据,每一条数据都赋予测试标识test_flag,测试标识为0表示未执行,测试标识为1表示已执行,
40.用例执行模块从用例配置文件中读取所有副本执行用例,若测试标识test_flag为0,则执行所述用例,若测试标识为1则跳过所述用例,继续判断下一条,直到遍历完所有用例,
41.测试报告整合模块读取所有用例的测试报告,将报告中的用例及其结果整合到总报告中,待所有报告整合完毕后生成整体的成功数、失败数、错误数和跳过数信息,并存放到pvc中。
42.本发明的有益之处是:
43.本发明提供一种基于容器云平台的自动化测试方法,实现了自动简单的部署方式便可在不同的环境中复刻完全一致的自动化测试环境,并能够根据设定的流水线执行规则触发自动化测试,极大的减少了云平台自身或者其上业务的自动化测试的人力资源投入,同时避免了人工搭建测试环境不一致导致的用例失败的问题,也能使自动化测试刨除时间限制。能极大的节省人力成本。
附图说明
44.图1是本发明方法流程示意图。
45.图2是本发明装置中执行模块内子模块的交互示意图。
具体实施方式
46.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
47.本发明提供一种基于容器云平台的自动化测试方法,基于容器云平台,包括:
48.步骤1:创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数;
49.步骤2:创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;
50.步骤3:部署cicd插件至容器云平台;
51.步骤4:关联gitlab代码源,导入自动化测试代码项目autotest;
52.步骤5:根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:
53.步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,
54.步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,
55.步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;
56.步骤6:根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;
57.步骤7:根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。
58.本发明方法能够极大提高在不同环境下借助云平台实现自动化测试的速度以及降低基础环境及依赖对测试框架的影响及初始化难度,保证测试的一致性,重复使用性,自动更新执行等特性,减少了人力资源的消耗及成本。
59.具体应用中,在本发明方法的一些实施例中,进行基于容器云平台的自动化测试,可参考过程如下:
60.步骤1:创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数。根据创建的configmap来实现对公共参数的动态调整。也可以通过导入的方式添加公共参数,完成创建后并检查配置状态正常。
61.步骤2:创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc。
62.进一步,步骤2中部署存储插件至容器云平台,查看容器云平台插件列表中各存储插件是否状态正常,若正常则根据环境所具备的存储插件进行选择,根据存储插件选择支持多副本多线程并行模式或者单副本多线程并行模式,根据存储插件对接存储池。
63.步骤3:部署cicd插件至容器云平台。
64.进一步,步骤3中查询容器云平台插件列表中是否存在cicd插件,若不存在则部署cicd插件至容器云平台,并等待cicd插件正常运行。
65.步骤4:关联gitlab代码源,导入自动化测试代码项目autotest。其中本发明可以使用基于python的自动化测试代码,并导入自动化测试代码项目autotest。
66.步骤5:根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:
67.步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,
68.步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,
69.步骤53:通过部署阶段创建部署任务,根据部署任务更新应用。
70.在流水线中可以基于python+pyinstall最佳实践模板创建一个每日0点触发的流水线。例如流水线构建阶段克隆代码任务选择将代码克隆至/app目录下,在pyinstaller环境中执行脚本:
71.#/bin/sh
72.cd/app/autotest
73.在发布阶段docker镜像任务中,可以指定dockerfile路径为自动化测试代码中已设定好的dockerfile,并在/app/autotest中构建上下文,将生成的镜像上传的路径设定为内置镜像,镜像名为autotest,其他的按需填写。可以暂时先不修改部署阶段的部署任务。执行一遍流水线,生成测试的基础环境镜像。
74.步骤6:根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc。其中可以使用测试的基础环境镜像创建一个名称唯一的应用,工作负载类型为无状态负载(deployment),例如设置实例为5个,挂载configmap到/autoconf目录下,挂载pvc到/data目录下,设置调度策略为实例分散,即:实例间反亲和,待实例开始运行后即可自动开始测试。
75.步骤7:根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。
76.进一步,步骤7中根据pod按照多副本多线程并行模式自动执行测试脚本,包括:
77.步骤71:检查所有副本的自动化测试脚本的卷目录下的用例配置文件,根据定义的测试文件路径,遍历路径并查找出所有路径下的符合要求的用例配置文件,
78.步骤72:将测试文件路径统一存放到卷目录下的用例配置文件中,每条路径为一条数据,每一条数据都赋予测试标识test_flag,测试标识为0表示未执行,测试标识为1表示已执行,
79.步骤73:从用例配置文件中读取所有副本执行用例,若测试标识test_flag为0,则执行所述用例,若测试标识为1则跳过所述用例,继续判断下一条,直到遍历完所有用例,
80.步骤74:读取所有用例的测试报告,将报告中的用例及其结果整合到总报告中,待所有报告整合完毕后生成整体的成功数、失败数、错误数和跳过数信息,并存放到pvc中。
81.因docker镜像任务为docker镜像,部署方式采用更新应用,通过流水线的部署阶段自动更新应用。等到每日0晨既可触发构建更新应用并执行自动化测试。
82.本发明还提供一种基于容器云平台的自动化测试装置,应用于容器云平台,包括配置模块、部署模块、关联模块、流水线模块、挂载模块和执行模块,
83.配置模块创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数;创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;
84.部署模块部署cicd插件至容器云平台;
85.关联模块关联gitlab代码源,导入自动化测试代码项目autotest;
86.流水线模块根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:
87.步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,
88.步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,
89.步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;
90.挂载模块根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;
91.执行模块根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。
92.上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
93.同样地,本发明装置实现了自动简单的部署方式便可在不同的环境中复刻完全一致的自动化测试环境,并能够根据设定的流水线执行规则触发自动化测试,极大的减少了云平台自身或者其上业务的自动化测试的人力资源投入,同时避免了人工搭建测试环境不一致导致的用例失败的问题,也能使自动化测试刨除时间限制。能极大的节省人力成本。
94.需要说明的是,上述各流程和各装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
95.以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
技术特征:
1.一种基于容器云平台的自动化测试方法,其特征是基于容器云平台,包括:步骤1:创建configmap,设定key为autotest config,设置value为自动化测试脚本的所有公共参数;步骤2:创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;步骤3:部署cicd插件至容器云平台;步骤4:关联gitlab代码源,导入自动化测试代码项目autotest;步骤5:根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;步骤6:根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;步骤7:根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。2.根据权利要求1所述的一种基于容器云平台的自动化测试方法,其特征是步骤2中部署存储插件至容器云平台,查看容器云平台插件列表中各存储插件是否状态正常,若正常则根据环境所具备的存储插件进行选择,根据存储插件选择支持多副本多线程并行模式或者单副本多线程并行模式,根据存储插件对接存储池。3.根据权利要求1或2所述的一种基于容器云平台的自动化测试方法,其特征是步骤3中查询容器云平台插件列表中是否存在cicd插件,若不存在则部署cicd插件至容器云平台,并等待cicd插件正常运行。4.根据权利要求3所述的一种基于容器云平台的自动化测试方法,其特征是步骤7中根据pod按照多副本多线程并行模式自动执行测试脚本,包括:步骤71:检查所有副本的自动化测试脚本的卷目录下的用例配置文件,根据定义的测试文件路径,遍历路径并查找出所有路径下的符合要求的用例配置文件,步骤72:将测试文件路径统一存放到卷目录下的用例配置文件中,每条路径为一条数据,每一条数据都赋予测试标识test_flag,测试标识为0表示未执行,测试标识为1表示已执行,步骤73:从用例配置文件中读取所有副本执行用例,若测试标识test_flag为0,则执行所述用例,若测试标识为1则跳过所述用例,继续判断下一条,直到遍历完所有用例,步骤74:读取所有用例的测试报告,将报告中的用例及其结果整合到总报告中,待所有报告整合完毕后生成整体的成功数、失败数、错误数和跳过数信息,并存放到pvc中。5.一种基于容器云平台的自动化测试装置,其特征是应用于容器云平台,包括配置模块、部署模块、关联模块、流水线模块、挂载模块和执行模块,配置模块创建configmap,设定key为autotest config,设置value为自动化测试脚本
的所有公共参数;创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;部署模块部署cicd插件至容器云平台;关联模块关联gitlab代码源,导入自动化测试代码项目autotest;流水线模块根据需求触发的流水线,在流水线中定义构建、发布和部署三个阶段,包括:步骤51:通过构建阶段创建克隆代码任务和基础环境任务,根据克隆代码任务将自动化测试代码的源码克隆至基础镜像中目录,并根据基础环境任务将工作目录定位到存放克隆的源码的目录中,步骤52:通过发布阶段创建docker镜像任务,利用cicd插件根据docker镜像任务使用dockerfile构建docker镜像,使用dockerfile定义基础镜像为自动化测试脚本所需的基础环境镜像,所述基础环境镜像包含自动化测试脚本所需的语言环境及依赖,步骤53:通过部署阶段创建部署任务,根据部署任务更新应用;挂载模块根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;执行模块根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。6.根据权利要求5所述的一种基于容器云平台的自动化测试装置,其特征是配置模块部署存储插件至容器云平台,查看容器云平台插件列表中各存储插件是否状态正常,若正常则根据环境所具备的存储插件进行选择,根据存储插件选择支持多副本多线程并行模式或者单副本多线程并行模式,根据存储插件对接存储池。7.根据权利要求5所述的一种基于容器云平台的自动化测试装置,其特征是部署模块查询容器云平台插件列表中是否存在cicd插件,若不存在则部署cicd插件至容器云平台,并等待cicd插件正常运行。8.根据权利要求5所述的一种基于容器云平台的自动化测试装置,其特征是执行模块包括获取脚本路径模块、初始化模块、用例执行模块和测试报告整合模块,获取脚本路径模块检查所有副本的自动化测试脚本的卷目录下的用例配置文件,根据定义的测试文件路径,遍历路径并查找出所有路径下的符合要求的用例配置文件,初始化模块将测试文件路径统一存放到卷目录下的用例配置文件中,每条路径为一条数据,每一条数据都赋予测试标识test_flag,测试标识为0表示未执行,测试标识为1表示已执行,用例执行模块从用例配置文件中读取所有副本执行用例,若测试标识test_flag为0,则执行所述用例,若测试标识为1则跳过所述用例,继续判断下一条,直到遍历完所有用例,测试报告整合模块读取所有用例的测试报告,将报告中的用例及其结果整合到总报告中,待所有报告整合完毕后生成整体的成功数、失败数、错误数和跳过数信息,并存放到pvc中。
技术总结
本发明公开一种基于容器云平台的自动化测试方法,涉及容器云平台应用技术领域;基于容器云平台,包括:步骤1:创建configmap,设定key为AutoTest Config,设置value为自动化测试脚本的所有公共参数;步骤2:创建存储池,根据存储池创建存储卷,根据测试结果数据所需的存储空间分配相应的用于数据持久化的pvc;步骤3:部署cicd插件至容器云平台;步骤4:关联GitLab代码源;步骤5:根据需求触发的流水线,步骤6:根据基础环境镜像创建deployment,根据deployment控制pod挂载configmap和pvc;步骤7:根据pod执行自动化测试脚本并将测试结果汇总合并到pvc中。总合并到pvc中。总合并到pvc中。
技术研发人员:韩志文 李兴文 李俊岭
受保护的技术使用者:浪潮软件集团有限公司
技术研发日:2023.08.03
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种可拆卸式防寒外套的制作方法 下一篇:一种移动式面差测量机构的制作方法