基于容器数据非持久化特质的测试数据回滚方法及系统技术方案

技术编号:39832248 阅读:7 留言:0更新日期:2023-12-29 16:15
本发明专利技术公开了一种基于容器数据非持久化特质的测试数据回滚方法及系统,首先预埋自动化测试数据,制作

【技术实现步骤摘要】
基于容器数据非持久化特质的测试数据回滚方法及系统


[0001]本专利技术属于容器技术及自动化测试
,涉及一种自动化测试数据快速回滚的方法及系统,具体涉及一种基于容器数据非持久化特质的自动化测试数据快速回滚的方法及系统,是一种利用容器数据非持久化特质,实现自动化测试数据无感回滚,将自动化测试数据全部固化,降低自动化脚本逻辑,缩短自动化测试数据准备难度,缩短自动化测试建设周期


技术介绍

[0002]容器
(container)
技术是一种更加轻量级的操作系统虚拟化技术,将应用程序及其运行依赖环境打包封装到标准化

强移植的镜像中,通过容器引擎提供进程隔离

资源可限制的运行环境,实现应用与
OS
平台及底层硬件的解耦,一次打包,随处运行

[0003]容器基于镜像运行,可部署在物理机或虚拟机上,通过容器引擎与容器编排调度平台实现容器化应用的生命周期管理

具有以下优点:
[0004]1)
启动时间是秒级,远快于传统的虚拟机,可以大大节省应用开发

测试和部署时间;
[0005]2)
进程级别的虚拟化,不需要虚拟整个操作系统,并且使用的是宿主机的内核,所以,其可以充分以及高效地利用系统资源,基本不消耗额外的系统资源;
[0006]3)
可移植性强,一个容器应用所需要的依赖都在容器中,即一次构建,随处运行;
[0007]4)
>弹性伸缩,当业务需求量大时,会自动增加当前所需要的资源去提供服务;当业务需求量小时,会自动相应减少资源,以达到资源的合理利用

[0008]自动化测试从最早期的录制回放技术开始,逐步发展成
DOM
对象识别与分层自动化,以及基于
POM(Page Object Model)
来提高用例复用,后期有发展出来很多开源的测试框架或者工具,例如
robot framework、jmeter、unitest、pytest
等等,在这个发展趋势下,脚本的识别准确率,脚本编写难度,脚本可维护性有了较大进步,自动化脚本建设成本越来越低

[0009]但随着自动化测试覆盖面的扩大,自动化测试数据准备与管理成为自动化测试发展的瓶颈,自动化执行前,需要额外补充测试数据,增加测试等待时间,降低跑测及时性,此外,自动化测试数据容易受到人为干扰,经常需要维护数据状态,提高维护成本

[0010]目前自动化测试数据管理需要人工干预,每次都要进行数据预埋,有些数据预埋受环境影响,预埋时间过长,且无法保障测试数据长期有效,影响自动化测试效果,主要有以下情况:
[0011]①
消耗性数据问题:有些数据在自动化执行之后数据状态会发生改变,比如账号销户功能,使用的账号在执行脚本后,账号状态会变成销户状态,无法支持脚本二次执行,因此在二次跑测时,需要提前准备新的测试账号并做数据置换,增加人力成本

[0012]②
半消耗性数据问题:有些数据在自动化执行之后数据状态不会发生变化,但有些属性会减少,比如柜员尾箱下凭证,开户时,需要消耗尾箱下凭证数量,执行一次之后,可
能数量依然能支持二次跑测,但无法持续保障数量供多次跑测,需要定时检查,且也需要提前准备新的测试账号并做数据置换;
[0013]③
数据污染问题:有些数据在一段时间后,可其他测试人员使用而导致数据状态或者属性发生变化,无法支撑自动化原始测试数据需求,需要监控数据并做数据置换;
[0014]针对以上技术问题,目前解决方案如下:
[0015]1.
在脚本上增加逻辑,通过提前判断数据有效性,如无效,通过
sql
查询新数据来执行;
[0016]2.
每次定时跑数据,脚本中均不固定数据,执行时使用的数据均利用
sql
实时查询,降低数据维护;
[0017]3.
数据回滚,利用数据库备份,手动通过
Navicat
方式或者脚本方式恢复备份;
[0018]其中
1、2
增加了脚本维护难度,脚本中很多逻辑是为了管理测试数据本身的有效性,而不是测试业务本身,并且也无法阻止测试数据污染;
[0019]其中3,需要每次手动进行恢复备份,增加人力成本,利用脚本方式进行恢复备份,恢复备份的时间也至少为分钟级别,数据越大,恢复时间越长


技术实现思路

[0020]为了解决自动化测试中消耗性数据问题

半消耗性数据问题和数据污染问题,本专利技术提供了一种,本专利技术提供了一种基于容器数据非持久化特质的自动化测试数据快速回滚的方法及系统,利用容器数据库的非持久化特质,制作原始数据镜像,并且根据数据镜像版本,实现数据库重启时秒级无感数据回滚,可防止数据污染,同时能解决消耗性数据与半消耗性数据问题,利用固定数据在不同代码上的回归执行应该得到固定测试结果的原则,最大限度减低脚本逻辑复杂程度,加快自动化建设速度

[0021]本专利技术的方法采用的技术方案是:一种基于容器数据非持久化特质的测试数据回滚方法,包括以下步骤:
[0022]步骤1:预埋自动化测试数据;
[0023]步骤2:制作
mysql
数据库镜像;
[0024]步骤3:将镜像部署至
k8s
上;
[0025]步骤4:启动自动化测试,完成回归测试任务;
[0026]步骤5:重启容器数据库,数据回滚完成,等待下一次自动化测试执行

[0027]作为优选,步骤1的具体实现包括以下子步骤:
[0028]步骤
1.1
:测试环境连接原始数据库
DB1

[0029]步骤
1.2
:新增测试数据或者修改测试数据;
[0030]步骤
1.3
:判断原始数据库是否在容器数据库上;
[0031]若是,则结束本流程;
[0032]若否,则利用
Navicat
制作数据库备份
DB1_backup
,通过
Navicat
快速还原至容器数据库中

[0033]作为优选,步骤2的具体实现包括以下子步骤:
[0034]步骤
2.1
:执行命令
docker ps
,用于查看所有在运行的容器信息,获取需要构建镜像的
CONTAINER ID
值,此值为该容器的容器
ID

[0035]步骤
2.2
:执行命令
docker pause
容器
ID
,用于暂停容器中所有的进程;
[00本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于容器数据非持久化特质的测试数据回滚方法,其特征在于,包括以下步骤:步骤1:预埋自动化测试数据;步骤2:制作
mysql
数据库镜像;步骤3:将镜像部署至
k8s
上;步骤4:启动自动化测试,完成回归测试任务;步骤5:重启容器数据库,数据回滚完成,等待下一次自动化测试执行
。2.
根据权利要求1所述的基于容器数据非持久化特质的测试数据回滚方法,其特征在于,步骤1的具体实现包括以下子步骤:步骤
1.1
:测试环境连接原始数据库
DB1
;步骤
1.2
:新增测试数据或者修改测试数据;步骤
1.3
:判断原始数据库是否在容器数据库上;若是,则结束本流程;若否,则利用
Navicat
制作数据库备份
DB1_backup
,通过
Navicat
快速还原至容器数据库中
。3.
根据权利要求1所述的基于容器数据非持久化特质的测试数据回滚方法,其特征在于,步骤2的具体实现包括以下子步骤:步骤
2.1
:执行命令
docker ps
,用于查看所有在运行的容器信息,获取需要构建镜像的
CONTAINER ID
值,此值为该容器的容器
ID
;步骤
2.2
:执行命令
docker pause
容器
ID
,用于暂停容器中所有的进程;步骤
2.3
:执行命令
docker commit
容器
ID mysql:test
,用于提交容器镜像,镜像名称取名为
mysql:test
;步骤
2.4
:执行命令
docker images mysql:test
,用于查看镜像是否构建成功;若是,则步骤完成;若否,则继续等待
。4.
根据权利要求1所述的基于容器数据非持久化特质的测试数据回滚方法,其特征在于,步骤3的具体实现包括以下子步骤:步骤
3.1
:将应用部署至
el

mysql
空间下;步骤
3.2
:编写
el

mysql

mysql.yaml

volumeMounts
参数中不挂载文件,不做数据持久化处理,
nfs

server
下设置连接
ip

10.*.*.1
;步骤
3.3
:执行命令
kubectl create

f el

mysql

mysql.yaml
,用于创建
mysql
的服务;步骤
3.4
:执行命令
kubectl get pods

n el

mysql

o wide
,用于查看
pod
;步骤
3.5
:将测试环境切换到容器数据库下,通过
10.*.*.1
地址来连接,测试连通性
。5.
根据权利要求1‑4任一项所述的基于容器数据非持久化特质的测试数据回滚方法,其特征在于,步骤5的具体实现包括以下子步骤:步骤
5.1
:制作重启容器数据库脚本,其中带有命令
kubectl rollout restart deployment el

mysql
,该命令可重启容器数据库;步骤
5.2
:将步骤
5.1
中的脚本添加流水线中,在步骤4之后调起,将数据库还原至镜像初始状态
。6.

【专利技术属性】
技术研发人员:陈韬田骏章文
申请(专利权)人:武汉众邦银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1