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

PLSQL程序的测试用例的生成方法、装置及电子设备与流程

2021-11-15 18:14:00 来源:中国专利 TAG:

plsql程序的测试用例的生成方法、装置及电子设备
技术领域
1.本发明涉及数据处理领域,更具体的说,涉及一种plsql程序的测试用例的生成方法、装置及电子设备。


背景技术:

2.plsql:是一种程序语言,叫做过程化sql语言。plsql通过逻辑判断、循环等操作实现复杂的功能或计算。plsql语言的应用领域是数据库。
3.对于使用plsql语言编写的plsql程序,在上线之前需要对该程序进行测试,在满足测试要求后,才能够上线使用。在进行测试时,需要使用测试用例进行测试。目前,对plsql程序的测试用例均是人工编写,测试效率较低。


技术实现要素:

4.有鉴于此,本发明提供一种plsql程序的测试用例的生成方法、装置及电子设备,以解决plsql程序的测试用例均是人工编写,测试效率较低的问题。
5.为解决上述技术问题,本发明采用了如下技术方案:
6.一种plsql程序的测试用例的生成方法,包括:
7.获取被测试的目标plsql程序对应的初始测试数据;
8.基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口;
9.调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的中间数据;
10.基于所述中间数据以及所述初始测试数据,对预设测试用例模板进行调整,得到测试数据,以基于所述测试数据对所述目标plsql程序进行测试。
11.可选地,获取被测试的目标plsql程序对应的初始测试数据,包括:
12.获取被测试的目标plsql程序对应的excel数据;所述excel数据存储有初始测试数据;
13.所述初始测试数据包括输入表数据、输出表数据、以及被测试的目标plsql程序的程序标识。
14.可选地,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,包括:
15.读取所述excel数据,将所述excel数据转换为java数据,并通过对象实例化方式对所述java数据进行存储;
16.基于所述excel数据的表名,调用预设插件生成所述excel数据对应的目标数据库的访问接口。
17.可选地,调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试
数据对应的中间数据,包括:
18.调用所述访问接口,获取所述目标数据库的数据;
19.基于所述java数据中的目标表数据中的栏位内容,对所述数据中与所述栏位内容对应的目标栏位内容进行填充;目标表数据包括所述输入表数据;
20.将所述数据中除所述目标栏位内容之外的其他栏位内容设置为预设数值,得到所述初始测试数据对应的中间数据。
21.可选地,基于所述中间数据以及所述初始测试数据,对预设测试用例模板进行调整,得到测试数据,包括:
22.获取预设测试用例模板,所述预设测试用例模板采用java代码编写、且包括预设操作对应的代码;
23.获取所述预设操作对应的代码中所需填充的目标区域;
24.根据所述java数据和所述中间数据,确定所述目标区域所需填充的内容,并将确定的内容填充到所述目标区域,得到测试数据。
25.一种plsql程序的测试用例的生成装置,包括:
26.数据获取模块,用于获取被测试的目标plsql程序对应的初始测试数据;
27.接口生成模块,用于基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口;
28.数据处理模块,用于调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的中间数据;
29.测试数据生成模块,用于基于所述中间数据以及所述初始测试数据,对预设测试用例模板进行调整,得到测试数据,以基于所述测试数据对所述目标plsql程序进行测试。
30.可选地,所述数据获取模块具体用于:
31.获取被测试的目标plsql程序对应的excel数据;所述excel数据存储有初始测试数据;
32.所述初始测试数据包括输入表数据、输出表数据、以及被测试的目标plsql程序的程序标识。
33.可选地,所述接口生成模块具体用于:
34.读取所述excel数据,将所述excel数据转换为java数据,并通过对象实例化方式对所述java数据进行存储,基于所述excel数据的表名,调用预设插件生成所述excel数据对应的目标数据库的访问接口。
35.可选地,所述数据处理模块包括:
36.数据获取子模块,用于调用所述访问接口,获取所述目标数据库的数据;
37.数据填充子模块,用于基于所述java数据中的目标表数据中的栏位内容,对所述数据中与所述栏位内容对应的目标栏位内容进行填充;目标表数据包括所述输入表数据;
38.数据设置子模块,用于将所述数据中除所述目标栏位内容之外的其他栏位内容设置为预设数值,得到所述初始测试数据对应的中间数据。
39.一种电子设备,包括:存储器和处理器;
40.其中,所述存储器用于存储程序;
41.处理器调用程序并用于执行上述的plsql程序的测试用例的生成方法。
42.相较于现有技术,本发明具有以下有益效果:
43.本发明提供了一种plsql程序的测试用例的生成方法、装置及电子设备,获取被测试的目标plsql程序对应的初始测试数据,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的测试数据,基于所述测试数据,对预设测试用例模板进行调整,得到测试用例,以基于所述测试用例对所述目标plsql程序进行测试。即本发明中,针对被测试的目标plsql程序,能够自动生成目标plsql程序对应的测试数据,能够避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,提高测试效率。
附图说明
44.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
45.图1为本发明实施例提供的一种plsql程序的测试用例的生成方法的方法流程图;
46.图2为本发明实施例提供的另一种plsql程序的测试用例的生成方法的方法流程图;
47.图3为本发明实施例提供的再一种plsql程序的测试用例的生成方法的方法流程图;
48.图4为本发明实施例提供的又一种plsql程序的测试用例的生成方法的方法流程图;
49.图5为本发明实施例提供的一种plsql程序的测试用例的生成装置的结构示意图。
具体实施方式
50.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.对于使用plsql语言编写的plsql程序,在上线之前需要对该程序进行测试,在满足测试要求后,才能够上线使用。在进行测试时,需要使用测试用例进行测试。目前,对plsql程序的测试用例均是人工编写,测试效率较低。
52.为了解决这一技术问题,发明人经过研究发现,若是可以自动生成plsql程序的测试用例,即可以避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,测试用例作为测试中的一个部分,提高测试用例的生成效率,就能够提高测试效率。
53.具体的,本发明提供了一种plsql程序的测试用例的生成方法、装置及电子设备,本发明提供的一种plsql程序的测试用例的生成方法、装置及电子设备可用于金融领域或其他领域,例如,可用于金融领域中的测试应用场景。其他领域为除金融领域之外的任意领
域,例如,数据库领域。上述仅为示例,并不对本发明提供的一种plsql程序的测试用例的生成方法、装置及电子设备的应用领域进行限定。
54.详细来说,本发明中,获取被测试的目标plsql程序对应的初始测试数据,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的测试数据,基于所述测试数据,对预设测试用例模板进行调整,得到测试用例,以基于所述测试用例对所述目标plsql程序进行测试。即本发明中,针对被测试的目标plsql程序,能够自动生成目标plsql程序对应的测试数据,能够避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,提高测试效率。
55.在上述内容的基础上,本发明的一实施例提供了一种plsql程序的测试用例的生成方法,本实施例中,使用java语言编写目标plsql程序的测试数据,以实现对目标plsql程序的测试。进而使用java语言创建工具,并执行一种plsql程序的测试用例的生成方法。参照图1,本方法可以包括:
56.s11、获取被测试的目标plsql程序对应的初始测试数据。
57.本实施例中,可以获取被测试的目标plsql程序对应的excel数据。
58.所述excel数据存储有初始测试数据。所述初始测试数据包括输入表数据、输出表数据、被测试的目标plsql程序的程序标识。
59.本实施例中,在进行测试之前首先要准备测试用的数据,我们使用excel作为测试数据的载体,记录并管理初始测试数据,初始测试数据除了可以包括测试数据之外,同时还记录与测试数据相关的信息,例如被测程序名、程序的输入参数等等,这样做的目的是为了满足工具生成测试代码的需要。
60.其中,被测程序称为目标plsql程序,是用户选取的需要进行测试的plsql程序。plsql是一种程序语言,叫做过程化sql语言。plsql是oracle数据库对sql语言的扩展,在普通sql语句的使用上增加了编程语言的特点,所以plsql把数据操作和查询语言组织在plsql代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或计算。该语言的应用领域是数据库。
61.在实际应用中,plsql程序使用plsql语言对数据库中表数据进行操作,把输入表数据经过加工处理存放到输出表中。如对a、b数据表进行加工,得到c数据表,本实施例中,为了实现对目标plsql程序的测试,需要设定a、b、c数据表的内容。本实施例中,将a、b数据表称为输入表数据,c数据表称为输出表数据。输入表数据和输出表数据可以称为测试数据。
62.另外,本发明中,还会在excel数据中存储有被测试的目标plsql程序的程序标识,如plsql程序a,以在进行测试时,能够调用相应的plsql程序。
63.需要说明的是,本实施例中,excel数据中,可以创建多个sheet,每一sheet存储有一个目标plsql程序的测试用例。具体sheet的数量与目标plsql程序的测试用例的数量相同。
64.对于每一sheet,其存储有上述的输入表数据、输出表数据、被测试的目标plsql程序的程序标识。
65.其中,输出表数据是预期的测试结果,用来与被测程序实际运行结果来作对比,验证被测程序运行结果是否符合预期。
66.输入表数据、输出表数据、被测试的目标plsql程序的程序标识可以是设置在sheet中的不同区域。如a

d列可存储有输入表数据,e

g列可存储有输出表数据,h列可存储有被测试的目标plsql程序的程序标识。
67.除了存储上述的数据之外,sheet中还可存储目标plsql程序的输入参数等等。输入参数可以是调用该程序所需要的一些必要参数,比如日期、作业流id等参数。
68.在进行sheet中的数据存储时,需要按照设定的规则进行存储,具体规则如下:
69.1)针对一个程序的测试数据(包括输入表数据和对应的输出表的预期结果数据)全部写在一个excel中,excel命名:程序名 输出表名(中间用
“‑”
连接),例如:tf_cbs_dzx_loandtlinfo_s

cbs_dzx_loandtlinfo,如果一个程序有多个输出表,可以通过这种excel表的命名方式将针对不同输出表进行测试的数据进行区分(分为多个excel)。
70.2)每个测试用例的测试数据单独写在一个sheet中。
71.3)通常一个测试用例只针对一个数据项的一个加工逻辑进行测试,sheet命名:被测栏位名

顺序号(01开始),例如:sumloan_amt_year

01。
72.4)如果一个sheet有多个数据项都是采用简单的一对一赋值方式进行加工的,那么这些数据项的测试数据可以写在同一个sheet中,该sheet的命名方式:第一个被测数据项名

m

01。
73.s12、基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口。
74.本实施例中,参照图2,步骤s12可以包括:
75.s21、读取所述excel数据,将所述excel数据转换为java数据,并通过对象实例化方式对所述java数据进行存储。
76.具体的,使用java语言创建的工具读取excel并解析数据,转化为对应的java类,通过将对象实例化来存储excel中的数据。
77.s22、基于所述excel数据的表名,调用预设插件生成所述excel数据对应的目标数据库的访问接口。
78.具体的,该工具根据读取的表名调用mybatis框架中的生成器(generator)插件生成pojo,mapper和xml文件,将得到的pojo,mapper和xml文件转换为数据库表的基础java类。pojo目录下存放的是数据库表的java实体类,其中包含数据表字段的定义。mapper目录下存放数据库接口,也就是访问数据表的java方法,比如插入数据(insert)、删除数据(delete)。xml文件,其中定义了数据表的结构(每个数据项的名称、java数据类型以及对应的数据库数据类型),还有接口方法(insert、delete)的具体实现。
79.本实施例中,pojo,mapper和xml文件是用于指示excel数据对应的目标数据库的访问接口的文件。
80.s13、调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的中间数据。
81.具体的,参照图3,步骤s13可以包括:
82.s31、调用所述访问接口,获取所述目标数据库的数据。
83.本实施例中,通过上述的访问接口,连接该目标数据库,获取该目标数据库的表结构并创建中间数据。
84.具体的,表结构描述了一个数据表的框架,定义了一个数据表的字段名、字段类型和长度、主键等。
85.在获取到表结构之后,需要对该表结构进行数据填充,具体是对栏位内容进行填充,得到中间数据。
86.s32、基于所述java数据中的目标表数据中的栏位内容,对所述数据中与所述栏位内容对应的目标栏位内容进行填充。
87.其中,目标表数据包括所述输入表数据。
88.具体的,本实施例中,将输入表数据作为目标表数据,目标表数据中已经设定了某些栏位的栏位值,这些栏位值是在测试目标plsql程序时所需使用的,所以,需要将这些栏位值添加到上述的表结构中。
89.本实施例中,由于目标表数据已经以java数据形式保存,所以,需要将java数据中的目标表数据中的栏位内容,作为数据中与所述栏位内容对应的目标栏位的内容。
90.举例来说,目标表数据中的栏位a的值为a1,则需要将数据中与所述栏位内容对应的目标栏位a的内容设置为a1。
91.s33、将所述数据中除所述目标栏位内容之外的其他栏位内容设置为预设数值,得到所述初始测试数据对应的中间数据。
92.对于数据中没有被填充的栏位值,可以设置为预设阈值,如0。以保证每一栏位都有相应的栏位值。
93.s14、基于所述中间数据以及所述初始测试数据,对预设测试用例模板进行调整,得到测试数据,以基于所述测试数据对所述目标plsql程序进行测试。
94.本实施例中,参照图4,步骤s15可以包括:
95.s41、获取预设测试用例模板。
96.所述预设测试用例模板采用java代码编写、且包括预设操作对应的代码。
97.本实施例中,预设测试用例模板包括以下步骤对应的代码:
98.step1:执行前数据清理;
99.step2:实例化输入表、输出表;
100.step3:将输入表实例插入数据库;
101.step4:调用被测程序;
102.step5:读取数据库输出表的记录,对比结果;
103.step6:清理插入的数据;
104.step7:恢复原有的数据。
105.每个单元测试都包含step1

step6,第7步是可选的。每个单元测试都是针对目标plsql程序中的一个最小的可测试的逻辑处理单元来进行测试的,因此叫做单元测试。可以把一个程序看作是很多个小的单元拼接起来的。
106.考虑到单元测试应遵循测试用例之间独立互不干扰的原则,以及测试用例可重复执行的原则,每个单元测试用例需要同时具备在测试前数据准备之后,对历史的测试数据
清理和测试后数据清理这2个步骤。
107.另外,本实施例中的单元测试使用java测试代码来测试plsql程序,测试代码中包括测试数据准备,以及上述的调用被测程序、测试结果验证、测试数据清理等步骤。
108.s42、获取所述预设操作对应的代码中所需填充的目标区域。
109.本实施例中,对于上述step1

7中,设置有多个需要填写项,如输入表、输出表、被测程序等,将代码中这些填写项所在的区域称为目标区域,这些数据需要根据上述的初始测试数据和中间数据确定。
110.其中,输入表和/或输出表基于上述的中间数据确定,被测程序可以基于上述的初始测试数据中的被测试的目标plsql程序的程序标识确定。
111.s43、根据所述java数据和所述中间数据,确定所述目标区域所需填充的内容,并将确定的内容填充到所述目标区域,得到测试数据。
112.具体的,可以将初始测试数据对应的java数据中的被测试的目标plsql程序的程序标识,确定被测程序,然后在代码运行时,调用被测程序,以实现程序测试。
113.另外,可以根据上述的中间数据,确定输入表和/或输出表,然后输入到上述代码的相应目标区域。
114.此外,还可以设置step1中的所需进行数据清理的区域,step3中的插入哪一数据库,step6中的清理哪些数据,step7的恢复哪些数据的内容,以实现整个代码的正常运行,进而实现了plsql程序的测试。
115.本实施例中,基于excel数据和上述的预设测试用例模板,利用创建的工具,可以实现plsql程序的测试。其中,excel数据和上述的预设测试用例模板可以作为测试的准备前提。预设测试用例模板可以应用到不同的plsql程序测试中,实现了一模板多利用的效果,避免测试不同的plsql程序时,还需制作不同的模板,导致测试效率较低的问题。
116.本实施例中,获取被测试的目标plsql程序对应的初始测试数据,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的测试数据,基于所述测试数据,对预设测试用例模板进行调整,得到测试用例,以基于所述测试用例对所述目标plsql程序进行测试。即本发明中,针对被测试的目标plsql程序,能够自动生成目标plsql程序对应的测试数据,能够避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,提高测试效率。
117.可选地,在上述一种plsql程序的测试用例的生成方法的实施例的基础上,本发明的另一实施例提供了一种plsql程序的测试用例的生成装置,参照图5,可以包括:
118.数据获取模块11,用于获取被测试的目标plsql程序对应的初始测试数据;
119.接口生成模块12,用于基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口;
120.数据处理模块13,用于调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的中间数据;
121.测试数据生成模块14,用于基于所述中间数据以及所述初始测试数据,对预设测
试用例模板进行调整,得到测试数据,以基于所述测试数据对所述目标plsql程序进行测试。
122.进一步,所述数据获取模块具体用于:
123.获取被测试的目标plsql程序对应的excel数据;所述excel数据存储有初始测试数据;
124.所述初始测试数据包括输入表数据、输出表数据、以及被测试的目标plsql程序的程序标识。
125.进一步,所述接口生成模块具体用于:
126.读取所述excel数据,将所述excel数据转换为java数据,并通过对象实例化方式对所述java数据进行存储,基于所述excel数据的表名,调用预设插件生成所述excel数据对应的目标数据库的访问接口。
127.进一步,所述数据处理模块包括:
128.数据获取子模块,用于调用所述访问接口,获取所述目标数据库的数据;
129.数据填充子模块,用于基于所述java数据中的目标表数据中的栏位内容,对所述数据中与所述栏位内容对应的目标栏位内容进行填充;目标表数据包括所述输入表数据;
130.数据设置子模块,用于将所述数据中除所述目标栏位内容之外的其他栏位内容设置为预设数值,得到所述初始测试数据对应的中间数据。
131.进一步,测试数据生成模块14包括:
132.模板获取子模块,用于获取预设测试用例模板,所述预设测试用例模板采用java代码编写、且包括预设操作对应的代码;
133.区域获取子模块,用于获取所述预设操作对应的代码中所需填充的目标区域;
134.数据填充子模块,用于根据所述java数据和所述中间数据,确定所述目标区域所需填充的内容,并将确定的内容填充到所述目标区域,得到测试数据。
135.本实施例中,获取被测试的目标plsql程序对应的初始测试数据,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,调用所述访问接口,获取所述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的测试数据,基于所述测试数据,对预设测试用例模板进行调整,得到测试用例,以基于所述测试用例对所述目标plsql程序进行测试。即本发明中,针对被测试的目标plsql程序,能够自动生成目标plsql程序对应的测试数据,能够避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,提高测试效率。
136.需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
137.可选地,在上述一种plsql程序的测试用例的生成方法及装置的实施例的基础上,本发明的另一实施例提供了一种电子设备,包括:存储器和处理器;
138.其中,所述存储器用于存储程序;
139.处理器调用程序并用于执行上述的plsql程序的测试用例的生成方法。
140.本实施例中,获取被测试的目标plsql程序对应的初始测试数据,基于所述初始测试数据,生成所述初始测试数据对应的目标数据库的访问接口,调用所述访问接口,获取所
述目标数据库的数据,并基于所述初始测试数据中与所述目标数据库相关的参考数据对所述数据进行数据填充操作,得到所述初始测试数据对应的测试数据,基于所述测试数据,对预设测试用例模板进行调整,得到测试用例,以基于所述测试用例对所述目标plsql程序进行测试。即本发明中,针对被测试的目标plsql程序,能够自动生成目标plsql程序对应的测试数据,能够避免由于人工编写plsql程序的测试用例导致的测试效率较低的问题,提高测试效率。
141.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献