无侵入式测试数据恢复方法及系统技术方案

技术编号:35156588 阅读:26 留言:0更新日期:2022-10-05 10:39
本公开涉及一种无侵入式测试数据恢复方法及系统。方法包括:拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据修改语句,生成数据修改语句对应的数据回滚操作语句;建立映射关系,映射关系包含每个测试用例的用例编号,每个测试用例对应的数据修改语句,以及每个测试用例对应的数据修改语句对应的数据回滚操作语句之间的映射关系;基于指定测试用例的用例编号以及映射关系,确定对应的目标测试用例对应的数据修改语句,或者目标测试用例对应的数据修改语句对应的数据回滚操作语句;执行目标测试用例对应的数据修改语句,或者执行目标测试用例的数据修改语句对应的数据回滚操作语句以实现数据恢复。对应的数据回滚操作语句以实现数据恢复。对应的数据回滚操作语句以实现数据恢复。

【技术实现步骤摘要】
无侵入式测试数据恢复方法及系统


[0001]本公开实施例涉及计算机
,尤其涉及一种无侵入式测试数据恢复方法及系统。

技术介绍

[0002]目前在一个应用系统的测试阶段,测试人员经常需要根据测试用例中的场景构造测试数据,执行测试用例后需要恢复到初始状态或者恢复到其中部分测试用例执行完毕的中间状态重新测试,这涉及对应用系统所使用的数据库的数据恢复操作。
[0003]相关技术中,应用系统测试时提前准备SQL脚本,通常要求在执行测试前把本次测试用例所需的所有数据都预先准备成SQL脚本,当执行不同测试用例需要恢复数据时,执行测试用例对应的SQL脚本即可。但是这种方案人工维护SQL脚本成本太大,复杂场景下的脚本数据准备耗费大量的时间,且测试人员提前就要对应用系统的数据库表结构非常了解,具有一定的实施门槛,测试效率低下。
[0004]另外的相关技术中,可通过备份还原数据库操作实现数据恢复,但需要每次执行完测试用例之后及时备份整个数据库,当需要恢复数据时将对应的数据库备份文件还原。该技术方案的缺点是要占用物理存储空间,另外需要人工执行备份和还原操作,极容易遗漏备份操作或者误还原操作,导致整体的测试效率低下。

技术实现思路

[0005]为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种无侵入式测试数据恢复方法及系统。
[0006]第一方面,本公开实施例提供了一种无侵入式测试数据恢复方法,包括:拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个,并对应生成所述数据插入语句、数据删除语句和数据更新语句各自对应的数据回滚操作语句;其中,每个所述测试请求至少携带对应的测试用例的用例编号以及数据插入语句、数据删除语句和数据更新语句中的一个或多个,每个所述测试用例的用例编号用于唯一标识该测试用例且指示该测试用例的执行顺序;建立映射关系,所述映射关系包含每个所述测试用例的用例编号,每个所述测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,以及每个所述测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句之间的映射关系;基于指定测试用例的用例编号以及所述映射关系,确定对应的目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,或者所述目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句;其中,所述指定测试用例是所述多个测试用例中的任意一个;
执行所述目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,或者执行所述目标测试用例的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句以实现数据恢复。
[0007]在一个实施例中,所述生成所述数据插入语句、数据删除语句和数据更新语句各自对应的数据回滚操作语句,包括:生成所述数据插入语句对应的第一数据回滚操作语句,所述第一数据回滚操作语句是目标数据删除语句,所述目标数据删除语句所要删除的数据与所述数据插入语句所要插入的数据相同;生成所述数据删除语句对应的第二数据回滚操作语句,所述第二数据回滚操作语句是目标数据插入语句,所述目标数据插入语句所要插入的数据与所述数据删除语句所要删除的数据相同;生成所述数据更新语句对应的第三数据回滚操作语句,所述第三数据回滚操作语句是目标数据更新语句,所述目标数据更新语句所要更新的数据是所述数据更新语句执行数据更新操作之前的数据。
[0008]在一个实施例中,所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个,包括:基于代理程序拦截每个所述测试用例向所述数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个;其中,所述代理程序是基于Java语言实现且以JAR包形式引入所述应用系统中。
[0009]在一个实施例中,所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,该方法包括:修改所述数据库的第一配置文件,以开启二进制日志功能;其中,所述第一配置文件用于开启或关闭所述数据库的二进制日志功能;在所述数据库中建立第一数据表;拦截每个所述测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之后,在执行每个所述测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,将对应的每个所述测试请求对应的测试用例的用例编号插入所述第一数据表中,以在所述数据库的二进制日志中自动记录所述第一数据表的该插入操作。
[0010]在一个实施例中,所述所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,该方法包括:修改所述数据库的第二配置文件,以开启数据库全局事务ID;其中,所述第二配置文件用于开启或关闭所述数据库的全局事务ID功能;在所述数据库中建立第二数据表;所述生成所述数据插入语句、数据删除语句和数据更新语句各自对应的数据回滚操作语句,包括:解析所述二进制日志,得到可执行的至少一条SQL语句,生成每个所述SQL语句对应的数据回滚SQL语句;所述至少一条SQL语句是数据插入语句、数据删除语句和数据更新
语句中的一个或多个相关的SQL语句;所述建立映射关系,包括:解析所述二进制日志,得到记录的至少一个事务的全局事务ID,基于所述至少一个事务的全局事务ID确定每个所述全局事务ID指示的事务所提交的一个或多个SQL语句;判断每个所述全局事务ID指示的事务所提交的一个或多个SQL语句是否在所述第一数据表中存在所述插入操作,若是则将对应的全局事务ID确定为目标全局事务ID,获取所述目标全局事务ID指示的事务对应的测试用例的用例编号;建立所述目标全局事务ID指示的事务对应的测试用例的用例编号与所述目标全局事务ID之间的第一映射关系,同时建立所述目标全局事务ID与所述目标全局事务ID指示的事务所提交的一个或多个SQL语句以及该一个或多个SQL语句对应的数据回滚SQL语句之间的第二映射关系,基于所述第一映射关系和所述第二映射关系建立所述映射关系并写入所述第二数据表。
[0011]在一个实施例中,所述解析所述二进制日志之前,该方法还包括:基于预设的监听器中的从节点模拟装置从所述数据库的主节点获取所述数据库的二进制日志;所述解析所述二进制日志,得到可执行的至少一条SQL语句,生成每个所述SQL语句对应的数据回滚SQL语句,包括:所述从节点模拟装置解析所述二进制日志,得到可执行的至少一条SQL语句,生成每个所述SQL语句对应的数据回滚SQL语句。
[0012]在一个实施例中,所述建立映射关系,包括:基于所述监听器中的映射装置建立所述映射关系。
[0013]第二方面,本公开实施例提供一种无侵入式测试数据恢复系统,包括:拦截本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种无侵入式测试数据恢复方法,其特征在于,包括:拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个,并对应生成所述数据插入语句、数据删除语句和数据更新语句各自对应的数据回滚操作语句;其中,每个所述测试请求至少携带对应的测试用例的用例编号以及数据插入语句、数据删除语句和数据更新语句中的一个或多个,每个所述测试用例的用例编号用于唯一标识该测试用例且指示该测试用例的执行顺序;建立映射关系,所述映射关系包含每个所述测试用例的用例编号,每个所述测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,以及每个所述测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句之间的映射关系;基于指定测试用例的用例编号以及所述映射关系,确定对应的目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,或者所述目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句;其中,所述指定测试用例是所述多个测试用例中的任意一个;执行所述目标测试用例对应的数据插入语句、数据删除语句和数据更新语句中的一个或多个,或者执行所述目标测试用例的数据插入语句、数据删除语句和数据更新语句中的一个或多个各自对应的数据回滚操作语句以实现数据恢复。2.根据权利要求1所述的方法,其特征在于,所述生成所述数据插入语句、数据删除语句和数据更新语句各自对应的数据回滚操作语句,包括:生成所述数据插入语句对应的第一数据回滚操作语句,所述第一数据回滚操作语句是目标数据删除语句,所述目标数据删除语句所要删除的数据与所述数据插入语句所要插入的数据相同;生成所述数据删除语句对应的第二数据回滚操作语句,所述第二数据回滚操作语句是目标数据插入语句,所述目标数据插入语句所要插入的数据与所述数据删除语句所要删除的数据相同;生成所述数据更新语句对应的第三数据回滚操作语句,所述第三数据回滚操作语句是目标数据更新语句,所述目标数据更新语句所要更新的数据是所述数据更新语句执行数据更新操作之前的数据。3.根据权利要求1或2所述的方法,其特征在于,所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个,包括:基于代理程序拦截每个所述测试用例向所述数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个;其中,所述代理程序是基于Java语言实现且以JAR包形式引入所述应用系统中。4.根据权利要求1或2所述的方法,其特征在于,所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,该方法包括:修改所述数据库的第一配置文件,以开启二进制日志功能;其中,所述第一配置文件用
于开启或关闭所述数据库的二进制日志功能;在所述数据库中建立第一数据表;拦截每个所述测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之后,在执行每个所述测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,将对应的每个所述测试请求对应的测试用例的用例编号插入所述第一数据表中,以在所述数据库的二进制日志中自动记录所述第一数据表的该插入操作。5.根据权利要求4所述的方法,其特征在于,所述所述拦截应用系统在依次执行多个测试用例时向数据库发送的测试请求中的数据插入语句、数据删除语句和数据更新语句中的一个或多个之前,该方法包括:修改所述数据库的第二配置文件,以开启数据库全局事务ID;其中,所述第二配置文件用于开启或关闭所述数据库的全局事务ID功能;在所述数据库...

【专利技术属性】
技术研发人员:鲁健翔徐轲薛海伟戴小村
申请(专利权)人:湖南长银五八消费金融股份有限公司
类型:发明
国别省市:

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

1