数据库单元测试方法、装置、设备及存储介质制造方法及图纸

技术编号:37334230 阅读:30 留言:0更新日期:2023-04-21 23:12
本公开公开了一种数据库单元测试方法、装置、设备及存储介质,涉及软件技术领域。所述方法包括:创建待测试的目标数据库;针对包含数据库操作行为的测试指令,基于所述数据库操作行为的操作类型,初始化所述目标数据库,得到所述目标数据库中的初始化数据;调用所述目标数据库的数据库模型,以通过所述数据库模型对初始化后的目标数据库执行所述数据库操作行为;从所述目标数据库中获取执行所述数据库操作行为之后的响应数据,并向所述测试指令的发起方反馈所述响应数据,以使得所述测试指令的发起方通过对比所述响应数据和所述初始化数据,判断所述数据库模型是否正确执行了所述数据库操作行为。据库操作行为。据库操作行为。

【技术实现步骤摘要】
数据库单元测试方法、装置、设备及存储介质


[0001]本公开涉及软件
,具体涉及一种数据库单元测试方法、装置、设备及存储介质。

技术介绍

[0002]单元测试指的是对由源代码实现的每一个程序单元进行测试,从而检查各个程序模块是否正确地实现了规定的功能的一种测试方法。
[0003]若单元测试中涉及包含数据库操作行为的测试指令时,通常采用模拟(mock)数据库模型(Model)的方式进行:在单元测试的代码中加入模拟数据库模型的代码,模拟数据库模型的代码用于将业务层内部的数据库模型的调用一一进行模拟。
[0004]基于上述单元测试的实现方式,如果数据库模型的调用方式发生了更改,则需要相应调整模拟数据库模型的代码,导致单元测试的代码的稳定性不够好。

技术实现思路

[0005]有鉴于此,本公开一个或者多个实施方式提供了一种数据库单元测试方法、装置、设备及存储介质,能够保障单元测试的代码的稳定性。
[0006]本公开一方面提供了一种数据库单元测试方法,所述方法包括:
[0007]创建待测试的目标数据库;
[0008]针对包含数据库操作行为的测试指令,基于所述数据库操作行为的操作类型,初始化所述目标数据库,得到所述目标数据库中的初始化数据;
[0009]调用所述目标数据库的数据库模型,以通过所述数据库模型对初始化后的目标数据库执行所述数据库操作行为;
[0010]从所述目标数据库中获取执行所述数据库操作行为之后的响应数据,并向所述测试指令的发起方反馈所述响应数据,以使得所述测试指令的发起方通过对比所述响应数据和所述初始化数据,判断所述数据库模型是否正确执行了所述数据库操作行为。
[0011]本公开另一方面还提供了一种数据库单元测试装置,所述装置包括:
[0012]数据库创建单元,用于创建待测试的目标数据库;
[0013]数据库初始化单元,用于针对包含数据库操作行为的测试指令,基于所述数据库操作行为的操作类型,初始化所述目标数据库,得到所述目标数据库中的初始化数据;
[0014]数据库模型调用单元,用于调用所述目标数据库的数据库模型,以通过所述数据库模型对初始化后的目标数据库执行所述数据库操作行为;
[0015]响应数据反馈单元,用于从所述目标数据库中获取执行所述数据库操作行为之后的响应数据,并向所述测试指令的发起方反馈所述响应数据,以使得所述测试指令的发起方通过对比所述响应数据和所述初始化数据,判断所述数据库模型是否正确执行了所述数据库操作行为。
[0016]本公开另一方面还提供了一种计算机设备,所述计算机设备包括存储器和处理
器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据库单元测试方法。
[0017]本公开另一方面还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的数据库单元测试方法。
[0018]本公开一个或者多个实施方式提供的技术方案,提供了一种数据库层的单元测试方法,针对包含数据库操作行为的测试指令,可以在创建并初始化后的目标数据库中执行数据库操作行为,根据目标数据库中执行数据库操作行为之后的响应数据与目标数据库的初始化数据之间的比对,判断数据库模型是否正确执行了数据库操作行为。
[0019]由于在上述数据库层的单元测试方法中,直接通过调用目标数据库的数据库模型的方式,对初始化后的目标数据库来执行测试指令中的数据库操作行为,而不是通过加入模拟数据库模型的代码的方式来执行测试指令中的数据库操作行为,因此,在业务层对数据库模型的调用方式发生更改时,可以直接根据更改后的调用方式调用目标数据库的数据库模型,无需进行模拟数据库模型的代码的修改,单元测试的代码不用进行调整,代码的稳定性更好。
附图说明
[0020]通过参考附图会更加清楚的理解本公开的特征和优点,附图是示意性的而不应理解为对本公开进行任何限制,在附图中:
[0021]图1示出了现有技术中包含数据库操作行为的测试指令的执行过程的步骤示意图;
[0022]图2示出了本公开一个实施方式中包含数据库操作行为的测试指令的执行过程的步骤示意图;
[0023]图3示出了本公开一个实施方式中数据库单元测试方法的步骤示意图;
[0024]图4示出了本公开一个实施方式中数据库单元测试装置的功能模块示意图;
[0025]图5示出了本公开一个实施方式中计算机设备的结构示意图。
具体实施方式
[0026]为使本公开实施方式的目的、技术方案和优点更加清楚,下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
[0027]在模型视图控制器(Model View Controller,MVC)的架构下,软件包括路由层(Router)、控制层(Controller)、业务层(Service)、模型层(Model)和数据库层(Data Base,DB)。
[0028]在现有技术中,包含数据库操作行为的测试指令的执行过程的步骤如图1所示:在处理测试指令时,单元测试的代码依次覆盖到路由层、控制层、业务层,在单元测试的代码覆盖到业务层时,通过模拟数据库模型(mock model)的代码,模拟地进行业务层对数据库模型的调用,进而测试数据库操作行为。
[0029]基于如图1所示的技术方案,在业务层的内部进行重构,业务层对数据库模型的调用方式进行调整的情况下,需要相应调整模拟数据库模型的代码,导致单元测试的代码的稳定性不够好。
[0030]鉴于此,本公开一个实施方式提供一种数据库单元测试方法,在该方法下,包含数据库操作行为的测试指令的执行过程的步骤如图2所示:在处理测试指令时,单元测试的代码依次覆盖到路由层、控制层、业务层,并进一步覆盖到模型层和数据库层,业务层可以直接真实地调用数据库的数据库模型,通过数据库模型对数据库执行待测试的数据库操作行为。
[0031]因此,基于如图2所示的技术方案,代码的覆盖率更高,且在业务层的内部进行重构,业务层对数据库模型的调用方式进行调整的情况下,无需修改单元测试的代码,代码的稳定性比较好。
[0032]下面,结合如下实施例对本公开所提供的技术方案进行进一步说明。
[0033]请参阅图3,本公开一个实施方式提供一种数据库单元测试方法,该方法可以由计算机设备执行,该方法可以包括以下多个步骤。
[0034]S31:创建待测试的目标数据库。
[0035]在本实施方式中,为一个测试进程创建一个目标数据库,该目标数据库可以用于该测试进程下的数据库单元测试。
[0036]其中,目标数据库可以在本地或者持续集成(Con本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库单元测试方法,其特征在于,所述方法包括:创建待测试的目标数据库;针对包含数据库操作行为的测试指令,基于所述数据库操作行为的操作类型,初始化所述目标数据库,得到所述目标数据库中的初始化数据;调用所述目标数据库的数据库模型,以通过所述数据库模型对初始化后的目标数据库执行所述数据库操作行为;从所述目标数据库中获取执行所述数据库操作行为之后的响应数据,并向所述测试指令的发起方反馈所述响应数据,以使得所述测试指令的发起方通过对比所述响应数据和所述初始化数据,判断所述数据库模型是否正确执行了所述数据库操作行为。2.根据权利要求1所述的方法,其特征在于,若当前存在多个测试进程,针对每个测试进程分别创建对应的目标数据库,以使得各个所述测试进程针对各自的目标数据库执行待测试的数据库操作行为。3.根据权利要求1所述的方法,其特征在于,初始化所述目标数据库包括:若所述操作类型表征向所述目标数据库中写入数据,将所述目标数据库保持为创建后的原始状态;若所述操作类型表征在所述目标数据库中删除数据,或者表征在所述目标数据库中修改数据,或者表征在所述目标数据库中查询数据,向所述目标数据库中写入测试数据。4.根据权利要求1所述的方法,其特征在于,调用所述目标数据库的数据库模型包括:所述测试指令在业务层中进行处理时,通过所述业务层中限定的模型调用方式,调用模型层中的所述目标数据库的数据库模型。5.根据权利要求1至4中任一所述的方法,其特征在于,在初始化所述目标数据库时,所述方法还包括:定义待写入所述目标数据库中的测试数据,和/或扩展已定义的测试数据,并基于所述目标数据库的数据库模型中限定的数据...

【专利技术属性】
技术研发人员:金朝麟
申请(专利权)人:北京有竹居网络技术有限公司
类型:发明
国别省市:

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

1