CN109697161A - 一种存储过程的测试方法、存储介质和数据库服务器 - Google Patents
一种存储过程的测试方法、存储介质和数据库服务器 Download PDFInfo
- Publication number
- CN109697161A CN109697161A CN201711001281.2A CN201711001281A CN109697161A CN 109697161 A CN109697161 A CN 109697161A CN 201711001281 A CN201711001281 A CN 201711001281A CN 109697161 A CN109697161 A CN 109697161A
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- field
- operated
- storing process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存储过程的测试方法、存储介质和数据库服务器,该方法包括:建立待测存储过程的入口参数与待测存储过程对应的待操作表的字段之间的对应关系;生成测试用例模板;读取预设测试用例数据,并将预设测试用例数据写入到测试用例模板中,生成测试用例文件;根据测试用例文件对待测存储过程进行测试。本发明通过对应关系和数据字典的内容,自动生成测试用例模板,并自动根据预设测试用例数据进行测试,输出待测存储过程的测试结果,整个过程完全自动化,不需要大量的人力来手工编写测试用例,提升了存储过程的测试效率,解决了现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题。
Description
技术领域
本发明涉及数据库测试领域,特别是涉及一种存储过程的测试方法、存储介质和数据库服务器。
背景技术
在数据库中完成某功能的一组业务操作逻辑,常常会用一个存储过程来实现。为了检测编写的存储过程是否能完成设计的预期效果,就需要对存储过程进行测试。
现有的存储过程的测试方法,往往是手工编写测试用例,并人工查看结果,判断结果是否正确。现有技术中的一些存储过程已经实现了自动化测试,但在测试过程中,仍然需要手工编写测试用例,每次写一个新的存储过程都需要编写新的测试用例。这种手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的。
发明内容
本发明提供一种存储过程的测试方法、存储介质和数据库服务器,用以解决现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题。
为解决上述技术问题,一方面,本发明提供一种存储过程的测试方法,包括:建立待测存储过程的入口参数与所述待测存储过程对应的待操作表的字段之间的对应关系;根据数据字典和所述对应关系,生成测试用例模板;读取预设测试用例数据,并将所述预设测试用例数据写入到所述测试用例模板中,生成测试用例文件;根据所述测试用例文件对所述待测存储过程进行测试。
进一步,所述对应关系包括:所述入口参数的第一参数类型对应预设操作的编号,其中,所述预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除;所述入口参数的第二参数类型对应所述待操作表的主键字段;所述入口参数的第三参数类型对应所述待操作表的非主键字段。
进一步,根据数据字典和所述对应关系,生成测试用例模板,包括:根据数据字典和所述对应关系生成以预设内容为字段的测试用例模板,其中,所述预设内容至少包括:所述待操作表的名称、所述待测存储过程的入口参数和出口参数、所述待操作表的非主键字段、所述待操作表的主键字段以及所述待操作表的增删改属性。
进一步,将所述预设测试用例数据写入到所述测试用例模板中,包括:在所述第一参数类型对应的字段中写入所述预设操作的编号;在所述第二参数类型对应的字段中写入第一字段内容,其中,所述第一字段内容包括:所述待操作表主键字段中已存在的内容或所述待操作表主键字段中与所述已存在的内容不同的内容;在所述第三参数类型对应的字段中写入第二字段内容,其中,所述第二字段内容包括:根据所述待操作表非主键字段中已存在的内容或所述待操作表非主键字段中随机生成的字段内容;在所述出参对应的字段中写入预期出参结果;在所述待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,所述第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定;在所述待操作表的主键字段对应的字段中写入第二预设处理结果,其中,所述第二预设处理结果的内容为空或与所述第二参数类型的内容相同;在所述待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,所述第三预设处理结果的内容为空或与所述第三参数类型的内容相同。
进一步,根据所述测试用例文件对所述待测存储过程进行测试之后,还包括:检测测试用例文件中对应的每个测试用例是否通过测试;在所述测试用例文件中所有测试用例均通过测试的情况下,确定所述待测存储过程的测试结果为通过测试。
另一方面,本发明还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:建立待测存储过程的入口参数与所述待测存储过程对应的待操作表的字段之间的对应关系;根据数据字典和所述对应关系,生成测试用例模板;读取预设测试用例数据,并将所述预设测试用例数据写入到所述测试用例模板中,生成测试用例文件;根据所述测试用例文件对所述待测存储过程进行测试。
进一步,所述对应关系包括:所述入口参数的第一参数类型对应预设操作的编号,其中,所述预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除;所述入口参数的第二参数类型对应所述待操作表的主键字段;所述入口参数的第三参数类型对应所述待操作表的非主键字段。
进一步,所述计算机程序在被所述处理器执行根据数据字典和所述对应关系,生成测试用例模板的步骤时,具体实现如下步骤:根据数据字典和所述对应关系生成以预设内容为字段的测试用例模板,其中,所述预设内容至少包括:所述待操作表的名称、所述待测存储过程的入口参数和出口参数、所述待操作表的非主键字段、所述待操作表的主键字段以及所述待操作表的增删改属性。
进一步,所述计算机程序在被所述处理器执行将所述预设测试用例数据写入到所述测试用例模板中的步骤时,具体实现如下步骤:在所述第一参数类型对应的字段中写入所述预设操作的编号;在所述第二参数类型对应的字段中写入第一字段内容,其中,所述第一字段内容包括:所述待操作表主键字段中已存在的内容或所述待操作表主键字段中与所述已存在的内容不同的内容;在所述第三参数类型对应的字段中写入第二字段内容,其中,所述第二字段内容包括:根据所述待操作表非主键字段中已存在的内容或所述待操作表非主键字段中随机生成的字段内容;在所述出参对应的字段中写入预期出参结果;在所述待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,所述第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定;在所述待操作表的主键字段对应的字段中写入第二预设处理结果,其中,所述第二预设处理结果的内容为空或与所述第二参数类型的内容相同;在所述待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,所述第三预设处理结果的内容为空或与所述第三参数类型的内容相同。
进一步,所述计算机程序在被所述处理器执行根据所述测试用例文件对所述待测存储过程进行测试的步骤之后,还被所述处理器执行以下步骤:检测测试用例文件中对应的每个测试用例是否通过测试;在所述测试用例文件中所有测试用例均通过测试的情况下,确定所述待测存储过程的测试结果为通过测试。
另一方面,本发明还提供一种数据库服务器,其特征在于,包括上述的存储介质。
本发明基于待测存储过程的入口参数和待操作表的对应关系、以及数据字典的内容,自动生成测试用例模板,并自动根据预设测试用例数据进行测试,输出待测存储过程的测试结果,整个过程完全自动化,不再需要大量的人力来手工编写测试用例,提升了存储过程的测试效率,解决了现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题。
附图说明
图1是本发明第一实施例中存储过程的测试方法流程图;
图2是本发明第三实施例中测试用例的填写过程示意图;
图3是本发明第三实施例中另一测试用例的填写过程示意图;
图4是本发明第三实施例中又一测试用例的填写过程示意图;
图5是本发明第三实施例中测试用例的执行步骤。
具体实施方式
为了解决现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题,本发明提供了一种存储过程的测试方法、存储介质和数据库服务器,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明的第一实施例提供了一种存储过程的测试方法,其流程图如图1所示,具体包括步骤S101至S104:
S101,建立待测存储过程的入口参数与待测存储过程对应的待操作表的字段之间的对应关系;
S102,根据数据字典和对应关系,生成测试用例模板;
S103,读取预设测试用例数据,并将预设测试用例数据写入到测试用例模板中,生成测试用例文件;
S104,根据测试用例文件对待测存储过程进行测试。
在对新的存储过程进行测试之前,首先需要建立待测存储过程的入口参数(以下简称入参)与待测存储过程对应的待操作表的字段之间的对应关系,以方便测试后根据待操作表的实际结果判断待测存储过程的测试结果。应当了解的,待测存储过程的入参为对待操作表的某个字段进行增加、修改或删除操作。因此,将待测存储过程的入参分为第一参数类型、第二参数类型和第三参数类型,进而,待测存储过程的入参和待操作表的字段之间的对应关系为:第一参数类型对应预设操作的编号,其中,预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除,其对应的预设操作的编号分别为1、2和3;第二参数类型对应待操作表的主键字段;第三参数类型对应待操作表的非主键字段。在实际使用时,一个存储过程可能对应操作了多个待操作表,一个待操作表也可能被多个存储过程操作。
待测存储过程的入参和待操作表的字段之间的对应关系建立后,首先以待测存储过程的名称为条件查询数据库的数据字典,可获取到至少包括预置数据表的名称、待测存储过程的入参的名称和出口参数(以下简称出参)的名称、入参的数据类型和出参的数据类型等内容;其次以待操作表的名称为条件查询数据库的数据字典,可获取到至少包括待操作表的主键字段、非主键字段以及各字段的数据类型等内容;最后,根据预设内容和待测存储过程的入参和待操作表的字段之间的对应关系,自动生成测试用例模板,其中,预设内容至少包括待操作表的名称、待测存储过程的入口参数和出口参数、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性。应当了解的是,预置数据表至少包括待操作表,还可以根据待测存储过程的实际情况,获取其他与待操作表或待测存储过程相关的其他表;并且在查询数据字典以获取预设内容时,尽可能的多的获取待测存储过程的各项参数和待操作表的各字段内容,以使测试更加细致,测试结果的准确率更高。优选地,测试用例模板的输出格式可以为Excel表格,以待测存储过程的入参、出参、待操作表的各个字段为测试用例模板的字段(即表格的每一行的属性,在表格的第一列顺序写出),表格的每一列在写入测试用例数据后为一个测试用例。
生成测试用例模板后,在测试用例模板中自动写入预设测试用例数据以生成测试用例文件。其中,预设测试用例数据至少包括测试用例模板中的预设内容,即待操作表的名称、待测存储过程的入参和出参、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性等。应当了解的是,待测存储过程的出参、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性均为根据待测存储过程的入参生成的预期值,主要用于根据上述预期值,与待测存储过程实际执行后的执行结果进行比较,以判断测试用例是否通过测试。并且,预设测试用例数据应当根据测试用例的测试目的、待操作表中已存在的内容以及测试用例模板中每个字段对应的数据类型进行自动生成。具体地,将预设测试用例数据自动写入到测试用例模板时,具体填写内容如下:
(1)在第一参数类型对应的字段中写入预设操作的编号;
(2)在第二参数类型对应的字段中写入第一字段内容,其中,第一字段内容包括:待操作表主键字段中已存在的内容或待操作表主键字段中与已存在的内容不同的内容,其中,已存在的内容和与已存在的内容不同的内容分别用于区别正常流程和异常流程;
(3)在第三参数类型对应的字段中写入第二字段内容,其中,第二字段内容包括:根据待操作表非主键字段中已存在的内容或待操作表非主键字段中随机生成的字段内容,其中,已存在的内容和与随机生成的字段内容分别用于区别正常流程和异常流程;
(4)在出参对应的字段中写入预期出参结果,其中,预期出参结果可以为0或1,当预期出参结果为0时代表该待测存储过程在当前入参的情况下执行成功,当预期出参结果为1时代表该待测存储过程在当前入参的情况下执行失败;
(5)在待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定,其中,固定表示待操作表在执行入参后的内容与执行入参前的内容一致;
(6)在待操作表的主键字段对应的字段中写入第二预设处理结果,其中,第二预设处理结果的内容为空或与第二参数类型的内容相同;
(7)在待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,第三预设处理结果的内容为空或与第三参数类型的内容相同。
应当了解的是,在预置数据表中存在除待操作表以外的其他表时,测试用例模板中还应该包括所有预置数据表的内容,主要用于进行初始化测试用例的测试环境,使每个测试用例在进行测试之前,初始数据相同。
测试用例文件生成之后,将测试用例文件转化为数据库可执行的测试语句,即用编程语言转换为可执行的脚本。对于测试用例文件中的一个测试用例来说,测试语句主要包括预置数据表内容、备份待操作表、执行待测存储过程的入参、保存待测存储过程的执行出参、保存待操作表的执行结果等,在所有测试用例的测试语句转换完成后,测试语句还包括保存所有测试用例的执行结果,以及得到待测存储过程的测试结果。应当了解的是,根据存储预置数据表的数据库的类型不同,在数据库中执行的测试语句的语言也不同,本发明的实施例可用的数据库为至少可以包括以下之一:SQL Server、MySQL、Oracle等。
通过在数据库中执行测试语句完成待测存储过程的测试过程,并得到待测存储过程的测试结果。其中,对于每个测试用例均检测其是否通过测试,并且在测试用例文件中的所有测试用例均通过测试的情况下,才可以判定待测存储过程的测试结果为通过测试,只要所有测试用例中有任意一个测试用例没有通过测试,则判定待测存储过程的测试结果为未通过测试。进一步地,在自动检测测试用例是否通过测试时,具体可以包括以下几个方面:
(1)以第二参数类型的值和待操作表的增删改属性作为查询条件,查询待操作表的执行结果,获取查询结果,比对该实际结果和预设处理结果(预设处理结果包括第二预设处理结果和第三预设处理结果),二者相同则认为此项结果正确;
(2)以待操作表中除第二参数类型的值以外的主键字段和增删改属性作为查询条件,查询待操作表的执行结果,获取查询结果,比对该实际结果和备份待操作表(即待测存储过程在执行之前的待操作表),二者相同则认为此项结果正确;
(3)比较待测存储过程的执行出参和预期出参是否相同,二者相同则认为此项结果正确;
在上述三项的结果均正确的情况下,认为该测试用例通过测试。
在本实施例中,得到待测存储过程的测试结果后,还可以根据待测存储过程的测试结果生成测试结果文件,其中,测试结果文件的内容可以包括待测存储过程的测试结果以及每个测试用例的测试结果,方便测试人员查看在待测存储过程的测试未通过的情况下,具体哪个测试用例出现了问题,并寻找相应的解决方案。
本实施例基于待测存储过程的入口参数和待操作表的对应关系、以及数据字典的内容,自动生成测试用例模板,并自动根据预设测试用例数据进行测试,输出待测存储过程的测试结果,整个过程完全自动化,不再需要大量的人力来手工编写测试用例,提升了存储过程的测试效率,解决了现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
本发明的第二实施例提供了一种存储介质。存储介质中存储有计算机程序,在本实施例中,计算机程序被处理器执行时实现如下步骤:
S201,建立待测存储过程的入口参数与待测存储过程对应的待操作表的字段之间的对应关系;
S202,根据数据字典和对应关系,生成测试用例模板;
S203,读取预设测试用例数据,并将预设测试用例数据写入到测试用例模板中,生成测试用例文件;
S204,根据测试用例文件对待测存储过程进行测试。
在对新的存储过程进行测试之前,首先需要建立待测存储过程的入参与待测存储过程对应的待操作表的字段之间的对应关系,以方便测试后根据待操作表的实际结果判断待测存储过程的测试结果。应当了解的,待测存储过程的入参为对待操作表的某个字段进行增加、修改或删除操作。因此,将待测存储过程的入参分为第一参数类型、第二参数类型和第三参数类型,进而,待测存储过程的入参和待操作表的字段之间的对应关系为:第一参数类型对应预设操作的编号,其中,预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除,其对应的预设操作的编号分别为1、2和3;第二参数类型对应待操作表的主键字段;第三参数类型对应待操作表的非主键字段。应当了解的是,在实际使用时,一个存储过程可能对应操作了多个待操作表,一个待操作表也可能被多个存储过程操作。
待测存储过程的入参和待操作表的字段之间的对应关系建立后,首先以待测存储过程的名称为条件查询数据库的数据字典,可获取到至少包括预置数据表的名称、待测存储过程的入参的名称和出参的名称、入参的数据类型和出参的数据类型等内容;其次以待操作表的名称为条件查询数据库的数据字典,可获取到至少包括待操作表的主键字段、非主键字段以及各字段的数据类型等内容;最后,根据预设内容和待测存储过程的入参和待操作表的字段之间的对应关系,自动生成测试用例模板,其中,预设内容至少包括待操作表的名称、待测存储过程的入口参数和出口参数、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性。应当了解的是,预置数据表至少包括待操作表,还可以根据待测存储过程的实际情况,获取其他与待操作表或待测存储过程相关的其他表;并且在查询数据字典以获取预设内容时,尽可能的多的获取待测存储过程的各项参数和待操作表的各字段内容,以使测试更加细致,测试结果的准确率更高。优选地,测试用例模板的输出格式可以为Excel表格,以待测存储过程的入参、出参、待操作表的各个字段为测试用例模板的字段,表格的每一列在写入测试用例数据后为一个测试用例。
生成测试用例模板后,在测试用例模板中自动写入预设测试用例数据以生成测试用例文件。其中,预设测试用例数据至少包括测试用例模板中的预设内容,即:待操作表的名称、待测存储过程的入参和出参、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性等。应当了解的是,待测存储过程的出参、待操作表的非主键字段、待操作表的主键字段以及待操作表的增删改属性均为根据待测存储过程的入参生成的预期值,主要用于根据上述预期值,与待测存储过程实际执行后的执行结果进行比较,以判断测试用例是否通过测试。并且,且预设测试用例数据应当根据测试用例的测试目的、待操作表中已存在的内容以及测试用例模板中每个字段对应的数据类型进行自动生成。具体地,计算机程序在被处理器执行将预设测试用例数据自动写入到测试用例模板中的步骤时,将预设测试用例数据写入到测试用例模板时,具体填写内容如下:
(1)在第一参数类型对应的字段中写入预设操作的编号;
(2)在第二参数类型对应的字段中写入第一字段内容,其中,第一字段内容包括:待操作表主键字段中已存在的内容或待操作表主键字段中与已存在的内容不同的内容,其中,已存在的内容和与已存在的内容不同的内容分别用于区别正常流程和异常流程;
(3)在第三参数类型对应的字段中写入第二字段内容,其中,第二字段内容包括:根据待操作表非主键字段中已存在的内容或待操作表非主键字段中随机生成的字段内容,其中,已存在的内容和与随机生成的字段内容分别用于区别正常流程和异常流程;
(4)在出参对应的字段中写入预期出参结果;
(5)在待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定,其中,固定表示待操作表在执行入参后的内容与执行入参前的内容一致;
(6)在待操作表的主键字段对应的字段中写入第二预设处理结果,其中,第二预设处理结果的内容为空或与第二参数类型的内容相同;
(7)在待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,第三预设处理结果的内容为空或与第三参数类型的内容相同。
应当了解的是,在预置数据表中存在除待操作表以外的其他表时,测试用例模板中还应该包括所有预置数据表的内容,主要用于进行初始化测试用例的测试环境,使每个测试用例在进行测试之前,初始数据相同。
测试用例文件生成之后,将测试用例文件转化为数据库可执行的测试语句,即用编程语言转换为可执行的脚本。对于测试用例文件中的一个测试用例来说,测试语句主要包括预置数据表内容、备份待操作表、执行待测存储过程的入参、保存待测存储过程的执行出参、保存待操作表的执行结果等,在所有测试用例的测试语句转换完成后,测试语句还包括保存所有测试用例的执行结果,以及得到待测存储过程的测试结果。应当了解的是,根据存储预置数据表的数据库的类型不同,在数据库中可执行的测试语句也不同,本发明的实施例可用的数据库为至少可以包括以下之一:SQL Server、MySQL、Oracle等,处理器在执行计算机程序进行测试语句的转换时,应当根据数据库的类型转换不同的测试语句。
通过在数据库中执行测试语句完成待测存储过程的测试过程,并得到待测存储过程的测试结果。其中,对于每个测试用例均检测其是否通过测试,并且在测试用例文件中的所有测试用例均通过测试的情况下,才可以判定待测存储过程的测试结果为通过测试,只要所有测试用例中有任意一个测试用例没有通过测试,则判定待测存储过程的测试结果为未通过测试。进一步地,处理器在执行计算机程序自动检测测试用例是否通过测试时,具体可以检测以下几个方面:
(1)以第二参数类型的值和待操作表的增删改属性作为查询条件,查询待操作表的执行结果,获取查询结果,比对该实际结果和预设处理结果(预设处理结果包括第二预设处理结果和第三预设处理结果),二者相同则认为此项结果正确;
(2)以待操作表中除第二参数类型的值以外的主键字段和增删改属性作为查询条件,查询待操作表的执行结果,获取查询结果,比对该实际结果和备份待操作表,二者相同则认为此项结果正确;
(3)比较待测存储过程的执行出参和预期出参是否相同,二者相同则认为此项结果正确;
在上述三项的结果均正确的情况下,认为该测试用例通过测试。
在本实施例中,计算机程序在被所述处理器执行得到待测存储过程的测试结果的步骤之后,还可以执行用于实现以下步骤的计算机程序:根据待测存储过程的测试结果生成测试结果文件,其中,测试结果文件的内容可以包括待测存储过程的测试结果以及每个测试用例的测试结果,方便测试人员查看在待测存储过程的测试未通过的情况下,具体哪个测试用例出现了问题,并寻找相应的解决方案。
本实施例基于待测存储过程的入口参数和待操作表的对应关系、以及数据字典的内容,自动生成测试用例模板,并自动根据预设测试用例数据进行测试,输出待测存储过程的测试结果,整个过程完全自动化,不再需要大量的人力来手工编写测试用例,提升了存储过程的测试效率,解决了现有技术通过手工编写测试用例进行测试的方法测试的效率低,无法达到快速测试的目的的问题。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的计算机程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本发明的第三实施例提供了一个数据库服务器,该数据库服务器包括本发明第二实施例提供的存储介质。下面结合图2至图5对其测试存储过程的实施流程进行详细描述。
在本实施例中,待测存储过程为p_test,预置数据表包括用户信息表tab_userinfo和用户验证表tab_check,其中,tab_userinfo为待操作表,tab_check为验证用户是否合法的预置表。tab_userinfo的主键字段为用户编号userid,非主键字段包括用户号码信息usernumber和用户备注信息desc,且userid、usernumber和desc的数据类型均为字符(varchar2)类型数据。应当了解的是,tab_userinfo中已存在一条userid=1的内容,并且在操作tab_userinfo之前,首先应当验证tab_check的记录是否合法,并且在tab_check的记录合法的情况下,继续执行以下步骤:
S1,首先建立p_test与tab_userinfo的字段的对应关系,在本实施例中,上述对应关系为:
入参类型一(相当于本发明第一实施例的第一参数类型)v_i_operid的数据类型为数字(number)类型数据,其对应的值可以为1、2或3,分别代表增加、修改和删除操作;
入参类型二(相当于本发明第一实施例的第二参数类型)v_i_userid的数据类型为varchar2,对应tab_userinfo的主键字段userid;
入参类型三(相当于本发明第一实施例的第三参数类型)v_i_usernumber和v_i_desc的数据类型均为varchar2,分别对应tab_userinfo的非主键字段usernumber和desc。
S2,分别以p_test和tab_userinfo为查询条件,查询数据字典,生成测试用例模板:
模板中以checktabs标识预置数据表名,由于上述p_test存在两个预置数据表tab_check和tab_userinfo,则生成测试用例模板的同时也将这两个表写入测试用例模板固定内容的数据中,分别对应:tab_check=tab_check;tab_check=tab_userinfo;
模板中以argumentvalue标识加上入参名称表示入参的行,即Argumentvalue=v_i_operid;Argumentvalue=v_i_userid;Argumentvalue=v_i_usernumber;Argumentvalue=v_i_desc;
模板中以outvalue标识加上出参名称表示预期出参的行,即Outvalue=v_o_ret,v_o_ret即p_test的出参;
模板中以testchecktype标识加上待操作表名表示待操作表的增删改属性的行,即tab_userinfo.testchecktype(add|mod|del|fix),其中,add表示增加、mod表示修改、del表示删除、fix表示固定不变;
模板中以checktable标识加上待操作表名和字段名表示待操作表字段的预期值的行,即checktable,tab_userinfo.userid;checktable,tab_userinfo.usernumber;checktable,tab_userinfo.desc。
并且,测试用例模板中还应当包括测试用例的编号,得到测试用例模板如表1所示:
表1
S3,向测试用例模板中自动写入测试用例数据,包括填写入参值、预期出参值、待操作表的增删改属性、待操作表的字段的预期值等,得到测试用例文件,例如表2所示的内容即为填写完成的测试用例模板:
表2
其中,测试用例的填写过程如图2所示。例如,p_test对tab_userinfo进行增加操作,包括如下步骤:
步骤S21,填写入参类型一的值为“1”,入参类型二中填写key1,入参类型三的值可以为value1、value2;
步骤S22,判断tab_userinfo是否存在主键字段为key1的内容,若存在,则执行步骤S24,若不存在则执行步骤S23;
步骤S23,预期出参为0,tab_userinfo的增删改属性为add,tab_userinfo的字段的预期值分别写入对应的入参类型的值;
步骤S24,预期出参为1,tab_userinfo的增删改属性为fix,tab_userinfo的字段的预期值为空。
测试用例1是在待操作表中可以正确进行增加内容的测试用例,在tab_userinfo中增加一条主键字段为330的内容,即key1=330,由于在执行p_test之前的tab_userinfo中,仅存在一条主键字段为1的内容,并不存在主键字段为330的内容,因此,通过执行p_test可以在tab_userinfo中增加一条主键字段为330的内容,此时,其对应的预期出参为0,代表可正常执行待测存储过程,tab_userinfo的增删改属性为add,主键字段的预期值与入参类型二对应,为330,非主键字段的预期值与入参类型三对应,分别为为13712345678和测试增加。测试用例2是在待操作表中无法正确进行增加内容的测试用例,在tab_userinfo中增加一条主键字段为1的内容,即key1=1,由于在执行p_test之前的tab_userinfo中,已经存在一条userid=1的内容,因此,无法在tab_userinfo中添加一条已经存在的内容,此时,其对应的预期出参为1,代表不可正常执行待测存储过程,tab_userinfo的增删改属性为fix,主键字段的预期和非主键字段的预期值均为空。
结合图3,给出另一种测试用例的填写过程。例如,p_test对tab_userinfo进行修改操作,包括如下步骤:
步骤S31,填写入参类型一的值为“2”,入参类型二中填写key1,入参类型三的值可以为value1、value2,即根据数据类型随机生成的值;
步骤S32,判断tab_userinfo是否存在主键字段为key1的内容,若存在,则执行步骤S33,否则执行步骤S34;
步骤S33,预期出参为0,tab_userinfo的增删改属性为mod,tab_userinfo的字段的预期值分别写入对应的入参类型的值;
步骤S34,预期出参为1,tab_userinfo的增删改属性为fix,tab_userinfo的字段的预期值为空。
测试用例3是在待操作表中可以正确进行修改内容的测试用例,在tab_userinfo中修改主键字段为1的内容时,由于在执行p_test之前的tab_userinfo中已经存在一条userid=1的内容,因此,通过执行p_test可以在tab_userinfo中修改主键字段为1的内容,此时,测试用例模板中对应的预期出参为0,代表可正常执行待测存储过程,tab_userinfo的增删改属性为mod,主键字段的预期值为1,非主键字段的预期值为11111111111和测试修改。应当了解的是,表2中未示出tab_userinfo不存在主键字段为key1的内容对应的测试用例,如在执行p_test之前的tab_userinfo中存在一条userid=1的内容,但测试用例的目的是修改tab_userinfo中userid=2的内容。并且,基于相似的原理可以得出p_test对tab_userinfo进行删除操作时的步骤,在此不进行详细的描述。
在实际测试过程中,一个存储过程可能对多个待操作表进行操作,在这种情况下,其测试用例的填写过程如图4所示,包括:
步骤S41,存储过程p_test2要在待操作表tab1和tab2中分别添加主键字段为key1的内容。
步骤S42,判断tab1中是否存在主键字段为key1的内容。如果存在,则执行S45,否则,执行S43。
步骤S43,判断tab2中是否存在主键字段为key1的内容。如果不存在,则执行S44,否则,执行S45。
步骤S44,预期出参为0,tab1和tab2的增删改属性为add,tab1和tab2的字段的预期值分别写入对应的入参类型的值。
步骤S45,预期出参为1,待操作表的增删改属性为fix,待操作表的字段的预期值为空。
S4,将测试用例文件转化为测试语句,并执行测试语句以完成测试用例的测试,所有测试用例均测试完毕后,根据测试用例的测试结果得到待测存储过程p_test的测试结果。图5为一个测试用例的执行步骤,具体包括步骤S51至S54:
S51,预置tab_check和tab_userinfo的数据;
S52,备份tab_userinfo,得到tab_userinfo_copy;
S53,根据p_test的入参的值,执行p_test;
S54,根据p_test的执行结果,检测测试用例是否通过测试。
其中,对于每个测试用例均检测其是否通过测试,并且在测试用例文件中的所有测试用例均通过测试的情况下,才可以判定p_test的测试结果为通过测试,只要所有测试用例中有任意一个测试用例没有通过测试,则判定p_test的测试结果为未通过测试。
进一步地,以测试用例1的数据为例,检测测试用例1是否通过测试包括以下几个方面:
(1)以330和add作为查询条件,查询tab_userinfo的执行结果,获取查询结果,比对该实际结果和checktable,tab_userinfo.userid.key、checktable,tab_userinfo.usernumber和checktable,tab_userinfo.desc,相同则认为此项结果正确;
(2)以p_test中除330以外的主键字段和add作为查询条件,查询tab_userinfo的执行结果,获取查询结果,比对该实际结果和tab_userinfo_copy的内容,相同则认为此项结果正确;
(3)比较p_test的执行出参的值和Outvalue=v_o_ret的值是否相同,二者相同则认为此项结果正确;
在上述三项的结果均正确的情况下,认为测试用例1通过测试。
在本实施例中,得到待测存储过程的测试结果后,还可以根据待测存储过程的测试结果生成测试结果文件,其中,测试结果文件的内容可以包括p_test的测试结果以及每个测试用例的测试结果,方便测试人员查看在p_test的测试未通过的情况下,具体哪个测试用例出现了问题,并寻找相应的解决方案。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (11)
1.一种存储过程的测试方法,其特征在于,包括:
建立待测存储过程的入口参数与所述待测存储过程对应的待操作表的字段之间的对应关系;
根据数据字典和所述对应关系,生成测试用例模板;
读取预设测试用例数据,并将所述预设测试用例数据写入到所述测试用例模板中,生成测试用例文件;
根据所述测试用例文件对所述待测存储过程进行测试。
2.如权利要求1所述的测试方法,其特征在于,所述对应关系包括:
所述入口参数的第一参数类型对应预设操作的编号,其中,所述预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除;
所述入口参数的第二参数类型对应所述待操作表的主键字段;
所述入口参数的第三参数类型对应所述待操作表的非主键字段。
3.如权利要求2所述的测试方法,其特征在于,根据数据字典和所述对应关系,生成测试用例模板,包括:
根据数据字典和所述对应关系生成以预设内容为字段的测试用例模板,其中,所述预设内容至少包括:所述待操作表的名称、所述待测存储过程的入口参数和出口参数、所述待操作表的非主键字段、所述待操作表的主键字段以及所述待操作表的增删改属性。
4.如权利要求3所述的测试方法,其特征在于,将所述预设测试用例数据写入到所述测试用例模板中,包括:
在所述第一参数类型对应的字段中写入所述预设操作的编号;
在所述第二参数类型对应的字段中写入第一字段内容,其中,所述第一字段内容包括:所述待操作表主键字段中已存在的内容或所述待操作表主键字段中与所述已存在的内容不同的内容;
在所述第三参数类型对应的字段中写入第二字段内容,其中,所述第二字段内容包括:根据所述待操作表非主键字段中已存在的内容或所述待操作表非主键字段中随机生成的字段内容;
在所述出参对应的字段中写入预期出参结果;
在所述待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,所述第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定;
在所述待操作表的主键字段对应的字段中写入第二预设处理结果,其中,所述第二预设处理结果的内容为空或与所述第二参数类型的内容相同;
在所述待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,所述第三预设处理结果的内容为空或与所述第三参数类型的内容相同。
5.如权利要求1至4中任一项所述的测试方法,其特征在于,根据所述测试用例文件对所述待测存储过程进行测试之后,还包括:
检测所述测试用例文件中对应的每个测试用例是否通过测试;
在所述测试用例文件中所有测试用例均通过测试的情况下,确定所述待测存储过程的测试结果为通过测试。
6.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如下步骤:
建立待测存储过程的入口参数与所述待测存储过程对应的待操作表的字段之间的对应关系;
根据数据字典和所述对应关系,生成测试用例模板;
读取预设测试用例数据,并将所述预设测试用例数据写入到所述测试用例模板中,生成测试用例文件;
根据所述测试用例文件对所述待测存储过程进行测试。
7.如权利要求6所述的存储介质,其特征在于,所述对应关系包括:
所述入口参数的第一参数类型对应预设操作的编号,其中,所述预设操作至少包括以下之一:对待操作表内容进行增加、修改和删除;
所述入口参数的第二参数类型对应所述待操作表的主键字段;
所述入口参数的第三参数类型对应所述待操作表的非主键字段。
8.如权利要求7所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行根据数据字典和所述对应关系,生成测试用例模板的步骤时,具体实现如下步骤:
根据数据字典和所述对应关系生成以预设内容为字段的测试用例模板,其中,所述预设内容至少包括:所述待操作表的名称、所述待测存储过程的入口参数和出口参数、所述待操作表的非主键字段、所述待操作表的主键字段以及所述待操作表的增删改属性。
9.如权利要求8所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行将所述预设测试用例数据写入到所述测试用例模板中的步骤时,具体实现如下步骤:
在所述第一参数类型对应的字段中写入所述预设操作的编号;
在所述第二参数类型对应的字段中写入第一字段内容,其中,所述第一字段内容包括:所述待操作表主键字段中已存在的内容或所述待操作表主键字段中与所述已存在的内容不同的内容;
在所述第三参数类型对应的字段中写入第二字段内容,其中,所述第二字段内容包括:根据所述待操作表非主键字段中已存在的内容或所述待操作表非主键字段中随机生成的字段内容;
在所述出参对应的字段中写入预期出参结果;
在所述待操作表的增删改属性对应的字段中写入第一预设处理结果,其中,所述第一预设处理结果的内容包括以下任意一种:增加、修改、删除、固定;
在所述待操作表的主键字段对应的字段中写入第二预设处理结果,其中,所述第二预设处理结果的内容为空或与所述第二参数类型的内容相同;
在所述待操作表的非主键字段对应的字段中写入第三预设处理结果,其中,所述第三预设处理结果的内容为空或与所述第三参数类型的内容相同。
10.如权利要求6至9中任一项所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行根据所述测试用例文件得到所述待测存储过程的测试结果的步骤之后,还被所述处理器执行以下步骤:
检测所述测试用例文件中对应的每个测试用例是否通过测试;
在所述测试用例文件中所有测试用例均通过测试的情况下,确定所述待测存储过程的测试结果为通过测试。
11.一种数据库服务器,其特征在于,包括权利要求6至10中任一项所述的存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711001281.2A CN109697161A (zh) | 2017-10-24 | 2017-10-24 | 一种存储过程的测试方法、存储介质和数据库服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711001281.2A CN109697161A (zh) | 2017-10-24 | 2017-10-24 | 一种存储过程的测试方法、存储介质和数据库服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109697161A true CN109697161A (zh) | 2019-04-30 |
Family
ID=66228075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711001281.2A Withdrawn CN109697161A (zh) | 2017-10-24 | 2017-10-24 | 一种存储过程的测试方法、存储介质和数据库服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109697161A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347598A (zh) * | 2019-07-10 | 2019-10-18 | 上海达梦数据库有限公司 | 一种测试脚本生成方法、装置、服务器及存储介质 |
CN111813653A (zh) * | 2020-05-28 | 2020-10-23 | 杭州览众数据科技有限公司 | 一种字段内容相关的数据异常测试方法及自动化测试工具 |
CN115114146A (zh) * | 2022-06-02 | 2022-09-27 | 马上消费金融股份有限公司 | 接口测试方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1752945A (zh) * | 2005-11-02 | 2006-03-29 | 中国科学院软件研究所 | 安全数据库管理***测试用例生成方法 |
CN104268073A (zh) * | 2014-09-05 | 2015-01-07 | 北京广利核***工程有限公司 | 一种批量生成测试用例的方法 |
US20150286552A1 (en) * | 2007-11-12 | 2015-10-08 | Interactive TKO, Inc. | Spreadsheet Data Transfer Objects |
CN105808437A (zh) * | 2016-03-09 | 2016-07-27 | 广州彩瞳网络技术有限公司 | 基于测试用例数据表的自动化测试方法及*** |
-
2017
- 2017-10-24 CN CN201711001281.2A patent/CN109697161A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1752945A (zh) * | 2005-11-02 | 2006-03-29 | 中国科学院软件研究所 | 安全数据库管理***测试用例生成方法 |
US20150286552A1 (en) * | 2007-11-12 | 2015-10-08 | Interactive TKO, Inc. | Spreadsheet Data Transfer Objects |
CN104268073A (zh) * | 2014-09-05 | 2015-01-07 | 北京广利核***工程有限公司 | 一种批量生成测试用例的方法 |
CN105808437A (zh) * | 2016-03-09 | 2016-07-27 | 广州彩瞳网络技术有限公司 | 基于测试用例数据表的自动化测试方法及*** |
Non-Patent Citations (2)
Title |
---|
胡宏银等: "Java存储过程的自动生成与测试", 《计算机工程与设计》 * |
胡宏银等: "基于模板的存储过程自动测试方法", 《福建电脑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347598A (zh) * | 2019-07-10 | 2019-10-18 | 上海达梦数据库有限公司 | 一种测试脚本生成方法、装置、服务器及存储介质 |
CN110347598B (zh) * | 2019-07-10 | 2023-11-28 | 上海达梦数据库有限公司 | 一种测试脚本生成方法、装置、服务器及存储介质 |
CN111813653A (zh) * | 2020-05-28 | 2020-10-23 | 杭州览众数据科技有限公司 | 一种字段内容相关的数据异常测试方法及自动化测试工具 |
CN111813653B (zh) * | 2020-05-28 | 2023-07-04 | 杭州览众数据科技有限公司 | 一种字段内容相关的数据异常测试方法及自动化测试工具 |
CN115114146A (zh) * | 2022-06-02 | 2022-09-27 | 马上消费金融股份有限公司 | 接口测试方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675691B2 (en) | System and method for performing automated API tests | |
US8347267B2 (en) | Automated software testing and validation system | |
CN109032611A (zh) | 脚本部署方法、装置、计算机设备及存储介质 | |
CN105760292B (zh) | 一种用于单元测试的断言验证方法和装置 | |
CN112306855B (zh) | 接口自动化测试方法、装置、终端和存储介质 | |
CN107741903A (zh) | 应用程序兼容性测试方法、装置、计算机设备和存储介质 | |
CN111209206B (zh) | 一种软件产品的自动测试方法及*** | |
CN112052172B (zh) | 第三方通道的快速测试方法、装置和电子设备 | |
CN109992508A (zh) | 测试用例自动化生成方法、装置和电子设备 | |
CN112181854B (zh) | 一种生成流程自动化脚本的方法、装置、设备及存储介质 | |
CN108664388A (zh) | 动态字段数据返回接口的测试***、方法、电子设备和可读存储介质 | |
CN110134596A (zh) | 测试文档的生成方法及终端设备 | |
CN109697161A (zh) | 一种存储过程的测试方法、存储介质和数据库服务器 | |
CN113486358A (zh) | 一种漏洞检测方法及装置 | |
CN116561003A (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
CN109684205A (zh) | ***测试方法、装置、电子设备及存储介质 | |
CN114546749A (zh) | 一种芯片随机测试用例回归方法、装置、设备及可读介质 | |
CN111813665A (zh) | 一种基于python的大数据平台接口数据测试方法和*** | |
CN111090638A (zh) | 一种数据库迁移中交易功能的对比方法及装置 | |
US10223247B2 (en) | Generating pseudorandom test items for software testing of an application under test (AUT) | |
CN114826909B (zh) | 服务器生产指令信息维护***、方法、装置及存储介质 | |
CN110765020B (zh) | 基于领域知识的测试用例生成方法 | |
CN109815129A (zh) | 证券融资应用软件的测试方法、装置、终端及存储介质 | |
US20230195609A1 (en) | Automatic generation of summary report for validation tests of computing systems | |
CN109800155B (zh) | 一种基于Probe的QTE联锁应用软件测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190430 |