一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种存储过程的测试方法及装置与流程

2021-10-24 07:07:00 来源:中国专利 TAG:存储过程 装置 计算机 测试 方法


1.本发明涉及计算机技术领域,具体涉及一种存储过程的测试方法及装置。


背景技术:

2.目前,在程序的开发过程中,开发人员需要对所开发的程序进行单元测试,以检测功能代码是否符合预期。
3.现有技术中,对存储过程的测试,需要使用存储过程的单元测试案例。在编写存储过程单元测试案例时,需要考虑被测存储过程内部调用的其他多个存储过程,或者多层调用其他存储过程,分析程序逻辑和准备案例数据,非常耗时且容易出错,导致存储过程的测试效率低。


技术实现要素:

4.针对现有技术中的问题,本发明实施例提供一种存储过程的测试方法及装置,能够至少部分地解决现有技术中存在的问题。
5.一方面,本发明提出一种存储过程的测试方法,包括:
6.运行存储过程的单元测试案例;
7.若判断获知被调用存储过程存在模拟内容,则根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
8.另一方面,本发明提供一种存储过程的测试装置,包括:
9.运行模块,用于运行存储过程的单元测试案例;
10.判断模块,用于在判断获知被调用存储过程存在模拟内容之后,根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
11.再一方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述存储过程的测试方法的步骤。
12.又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述存储过程的测试方法的步骤。
13.本发明实施例提供的存储过程的测试方法及装置,能够运行存储过程的单元测试案例,在判断获知被调用存储过程存在模拟内容之后,根据单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的开始行数,从存储调用映射表中查询获得被调用存储过程对应的返回值,实现了被调用存储过程的mock,提高了测试效率。
附图说明
14.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
15.图1是本发明一实施例提供的存储过程的测试方法的流程示意图。
16.图2是本发明一实施例提供的存储过程的测试装置的结构示意图。
17.图3是本发明另一实施例提供的存储过程的测试装置的结构示意图。
18.图4是本发明又一实施例提供的存储过程的测试装置的结构示意图。
19.图5是本发明再一实施例提供的存储过程的测试装置的结构示意图。
20.图6是本发明还一实施例提供的存储过程的测试装置的结构示意图。
21.图7是本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
22.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。
23.为了便于理解本技术提供的技术方案,下面先对本技术技术方案的相关内容进行说明。为了检测编写的存储过程是否能完成设计的预期效果,就需要对存储过程进行测试。通常会通过存储过程的单元测试案例,对存储过程进行测试。对于存在调用其他存储过程或者多层调用其他存储过程的存储过程,为了避免单元测试案例编写时,调用其他存储过程或者多层调用其他存储过程的复杂逻辑编写和时间消耗,在测试时可以对调用其他存储过程或者多层调用其他存储过程进行模拟(mock),一方面能够提高测试效率,另一方面简化了单元测试案例的编写,提高了单元测试案例编写的效率。
24.mock测试是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。本发明实施例提供的存储过程的测试方法采用的就是一种mock测试方法,对被调用存储过程进行mock,直接获得被调用存储过程对应的返回值。
25.图1是本发明一实施例提供的存储过程的测试方法的流程示意图,如图1所示,本发明实施例提供的存储过程的测试方法,包括:
26.s101、运行存储过程的单元测试案例;
27.具体地,在需要对存储过程进行测试时,开发人员可以在计算机上启动存储过程的单元测试案例,所述计算机会运行所述存储过程的单元测试案例。其中,所述单元测试案例是预先编写的,用于对所述存储过程进行测试。本发明实施例提供的存储过程的测试方法的执行主体包括但不限于计算机。
28.s102、若判断获知被调用存储过程存在模拟内容,则根据单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的行数,从存储调用映射表中查询获得被调用存储过程对应的返回值;其中,所述存储调用映射表是预设
的。
29.具体地,所述计算机在运行所述单元测试案例时,在执行到被调用存储过程的代码开始位置时,会判断所述被调用存储过程是否存在模拟内容,如果所述计算机根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询到所述被调用存储过程对应的返回值,那么所述被调用存储过程存在模拟内容,所述计算机会将所述被调用存储过程对应的返回值作为所述被调用存储过程的执行结果。模拟内容是mock后的被调用存储过程,是在编写单元测试案例时编写的,替代了原有被调用存储过程,实现根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询到所述被调用存储过程对应的返回值的过程。
30.其中,所述存储调用映射表是预设的,会存储单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的开始行数和被调用存储过程对应的返回值,通过单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称和被调用存储过程的开始行数可以查询对应的被调用存储过程对应的返回值。单元测试案例的名称与单元测试案例一一对应;存储过程对应的程序名称与存储过程一一对应;被调用存储过程对应的程序名称与被调用存储过程一一对应;被调用存储过程的开始行数可以通过被调用存储过程在单元测试案例中执行的代码开始位置确定。被调用存储过程对应的返回值根据实际需要进行设置,本发明实施例不做限定。
31.本发明实施例提供的存储过程的测试方法,能够运行存储过程的单元测试案例,在判断获知被调用存储过程存在模拟内容之后,根据单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的开始行数,从存储调用映射表中查询获得被调用存储过程对应的返回值,实现了被调用存储过程的mock,提高了测试效率。此外,由于单元测试案例在编写时,无需编写被调用存储过程的执行逻辑,提高了单元测试案例的编写效率。
32.在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试方法还包括:
33.若判断获知所述被调用存储过程不存在模拟内容,则提示调用失败。
34.具体地,如果所述计算机根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中没有查询到所述被调用存储过程对应的返回值,那么所述被调用存储过程不存在模拟内容,所述计算机可以提示调用失败,表明没有能够获得被调用存储过程对应的返回值。
35.在上述各实施例的基础上,进一步地,所述单元测试案例调用多个被调用存储过程。
36.具体地,在通过单元测试案例对所述存储过程进行测试时,对于存在调用多个其他存储过程的存储过程,所述单元测试案例需要多个被调用存储过程,实现对所述存储过程的完整测试。在所述单元测试案例中,会预先编写所述多个被调用存储过程中每个被调用存储过程对应的模拟内容。
37.在上述各实施例的基础上,进一步地,本发明实施例提供的测试方法还包括:
38.将模拟后的被调用存储过程编译到数据库。
39.具体地,所述计算机在获得所述被调用存储过程对应的返回值之后,会将mock后的被调用存储过程编译到数据库。
40.例如,所述计算机通过调用sqlplus工具,将mock后的被调用存储过程编译到数据库。
41.在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试方法还包括:
42.将案例数据导入到数据库中,对所述存储过程进行测试。
43.具体地,在通过所述单元测试案例对所述存储过程进行测试的过程中,可以将案例数据导入到数据库中,然后调用所述存储过程对所述案例数据进行处理,实现对所述存储过程的测试。其中,所述案例数据是预设的,可以在编写单元测试案例时进行配置;所述案例数据根据实际需要件设置,本发明实施例不做限定。
44.在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试方法还包括:
45.在执行完成所述单元测试案例之后,返回测试结果。
46.具体地,所述计算机在执行完成所述单元测试案例之后,会进行断言,即返回测试结果,以便于开发人员获知所述存储过程是否通过测试。
47.下面以一个具体的实施例,来说明本发明实施例提供的存储过程的测试方法的具体实现过程。
48.开发人员需要对存储过程a进行测试,使用单元测试案例ut_a对存储过程a进行测试。存储过程a会调用存储过程b,即存储过程b是被调用存储过程。
49.开发人员在编写单元测试案例ut_a时,会编写存储过程b的模拟内容,实现对存储过程b的mock。开发人员还会在存储调用映射表中配置存储过程b对应的返回值,并将存储过程b对应的返回值,与单元测试案例ut_a的名称、存储过程a对应的程序名称、存储过程b对应的程序名称、存储过程b的开始行数对应。
50.开发人员在计算机上启动单元测试案例ut_a,计算机会运行单元测试案例ut_a。
51.在执行到存储过程b的代码开始位置时,计算机根据单元测试案例ut_a的名称、存储过程a对应的程序名称、存储过程b对应的程序名称、存储过程b的开始行数,从存储调用映射表查询存储过程b对应的返回值,如果查询到存储过程b对应的返回值,说明存储过程b存在模拟内容。
52.计算机将存储过程b对应的返回值作为存储过程b的执行结果,继续执行单元测试案例ut_a。计算机会调用sqlplus工具,将存储过程b对应的模拟内容,即mock后的存储过程b编译到数据库。
53.计算机将单元测试案例ut_a的案例数据导入到数据库中,并调用存储过程a处理案例数据,实现对存储过程a的测试。
54.计算机在单元测试案例ut_a执行完成之后,进行断言,将单元测试案例ut_a的测试结果展示出来,供开发人员查看。
55.本发明实施例提供的存储过程的测试方法,通过在存储调用映射表中配置被调用存储过程的映射关系,并将被调用存储过程对应的模拟内容编写到单元测试案例中,通过单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用
存储过程的开始行数,从存储调用映射表中查询获得被调用存储过程对应的返回值,并将被调用存储过程对应的模拟内容编译到数据库,实现了对被调用存储过程的mock,降低了存储过程的单元测试案例的编写成本,提高了测试效率。而且对存量存储过程无影响,使用一台数据库即可实现存储过程的测试,降低维护成本。
56.图2是本发明一实施例提供的存储过程的测试装置的结构示意图,如图2所示,本发明实施例提供的存储过程的测试装置包括运行模块201和判断模块202,其中:
57.运行模块201用于运行存储过程的单元测试案例;判断模块202用于在判断获知被调用存储过程存在模拟内容之后,根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
58.具体地,在需要对存储过程进行测试时,开发人员可以在存储过程的测试装置上启动存储过程的单元测试案例运行模块201会运行所述存储过程的单元测试案例。其中,所述单元测试案例是预先编写的,用于对所述存储过程进行测试。
59.在运行所述单元测试案例时,在执行到被调用存储过程的代码开始位置时,判断模块202会判断所述被调用存储过程是否存在模拟内容,如果判断模块202根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询到所述被调用存储过程对应的返回值,那么所述被调用存储过程存在模拟内容,判断模块202会将所述被调用存储过程对应的返回值作为所述被调用存储过程的执行结果。模拟内容是mock后的被调用存储过程,是在编写单元测试案例时编写的,替代了原有被调用存储过程,实现根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询到所述被调用存储过程对应的返回值的过程。
60.其中,所述存储调用映射表是预设的,会存储单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的开始行数和被调用存储过程对应的返回值,通过单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称和被调用存储过程的开始行数可以查询对应的被调用存储过程对应的返回值。单元测试案例的名称与单元测试案例一一对应;存储过程对应的程序名称与存储过程一一对应;被调用存储过程对应的程序名称与被调用存储过程一一对应;被调用存储过程的开始行数可以通过被调用存储过程在单元测试案例中执行的代码开始位置确定。被调用存储过程对应的返回值根据实际需要进行设置,本发明实施例不做限定。
61.本发明实施例提供的存储过程的测试装置,能够运行存储过程的单元测试案例,在判断获知被调用存储过程存在模拟内容之后,根据单元测试案例的名称、存储过程对应的程序名称、被调用存储过程对应的程序名称、被调用存储过程的开始行数,从存储调用映射表中查询获得被调用存储过程对应的返回值,实现了被调用存储过程的mock,提高了测试效率。此外,由于单元测试案例在编写时,无需编写被调用存储过程的执行逻辑,提高了单元测试案例的编写效率。
62.图3是本发明另一实施例提供的存储过程的测试装置的结构示意图,如图3所示,在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试装置还包括提
示模块203,其中:
63.提示模块203用于在判断获知所述被调用存储过程不存在模拟内容之后,提示调用失败。
64.具体地,如果提示模块203根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中没有查询到所述被调用存储过程对应的返回值,那么所述被调用存储过程不存在模拟内容,提示模块203可以提示调用失败,表明没有能够获得被调用存储过程对应的返回值。
65.在上述各实施例的基础上,进一步地,所述单元测试案例调用多个被调用存储过程。
66.具体地,在通过单元测试案例对所述存储过程进行测试时,对于存在调用多个其他存储过程的存储过程,所述单元测试案例需要多个被调用存储过程,实现对所述存储过程的完整测试。在所述单元测试案例中,会预先编写所述多个被调用存储过程中每个被调用存储过程对应的模拟内容。
67.图4是本发明又一实施例提供的存储过程的测试装置的结构示意图,如图4所示,在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试方法还包括编译模块204,其中:
68.编译模块204用于将模拟后的被调用存储过程编译到数据库。
69.具体地,编译模块204在获得所述被调用存储过程对应的返回值之后,会将mock后的被调用存储过程编译到数据库。
70.图5是本发明再一实施例提供的存储过程的测试装置的结构示意图,如图5所示,在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试装置还包括导入模块205,其中:
71.导入模块205用于将案例数据导入到数据库中,对所述存储过程进行测试。
72.具体地,在通过所述单元测试案例对所述存储过程进行测试的过程中,可导入模块205以将案例数据导入到数据库中,然后调用所述存储过程对所述案例数据进行处理,实现对所述存储过程的测试。其中,所述案例数据是预设的,可以在编写单元测试案例时进行配置;所述案例数据根据实际需要件设置,本发明实施例不做限定。
73.图6是本发明还一实施例提供的存储过程的测试装置的结构示意图,如图6所示,在上述各实施例的基础上,进一步地,本发明实施例提供的存储过程的测试装置还包括返回模块206,其中:
74.返回模块206在执行完成所述单元测试案例之后,返回测试结果。
75.具体地,返回模块206在执行完成所述单元测试案例之后,会进行断言,即返回测试结果,以便于开发人员获知所述存储过程是否通过测试。
76.本发明实施例提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
77.需要说明的是,本发明实施例提供的存储过程的测试方法及装置可用于金融领域,也可用于除金融领域之外的任意技术领域,本发明实施例对存储过程的测试方法及装置的应用领域不做限定。
78.图7是本发明一实施例提供的电子设备的实体结构示意图,如图7所示,该电子设
备可以包括:处理器(processor)701、通信接口(communications interface)702、存储器(memory)703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。处理器701可以调用存储器703中的逻辑指令,以执行如下方法:运行存储过程的单元测试案例;若判断获知被调用存储过程存在模拟内容,则根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
79.此外,上述的存储器703中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
80.本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:运行存储过程的单元测试案例;若判断获知被调用存储过程存在模拟内容,则根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
81.本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:运行存储过程的单元测试案例;若判断获知被调用存储过程存在模拟内容,则根据所述单元测试案例的名称、所述存储过程对应的程序名称、所述被调用存储过程对应的程序名称、所述被调用存储过程的开始行数,从存储调用映射表中查询获得所述被调用存储过程对应的返回值;其中,所述存储调用映射表是预设的。
82.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
83.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
84.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
85.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
86.在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
87.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜