CN102521354A - 一种数据库协议审计测试方法及装置 - Google Patents

一种数据库协议审计测试方法及装置 Download PDF

Info

Publication number
CN102521354A
CN102521354A CN2011104143903A CN201110414390A CN102521354A CN 102521354 A CN102521354 A CN 102521354A CN 2011104143903 A CN2011104143903 A CN 2011104143903A CN 201110414390 A CN201110414390 A CN 201110414390A CN 102521354 A CN102521354 A CN 102521354A
Authority
CN
China
Prior art keywords
database
command
configuration file
parameter
task
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.)
Granted
Application number
CN2011104143903A
Other languages
English (en)
Other versions
CN102521354B (zh
Inventor
张晓燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN201110414390.3A priority Critical patent/CN102521354B/zh
Publication of CN102521354A publication Critical patent/CN102521354A/zh
Application granted granted Critical
Publication of CN102521354B publication Critical patent/CN102521354B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库协议审计测试方法及装置。该方法包括:根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;执行数据库任务,并根据预先设置的调度参数控制执行数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据;在日志中记录执行数据库任务的过程,在执行完成后自动连接审计产品,并获取审计产品针对所产生的数据库协议数据的审计结果;根据数据库连接参数以及日志中记录的数据库任务的执行过程检测审计结果的正确性,并在预先指定的测试报告位置生成测试报告。

Description

一种数据库协议审计测试方法及装置
技术领域
本发明涉及测试领域,特别是涉及一种数据库协议审计测试方法及装置。
背景技术
现有技术中,在进行数据库协议审计测试时需要构造不同种类、不同速率和不同数量的数据库协议数据,用于检测数据库审计产品审计结果的准确性。
在通常的数据库审计测试中,一般是安装不同的数据库客户端通过手动执行脚本进行测试;或者通过抓包软件先捕获包含数据库协议数据的数据包然后再回放来进行测试;或者通过某些测试仪器构造数据库协议模拟数据进行测试。
现有的数据库审计测试方法在实际测试中的问题在于:
1、数据库审计系统通常用于审计客户环境中大型应用软件的数据库访问流量,数据库客户端访问数据库通常采用不同的协议,因此如果单纯使用客户端来进行测试风险较大。而且通常多个数据库或客户端安装在一起有可能会产生冲突,因此需要在多台主机上安装不同的数据库客户端,资源占用较多。人工使用客户端操作数据库时不便于进行自动化的控制,测试效率较低。
2、通过捕获数据包再回放的方式进行测试时,通常需要先通过抓包软件捕获数据库包,再进行处理,例如,去除一些无用数据包;然后通过重写数据包的工具对数据包中的部分字段,例如,源媒体接入控制(Media AccessControl,简称为MAC)地址、目的MAC地址、源网络协议(Internet Protocol,简称为IP)地址、目的IP地址、校验和等字段进行重写,然后才能再进行回放。整个过程操作比较繁琐。这种方法最大的问题在于,数据包一旦做好,其中包含的数据内容也就固定,无法改变。
3、一些高端的测试仪具有构造数据库模拟数据的功能,但测试仪构造的是模拟数据,与真实的数据库协议数据有很大差别,尤其随着时间推移,数据库版本更新后,模拟数据和真实数据库的差别更明显。一般测试仪对一些常见的应用协议,例如,邮件、超文本传输协议(HyperText Transfer Protocol,简称为HTTP)、文件传输协议(File Transfer Protocol,简称为FTP)等模拟效果较好,但对数据库协议的支持十分有限。大部分测试仪不支持数据库协议,少数测试仪支持1-3种主流数据库,无法满足数据库审计产品的日常测试需求。此外,一些高端测试仪通常用于模拟攻击或模拟复杂网络流量,用来对企业级应用软件进行性能及安全方面的测试。在数据库审计产品的测试中,需要关注所有类型的数据库操作,在实际应用中包含大量使用绑定变量的数据库流量数据,对于这些应用测试仪无法灵活模拟;测试过程中执行的所有数据库操作内容及顺序都应该有详细的记录,以便于利用这些信息验证审计结果的正确性,在这方面测试仪通常在结束后提供一些发送数据的统计结果,不提供能够追溯测试过程的详细日志。因此测试仪可以用来辅助完成数据库审计产品的性能测试,不适合进行常规的功能测试。
发明内容
本发明提供一种数据库协议审计测试方法及装置,以解决现有技术中数据库协议审计测试手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
本发明提供一种数据库协议审计测试方法,包括:
根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
执行数据库任务,并根据预先设置的调度参数控制执行数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据;
在预先设置的日志中记录执行数据库任务的过程,在执行完成后自动连接审计产品,并获取审计产品针对上述数据库协议数据的审计结果;
根据数据库连接参数以及日志中记录的数据库任务的执行过程检测审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
本发明还提供了一种数据库协议审计测试装置,包括:
数据库连接单元,用于根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
数据库任务执行单元,用于执行数据库任务;
任务调度单元,用于根据预先设置的调度参数控制执行数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据,在预先设置的日志中记录执行数据库任务的过程;
测试结果分析单元,用于在执行完成后自动连接审计产品,并获取审计产品针对上述数据库协议数据的审计结果;根据数据库连接参数以及日志中记录的数据库任务的执行过程检测审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
本发明有益效果如下:
通过设置测试参数,打开数据库连接,解析预编写的SQL脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,解决了现有技术中数据库协议审计测试手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题,本发明实施例的技术方案能够同时进行多种数据库协议审计测试;需安装数据库客户端,在一台主机上即可连接多种数据库产生多种数据库协议数据,节省资源,操作简单,易于控制;SQL脚本和预备语句配置文件独立于调度过程,可灵活配置,可以根据不同测试要求方便的构造新的测试数据;测试数据真实,数据库版本更新简便,在数据库协议审计的功能、压力、性能测试方面应用广泛。
附图说明
图1是本发明实施例的数据库协议审计测试方法的流程图;
图2是本发明实施例的数据库协议审计测试方法详细处理的流程图;
图3是本发明实施例的数据库协议审计集中测试方法实现过程的流程图;
图4是本发明实施例的对预备语句配置文件的解析过程的流程图;
图5是本发明实施例的数据库协议审计测试装置的结构示意图;
图6是本发明实施例的数据库协议审计测试装置的详细结构示意图。
具体实施方式
为了解决现有技术中数据库协议审计测试手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题,本发明提供了一种数据库协议审计测试方法及装置,用于完善数据库协议审计测试方法,使得对该领域的测试更加有效。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
方法实施例
根据本发明的实施例,提供了一种数据库协议审计测试方法,图1是本发明实施例的数据库协议审计测试方法的流程图,如图1所示,根据本发明实施例的数据库协议审计测试方法包括如下处理:
步骤101,根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
步骤101中,在根据预先设置的数据库连接参数连接相应的数据库之前,还可以进行如下处理:
1、预先配置测试参数,包括:数据库连接参数、任务类型、配置文件位置、调度参数、日志、以及测试报告位置等,数据库连接参数包括:数据库服务器地址、服务器端口、数据库实例名、用户名、密码等;任务类型包括:用于指示进行普通SQL脚本数据库命令的审计测试任务、以及用于指示进行包含绑定变量数据库命令的审计测试任务。
2、根据需要进行测试的数据库的类型,创建一个或多个线程,其中,线程用于控制相应类型的数据库的数据库任务执行过程,
步骤102,执行数据库任务,并根据预先设置的调度参数控制执行数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据;
在步骤102中,在确定任务类型为指示进行包含绑定变量数据库命令的审计测试任务的情况下,执行数据库任务具体包括如下处理:
步骤1,采用文档对象模型(Document Object Model,简称为DOM)方式从指定的配置文件位置加载并解析预备语句配置文件;
步骤2,读取预备语句配置文件中的一条记录,根据记录的类型生成普通数据库命令或者预备语句命令,并执行普通数据库命令或者预备语句命令;
步骤3,重复执行步骤2,直至预备语句配置文件的所有记录全部执行完毕。
在确定任务类型为指示进行普通SQL脚本数据库命令的审计测试任务的情况下,执行数据库任务具体包括:
步骤1,从指定的配置文件位置加载SQL脚本;
步骤2,根据预先设置的脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,执行普通数据库命令;
步骤3,重复执行步骤2,直到SQL脚本的数据库命令全部执行完毕。
步骤103,在预先设置的日志中记录执行数据库任务的过程,在执行完成后自动连接审计产品,并获取审计产品针对上述数据库协议数据的审计结果;
具体地,在步骤103中,需要在日志中记录对备语句配置文件或SQL脚本的处理次数,执行命令的开始时间、执行的命令、以及命令执行结果,在确定处理次数达到调度参数中预先设置的处理次数的情况下,在日志中记录执行的总次数和结束时间。
步骤104,根据数据库连接参数以及日志中记录的数据库任务的执行过程检测审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
具体地,可以根据数据库连接参数检测审计结果中还原的数据库名和用户名是否正确,并根据日志中的记录检测审计结果中还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间是否正确。
综上所述,首先需要配置测试参数,例如,数据库连接参数、任务类型、配置文件位置、调度参数、日志及测试报告位置等;读取预设的数据库连接参数,连接相应数据库,根据任务类型加载对应配置文件,生成数据库任务;通过调度参数控制数据库任务的执行速度和次数,构造不同速率和数量的数据库协议数据;在日志中记录执行过程,执行完后根据参数自动连接审计产品获取审计结果,利用连接参数及日志检测审计结果的正确性,生成测试报告。通过上述处理,本发明实施例具有以下有益效果:
1、本发明实施例采用客户环境中常用方式连接数据库服务器,产生数据库访问数据。集成常见数据库驱动,无需安装客户端即可方便完成数据库协议数据的构造,增强了易用性,节省了资源。
2、本发明实施例采用动态加载技术,使支持的数据库类型可配置,可以方便的通过修改配置文件、集成新的驱动,支持新的数据库类型。可以同时进行多种数据库协议审计测试。
3、本发明实施例通过并发控制,可以同时创建多个线程,每个线程完成对一种数据库协议数据构造过程的独立控制,从而可以同时进行多种数据库协议审计测试。
4、本发明实施例通过参数控制协议数据生成的速率和数量,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
5、数据库协议数据测试中通常需要关注两种数据的测试,一种是执行普通数据库命令的协议数据,这种协议数据可以通过执行预置的SQL语句来生成;一种是包含绑定变量的协议数据,这种协议数据的格式与前一种不同,数据包前面部分是包含变量的数据库命令,紧随其后的是变量的赋值,这种应用在一些动态网页中比较常见,这种协议数据可以通过执行预置的预备语句配置文件来生成。
6、待执行的SQL语句和预备语句均采用独立于调度过程的配置文件进行配置。可以根据不同的测试目标、数据库特征随时编写不同的脚本或预备语句配置文件,通过不断补充、完善可以完成对数据库所有命令的全面测试。
以下结合附图,对本发明实施例的技术方案进行详细说明。
图2是本发明实施例的数据库协议审计测试方法详细处理的流程图,如图2所示,包括如下处理:
步骤S201,根据要测试的数据库种类,动态加载数据库驱动程序,读取预先配置的数据库参数,利用这些参数构造数据库连接串,打开数据库连接。数据库连接参数通常包括数据库服务器地址、服务器端口、数据库实例名(或服务名)、用户名、密码等。
步骤S202,读取任务类型参数,该参数用于指定进行普通sql脚本数据库命令的审计测试,或者进行包含绑定变量的数据库命令审计测试。
如果选择的是绑定变量测试,则需要从测试参数指定位置加载预备语句配置文件。通过预备语句配置文件可以生成两种数据库命令,一种是普通的数据库命令,一种是包含绑定变量的预备语句。对数据库进行操作前,需要先进行一些初始化的操作,例如,创建数据库、创建表等,这些操作可以在数据库中预先建好,也可以在配置文件中写好,每次执行时自动创建。预备语句配置文件中配置的普通数据库命令主要是用来完成初始化操作,为执行预备语句做准备,是可选的配置。要创建并执行一个预备语句,需要两方面的信息:1、创建预备语句的字符串;2、为各变量所赋的值,及类型。综上所述,配置文件中应具有如下特征及信息:
1、普通数据库命令和预备语句的区别标志;
2、一条记录的开始和结束标记,一条记录或者可以生成一个普通数据库命令,或者可以生成一个已经被赋值的预备语句命令;
3、创建预备语句的字符串;
4、为预备语句中各变量所赋的值及类型。
5、第4点中所赋的值与被赋值的预备语句应该具有明确的对应关系,即:能明确说明变量是为此预备语句赋值而不是为另一个预备语句赋值。
在本步骤中,会逐条读取配置文件中的记录,生成数据库命令并交给调度单元执行。
从本步骤中描述的预备语句配置文件的内容可以看到预备语句配置文件也可以生成普通的数据库命令,但由于预备语句配置文件格式复杂,对其进行解析处理的过程也比较复杂,因此本发明实施例为构造普通数据库命令单独设计了更简单的SQL脚本格式,以加快对普通数据库命令的处理速度。
如果选择的不是绑定变量测试,则需要从测试参数指定位置加载SQL脚本。本发明实施例为SQL脚本规定了特定的格式和分割标记,解析时通过识别该分隔符判断SQL脚本中一批数据库任务的开始结束位置。在本步骤中,会逐批读取脚本文件中的数据库命令,发送到调度单元执行。
步骤S203,在获得步骤S202中生成的数据库命令或预备语句后,本步骤将执行命令并处理命令的返回结果。具体地,根据测试参数中设定的执行间隔时间,在处理完一批或一条命令后暂停一定的间隔时间,用于调整任务的执行速度,从而控制数据库协议数据的生成速率。间隔时间以毫秒计时,当设置为0时表示不设间隔连续执行命令。在执行过程中需要在日志中记录数据库任务的执行时间、执行的内容和执行结果。执行过程中设置计数器记录已执行命令的总数。执行过程可以手动停止,也可以重新开始。执行停止后,显示本次测试执行过的命令总数。
S204,将数据库审计系统的审计结果和日志文件中记录的数据库命令执行过程进行自动对比。可以从数据库名、用户名、数据库命令总数、单条数据库命令审计正确性、操作结果、执行顺序、执行时间等方面核对审计系统审计结果的准确性。
步骤S202至步骤S204描述了一种数据库协议数据生成及数据库审计测试的方法。通过并发,可以同时创建多个线程,每个线程均可独立完成步骤S101至步骤S204的功能,从而使本发明实施例可以同时完成多个或多种数据库协议审计测试。
通过本发明实施例提供的方法,设置测试参数,打开数据库连接,解析预编写的SQL脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,可以同时进行多种数据库协议审计测试,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
下面以一优选的实例来详细阐述本发明实施例提供的数据库协议审计集中测试方法的具体实现过程。本实例提供的数据库协议审计集中测试方法是对数据库审计产品审计功能进行测试的方法,通过参数连接数据库,加载指定的SQL脚本或预备语句配置文件,生成数据库任务,并根据参数控制数据库任务的执行速度和次数,以产生数据库协议测试数据,进行数据库审计测试,并根据数据库执行过程中记录的日志对数据库协议审计结果进行验证,从而检验审计结果的正确性。本实例支持对六种数据库协议进行审计测试,解决了在现有测试方法中手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题,可以节省资源提高测试效率。
图3是本发明实施例的数据库协议审计集中测试方法实现过程的流程图,如图3所示,包括如下处理:
步骤S301,配置测试参数,并根据进行测试的数据库类型,创建一个线程,用于控制该类型数据库协议数据的生成过程。通过并发控制,本实例支持同时对多种数据库协议进行测试。
步骤S302,根据测试参数中的数据库连接参数,打开数据库连接。例如,连接oracle数据库需配置数据库服务器地址、服务器端口、数据库实例名、数据库用户名、数据库用户密码。
步骤S303,根据测试参数中的任务类型对测试过程进行不同的配置。包含两种选择:绑定变量测试和普通数据库任务测试。如果配置的是绑定变量测试,则执行步骤S304;如果配置的是普通数据库任务测试,则执行步骤S305。
步骤S304,从指定位置加载并解析预备语句配置文件,读取一条记录,根据记录的类型生成普通数据库命令或预备语句命令,并执行命令。同时需记录命令执行开始时间、执行的命令、执行结果。逐条处理预备语句配置文件,直至文件末尾,完成对预备语句配置文件的一次处理过程。
本实例中预备语句配置文件采用xml文件存储。根据S202中对预备语句配置文件的特征描述,配置文件格式如下:
Figure BDA0000119414060000101
配置文件中包含2类子标签:normalStatement用于配置普通数据库命令,它的SQL属性是SQL语句内容;Preparedstatement用于配置预备语句。其中Preparedstatement又包含两种子标签,command用于配置预备语句内容;variable用于给预备语句赋值,一个variable节点可以为预备语句赋一个变量值,赋值的位置、类型、值分别用variable的location、type、value属性配置。
一个配置文件只能包含一个preparedstatementTest,一个preparedstatementTest节点下可以包含若干normalStatement或Preparedstatement。一个Preparedstatement中只能包含一个command及多个variable,variable个数由预备语句待赋值的变量个数决定。
本实例中考虑到在循环执行过程中会多次访问预备语句配置文件的内容,而且绑定变量测试重点在于测试到所有变量类型,配置文件内容不必包含过多语句,因此采用DOM解析预备语句配置文件。该方法会一次性读入配置文件内容,然后构建一个驻留内存的树结构,以后对配置文件的访问通过访问内存中的树结构来完成,加快处理效率。
步骤S305,从指定位置加载SQL脚本,根据脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,并执行命令,同时需记录命令执行开始时间、执行的命令、执行结果。逐条处理SQL脚本文件,直至文件末尾,完成对SQL脚本文件的一次处理过程。
本实施例中SQL脚本采用文本文件存储。根据S202中对SQL脚本的特征描述,SQL脚本文件格式如下:
Sql command1
go
sql command2
go
……
为了解析方便,该文件中批结束符“go”必须单行存储,所有SQL命令必须从一行开头开始编写,但可以分多行编写。
S306,在日志中记录对预备语句配置文件或SQL脚本的处理次数。
S307,判断S306中的处理次数是否达到测试参数中配置的总循环次数,如果达到,转步骤S308;如果未达到,转步骤S303。
S308,记录日志执行总条数和结束时间。
S309,根据配置参数获取审计产品的审计结果,例如,本实例中通过可配置的条件从审计产品的数据库中查询审计结果并将其保存。根据步骤S302中的数据库名、用户名等参数检测审计结果中还原的数据库名和用户名是否正确;根据S308步骤中记录的执行日志,从还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间等方面检测审计结果是否正确。根据检测的结果产生测试报告,总体说明数据库审计的效果。
下面通过一简单示例来具体说明上述数据库协议审计测试的过程。
例如,要完成对oracle数据库审计测试,在测试开始前首先配置以下测试参数:
DataBase type:oracle                                    #数据库类型
ServerAddress:192.168.73.88                             #数据库地址
ServerPort:1521                                         #数据库端口
Instance:test                                           #数据库实例名
User:system                                             #数据库用户名
Password:testoracle                                     #数据库密码
PreparedstatementTest:true                              #绑定变量测试
PreparedstatementConfigFilePath:D:\prepConfig.xml       #预备语句配置文件位置
LogfilePath:D:\test.log                                 #执行日志文件位置
ExecutionInteval:1000                                   #命令执行间隔,单位毫秒
Times:100                                               #循环执行次数
接下来创建一个线程,用于控制oracle协议数据构造过程。该线程根据数据库连接参数连接指定数据库实例,打开数据库连接。
然后,加载预备语句配置文件prepConfig.xml,解析并处理该文件。结合步骤S202中的配置文件的格式,在某一具体示例中,本实施例的预备语句配置关键部分具体实现为:
Figure BDA0000119414060000121
Figure BDA0000119414060000131
图4是本发明实施例的对预备语句配置文件的解析过程的流程图,如图4所示,包括以下步骤:
S401,从指定位置加载预备语句,在本实例中,可以从D:\prepConfig.xml读入配置文件,在内存中构建一个树结构,该树结构的二级节点用于生成数据库命令。
S402,获取树结构二级节点列表,从列表中读取下一个记录。
S403,判断当前读到的这个记录是普通数据库语句还是预备语句,如果是预备语句,转步骤S404;如果是普通数据库命令,转步骤S405。在本实例中,配置文件中preparedstatement表示预备语句,normalStatement表示普通数据库命令。
S404,创建预备语句并为预备语句变量赋值。preparedstatement包含多个子标签,第一个标签command的prep属性是用于创建预备语句的参数值,其他的都是variable标签,用于为预备语句赋值。根据本例配置文件中的Preparedstatement标签,可以生成如下预备语句:
String command=″insert into table1 values(?,?,?,?,?)″;//该变量值从preparedstatement的command子标签读取
PreparedStatement prep=con.prepareStatement(command);//创建一个预备语句
prep.setString(1,″test″);//根据variable标签的位置、类型属性为预备语句赋值
prep.setInt(2,5);
prep.setShort(3,(short)5);
prep.setBoolean(4,true);
prep.setDouble(5,(double)5.0);
S405,创建普通数据库命令。根据normalStatement标签的SQL属性创建普通数据库命令。根据本例配置文件中的normalStatement标签,可以生成如下命令:
String command=″create table table 1(column1  varchar(20),column2  int,column3  smallint,column4 bit,column5 real)″;//该变量值从normalStatement标签读取。
S406,数据库命令执行前在日志文件中记录时间。本实例是在D:\test.log中记录当前时间。
S407,执行数据库命令,处理执行结果,并将执行的命令和结果记录在日志文件中。
S408,一条命令执行完后暂定指定的间隔。本例中每条命令执行后都会暂停1000ms。
S409,判断是否到达列表末尾,如果到达,继续步骤S306及后续处理;如果没有到达末尾,转步骤S402。
对列表进行完一次处理后,即完成一次执行过程,在日志文件中记录循环执行次数。然后判断是否达到设定的总次数,本实例中设定的总次数是100。如果没有达到总次数,则返回步骤S402重新处理一次列表,直至达到100次;如果达到总次数,则在日志中记录执行数据库命令的总条数和当前时间,结束本次测试。然后根据日志文件检验数据库审计产品的审计结果,生成测试报告。
上例详细说明了包含绑定变量的数据库审计测试过程,如果要进行普通SQL语句的测试,只需在测试开始前将参数PreparedstatementTest设置成false。普通SQL脚本存放在脚本文件中,对该文件的处理比较简单,按顺序读取脚本中的命令,生成普通数据库命令并执行。本实例中脚本文件的一部分配置如下:
本实例中所有SQL命令均从行首开始,单行存储的go是批结束符。对该文件的处理过程如下:
步骤1、逐行获取文件内容,如果该行内容不是“go”,拼接在字符串尾部,继续读下一行;如果是“go”,则一批结束,转步骤2。
步骤2、用第一步读到的字符串创建数据库命令;
步骤3、日志中记录时间,执行数据库命令,处理执行结果,在日志中记录字符串的内容和执行结果。
步骤4、判断文件是否结束。如未结束转步骤1;如结束,转步骤S306继续后续处理。
通过本发明实施例提供的数据库协议审计集中测试方法,解析预编写的SQL脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,可以同时进行六种数据库协议审计测试,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
综上所述,1、本发明实施例可以生成包含任意类型绑定变量的数据库访问数据,从而完成对包含绑定变量的数据库数据的审计测试。绑定变量测试通过解析预先编写好的预备语句配置文件,生成包含绑定变量的数据协议数据来进行测试。2、SQL脚本或预备语句配置文件独立于调度过程,支持动态扩充,可以根据不同的测试目标、数据库特征随时编写不同的脚本或预备语句配置文件。通过不断补充、完善可以完成对数据库所有命令的全面测试。3、通过预设的测试参数控制各类数据库协议数据生成的速率和总量。任务类型用于控制进行普通SQL脚本数据库命令的审计测试,或者进行包含绑定变量的数据库命令审计测试;执行间隔和总数(总数是指执行过程中设置计数器记录已执行命令的总数)用于控制数据库任务的执行速度和次数,构造不同速率和数量的数据库协议数据,进行数据库协议审计测试。4、自动获取审计结果,将数据库执行过程中记录的日志信息、连接信息与审计结果进行对比,验证审计结果的正确性,按照预定格式生成测试报告。
装置实施例
根据本发明的实施例,提供了一种数据库协议审计测试装置,图5是本发明实施例的数据库协议审计测试装置的结构示意图,如图5所示,根据本发明实施例的数据库协议审计测试装置包括:数据库连接单元50、数据库任务执行单元52、任务调度单元54、测试结果分析单元56,以下对本发明实施例的各个模块进行详细的说明。
具体地,数据库连接单元50,用于根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
数据库任务执行单元52,用于执行数据库任务;
具体地,在确定所述任务类型为指示进行包含绑定变量数据库命令的审计测试任务的情况下,数据库任务执行单元52采用DOM方式从指定的配置文件位置加载并解析预备语句配置文件;读取预备语句配置文件中的一条记录,根据记录的类型生成普通数据库命令或者预备语句命令,并执行普通数据库命令或者预备语句命令,直至预备语句配置文件的所有记录全部执行完毕;在确定所述任务类型为指示进行普通SQL脚本数据库命令的审计测试任务的情况下,数据库任务执行单元52从指定的配置文件位置加载SQL脚本;根据预先设置的脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,执行普通数据库命令,直到SQL脚本的数据库命令全部执行完毕。
任务调度单元54,用于根据预先设置的调度参数控制执行数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据,在预先设置的日志中记录执行数据库任务的过程;
具体地,任务调度单元54在日志中记录对备语句配置文件或SQL脚本的处理次数,执行命令的开始时间、执行的命令、以及命令执行结果,在确定处理次数达到调度参数中预先设置的处理次数的情况下,在日志中记录执行的总次数和结束时间;
测试结果分析单元56,用于在执行完成后自动连接审计产品,并获取审计产品针对所述数据库协议数据的审计结果;根据数据库连接参数以及日志中记录的数据库任务的执行过程检测审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
具体地,测试结果分析单元56根据数据库连接参数检测审计结果中还原的数据库名和用户名是否正确,并根据日志中的记录检测审计结果中还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间是否正确。
优选地,上述装置还可以包括:
配置单元,用于预先配置测试参数,其中,测试参数包括:数据库连接参数、任务类型、配置文件位置、调度参数、日志、以及测试报告位置,数据库连接参数包括:数据库服务器地址、服务器端口、数据库实例名、用户名、密码;任务类型包括:用于指示进行普通结构化查询语言SQL脚本数据库命令的审计测试任务、以及用于指示进行包含绑定变量数据库命令的审计测试任务;
线程控制单元,用于并根据需要进行测试的数据库的类型,创建一个或多个线程,其中,线程用于控制相应类型的数据库的数据库任务执行过程。
综上所述,首先需要配置测试参数,例如,数据库连接参数、任务类型、配置文件位置、调度参数、日志及测试报告位置等;读取预设的数据库连接参数,连接相应数据库,根据任务类型加载对应配置文件,生成数据库任务;通过调度参数控制数据库任务的执行速度和次数,构造不同速率和数量的数据库协议数据;在日志中记录执行过程,执行完后根据参数自动连接审计产品获取审计结果,利用连接参数及日志检测审计结果的正确性,生成测试报告。通过上述处理,本发明实施例具有以下有益效果:
1、本发明实施例采用客户环境中常用方式连接数据库服务器,产生数据库访问数据。集成常见数据库驱动,无需安装客户端即可方便完成数据库协议数据的构造,增强了易用性,节省了资源。
2、本发明实施例采用动态加载技术,使支持的数据库类型可配置,可以方便的通过修改配置文件、集成新的驱动,支持新的数据库类型。可以同时进行多种数据库协议审计测试。
3、本发明实施例通过并发控制,可以同时创建多个线程,每个线程完成对一种数据库协议数据构造过程的独立控制,从而可以同时进行多种数据库协议审计测试。
4、本发明实施例通过参数控制协议数据生成的速率和数量,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
5、数据库协议数据测试中通常需要关注两种数据的测试,一种是执行普通数据库命令的协议数据,这种协议数据可以通过执行预置的SQL语句来生成;一种是包含绑定变量的协议数据,这种协议数据的格式与前一种不同,数据包前面部分是包含变量的数据库命令,紧随其后的是变量的赋值,这种应用在一些动态网页中比较常见,这种协议数据可以通过执行预置的预备语句配置文件来生成。
6、待执行的SQL语句和预备语句均采用独立于调度过程的配置文件进行配置。可以根据不同的测试目标、数据库特征随时编写不同的脚本或预备语句配置文件,通过不断补充、完善可以完成对数据库所有命令的全面测试。
以下结合附图,对本发明实施例的上述装置进行详细的说明。图6是本发明实施例的数据库协议审计测试装置的详细结构示意图,如图6所示,该装置包括:
数据库连接单元610,用于根据数据库参数连接指定类型的数据库,建立数据库连接,为执行数据库命令做准备;
数据库任务执行单元611,根据任务类型,按顺序执行SQL脚本中的数据库命令,或者执行预置的预备语句;
任务调度单元614,根据调度参数的配置,按照设定的间隔和循环次数,控制数据库任务执行单元执行数据库任务,并可以随时终止任务执行或者在停止后重新开始执行任务。在执行过程中会记录执行日志。
测试结果分析单元617,获取审计结果,根据连接参数和执行日志分析审计结果的正确性,生成测试报告。
具体的,上述数据库任务执行单元进一步包括:SQL脚本和预备语句配置文件解析子单元612和数据库任务执行子单元613。
当进行普通数据库命令审计测试时,解析子单元612读取SQL脚本文件,根据脚本格式逐批获取SQL语句,生成数据库命令发送给数据库任务执行子单元613。当进行包含绑定变量的数据库命令审计测试时,解析子单元612加载预备语句配置文件,解析文件内容,逐条获取文件中的记录,生成普通数据库命令或预备语句并赋值,发送给数据库任务执行子单元613。
数据库任务执行子单元613,用于执行收到的数据库命令,并处理数据库返回的命令执行结果。
该装置中任务调度单元614包含任务调度子单元615和日志记录子单元616。任务调度单元615用于调度任务执行。日志记录子单元616用于在调度过程中向日志文件输出每条数据库命令的执行时间、执行的命令、命令执行结果、测试停止时循环的总次数、测试结束时间等信息,这些信息用于在执行结束后验证数据库审计产品的审计结果。
本发明提供的数据库协议审计集中测试装置,通过解析预编写的sql脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,可以同时进行六种数据库协议审计测试,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
图2是本发明实施例的数据库协议审计测试方法详细处理的流程图,如图2所示,包括如下处理:
步骤S201,根据要测试的数据库种类,动态加载数据库驱动程序,读取预先配置的数据库参数,利用这些参数构造数据库连接串,打开数据库连接。数据库连接参数通常包括数据库服务器地址、服务器端口、数据库实例名(或服务名)、用户名、密码等。
步骤S202,读取任务类型参数,该参数用于指定进行普通sql脚本数据库命令的审计测试,或者进行包含绑定变量的数据库命令审计测试。
如果选择的是绑定变量测试,则需要从测试参数指定位置加载预备语句配置文件。通过预备语句配置文件可以生成两种数据库命令,一种是普通的数据库命令,一种是包含绑定变量的预备语句。对数据库进行操作前,需要先进行一些初始化的操作,例如,创建数据库、创建表等,这些操作可以在数据库中预先建好,也可以在配置文件中写好,每次执行时自动创建。预备语句配置文件中配置的普通数据库命令主要是用来完成初始化操作,为执行预备语句做准备,是可选的配置。要创建并执行一个预备语句,需要两方面的信息:1、创建预备语句的字符串;2、为各变量所赋的值,及类型。综上所述,配置文件中应具有如下特征及信息:
1、普通数据库命令和预备语句的区别标志;
2、一条记录的开始和结束标记,一条记录或者可以生成一个普通数据库命令,或者可以生成一个已经被赋值的预备语句命令;
3、创建预备语句的字符串;
4、为预备语句中各变量所赋的值及类型。
5、第4点中所赋的值与被赋值的预备语句应该具有明确的对应关系,即:能明确说明变量是为此预备语句赋值而不是为另一个预备语句赋值。
在本步骤中,会逐条读取配置文件中的记录,生成数据库命令并交给调度单元执行。
从本步骤中描述的预备语句配置文件的内容可以看到预备语句配置文件也可以生成普通的数据库命令,但由于预备语句配置文件格式复杂,对其进行解析处理的过程也比较复杂,因此本发明实施例为构造普通数据库命令单独设计了更简单的SQL脚本格式,以加快对普通数据库命令的处理速度。
如果选择的不是绑定变量测试,则需要从测试参数指定位置加载SQL脚本。本发明实施例为SQL脚本规定了特定的格式和分割标记,解析时通过识别该分隔符判断SQL脚本中一批数据库任务的开始结束位置。在本步骤中,会逐批读取脚本文件中的数据库命令,发送到调度单元执行。
步骤S203,在获得步骤S202中生成的数据库命令或预备语句后,本步骤将执行命令并处理命令的返回结果。具体地,根据测试参数中设定的执行间隔时间,在处理完一批或一条命令后暂停一定的间隔时间,用于调整任务的执行速度,从而控制数据库协议数据的生成速率。间隔时间以毫秒计时,当设置为0时表示不设间隔连续执行命令。在执行过程中需要在日志中记录数据库任务的执行时间、执行的内容和执行结果。执行过程中设置计数器记录已执行命令的总数。执行过程可以手动停止,也可以重新开始。执行停止后,显示本次测试执行过的命令总数。
S204,将数据库审计系统的审计结果和日志文件中记录的数据库命令执行过程进行自动对比。可以从数据库名、用户名、数据库命令总数、单条数据库命令审计正确性、操作结果、执行顺序、执行时间等方面核对审计系统审计结果的准确性。
步骤S202至步骤S204描述了一种数据库协议数据生成及数据库审计测试的方法。通过并发,可以同时创建多个线程,每个线程均可独立完成步骤S101至步骤S204的功能,从而使本发明实施例可以同时完成多个或多种数据库协议审计测试。
通过本发明实施例提供的方法,设置测试参数,打开数据库连接,解析预编写的SQL脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,可以同时进行多种数据库协议审计测试,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
下面以一优选的实例来详细阐述本发明实施例提供的数据库协议审计集中测试方法的具体实现过程。本实例提供的数据库协议审计集中测试方法是对数据库审计产品审计功能进行测试的方法,通过参数连接数据库,加载指定的SQL脚本或预备语句配置文件,生成数据库任务,并根据参数控制数据库任务的执行速度和次数,以产生数据库协议测试数据,进行数据库审计测试,并根据数据库执行过程中记录的日志对数据库协议审计结果进行验证,从而检验审计结果的正确性。本实例支持对六种数据库协议进行审计测试,解决了在现有测试方法中手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题,可以节省资源提高测试效率。
图3是本发明实施例的数据库协议审计集中测试方法实现过程的流程图,如图3所示,包括如下处理:
步骤S301,配置测试参数,并根据进行测试的数据库类型,创建一个线程,用于控制该类型数据库协议数据的生成过程。通过并发控制,本实例支持同时对多种数据库协议进行测试。
步骤S302,根据测试参数中的数据库连接参数,打开数据库连接。例如,连接oracle数据库需配置数据库服务器地址、服务器端口、数据库实例名、数据库用户名、数据库用户密码。
步骤S303,根据测试参数中的任务类型对测试过程进行不同的配置。包含两种选择:绑定变量测试和普通数据库任务测试。如果配置的是绑定变量测试,则执行步骤S304;如果配置的是普通数据库任务测试,则执行步骤S305。
步骤S304,从指定位置加载并解析预备语句配置文件,读取一条记录,根据记录的类型生成普通数据库命令或预备语句命令,并执行命令。同时需记录命令执行开始时间、执行的命令、执行结果。逐条处理预备语句配置文件,直至文件末尾,完成对预备语句配置文件的一次处理过程。
本实例中预备语句配置文件采用xml文件存储。根据S202中对预备语句配置文件的特征描述,配置文件格式如下:
Figure BDA0000119414060000231
配置文件中包含2类子标签:normalStatement用于配置普通数据库命令,它的SQL属性是SQL语句内容;Preparedstatement用于配置预备语句。其中Preparedstatement又包含两种子标签,command用于配置预备语句内容;variable用于给预备语句赋值,一个variable节点可以为预备语句赋一个变量值,赋值的位置、类型、值分别用variable的location、type、value属性配置。
一个配置文件只能包含一个preparedstatementTest,一个preparedstatementTest节点下可以包含若干normalStatement或Preparedstatement。一个Preparedstatement中只能包含一个command及多个variable,variable个数由预备语句待赋值的变量个数决定。
本实例中考虑到在循环执行过程中会多次访问预备语句配置文件的内容,而且绑定变量测试重点在于测试到所有变量类型,配置文件内容不必包含过多语句,因此采用DOM解析预备语句配置文件。该方法会一次性读入配置文件内容,然后构建一个驻留内存的树结构,以后对配置文件的访问通过访问内存中的树结构来完成,加快处理效率。
步骤S305,从指定位置加载SQL脚本,根据脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,并执行命令,同时需记录命令执行开始时间、执行的命令、执行结果。逐条处理SQL脚本文件,直至文件末尾,完成对SQL脚本文件的一次处理过程。
本实施例中SQL脚本采用文本文件存储。根据S202中对SQL脚本的特征描述,SQL脚本文件格式如下:
Sql command1
go
sql command2
go
……
为了解析方便,该文件中批结束符“go”必须单行存储,所有SQL命令必须从一行开头开始编写,但可以分多行编写。
S306,在日志中记录对预备语句配置文件或SQL脚本的处理次数。
S307,判断S306中的处理次数是否达到测试参数中配置的总循环次数,如果达到,转步骤S308;如果未达到,转步骤S303。
S308,记录日志执行总条数和结束时间。
S309,根据配置参数获取审计产品的审计结果,例如,本实例中通过可配置的条件从审计产品的数据库中查询审计结果并将其保存。根据步骤S302中的数据库名、用户名等参数检测审计结果中还原的数据库名和用户名是否正确;根据S308步骤中记录的执行日志,从还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间等方面检测审计结果是否正确。根据检测的结果产生测试报告,总体说明数据库审计的效果。
下面通过一简单示例来具体说明上述数据库协议审计测试的过程。
例如,要完成对oracle数据库审计测试,在测试开始前首先配置以下测试参数:
DataBase type:oracle                                 #数据库类型
ServerAddress:192.168.73.88                          #数据库地址
ServerPort:1521                                      #数据库端口
Instance:test                                        #数据库实例名
User:system                                          #数据库用户名
Password:testoracle                                  #数据库密码
PreparedstatementTest:true                           #绑定变量测试
PreparedstatementConfigFilePath:D:\prepConfig.xml    #预备语句配置文件位置
LogfilePath:D:\test.log                              #执行日志文件位置
ExecutionInteval:1000                                #命令执行间隔,单位毫秒
Times:100                                            #循环执行次数
接下来创建一个线程,用于控制oracle协议数据构造过程。该线程根据数据库连接参数连接指定数据库实例,打开数据库连接。
然后,加载预备语句配置文件prepConfig.xml,解析并处理该文件。结合步骤S202中的配置文件的格式,在某一具体示例中,本实施例的预备语句配置关键部分具体实现为:
Figure BDA0000119414060000271
图4是本发明实施例的对预备语句配置文件的解析过程的流程图,如图4所示,包括以下步骤:
S401,从指定位置加载预备语句,在本实例中,可以从D:\prepConfig.xml读入配置文件,在内存中构建一个树结构,该树结构的二级节点用于生成数据库命令。
S402,获取树结构二级节点列表,从列表中读取下一个记录。
S403,判断当前读到的这个记录是普通数据库语句还是预备语句,如果是预备语句,转步骤S404;如果是普通数据库命令,转步骤S405。在本实例中,配置文件中preparedstatement表示预备语句,normalStatement表示普通数据库命令。
S404,创建预备语句并为预备语句变量赋值。preparedstatement包含多个子标签,第一个标签command的prep属性是用于创建预备语句的参数值,其他的都是variable标签,用于为预备语句赋值。根据本例配置文件中的Preparedstatement标签,可以生成如下预备语句:
String command=″insert into table1 values(?,?,?,?,?)″;//该变量值从preparedstatement的command子标签读取
PreparedStatement prep=con.prepareStatement(command);//创建一个预备语句
prep.setString(1,″test″);//根据variable标签的位置、类型属性为预备语句赋值
prep.setInt(2,5);
prep.setShort(3,(short)5);
prep.setBoolean(4,true);
prep.setDouble(5,(double)5.0);
S405,创建普通数据库命令。根据normalStatement标签的SQL属性创建普通数据库命令。根据本例配置文件中的normalStatement标签,可以生成如下命令:
String command=″create table table1(column1  varchar(20),column2 int,column3  smallint,column4 bit,column5 real)″;//该变量值从normalStatement标签读取。
S406,数据库命令执行前在日志文件中记录时间。本实例是在D:\test.log中记录当前时间。
S407,执行数据库命令,处理执行结果,并将执行的命令和结果记录在日志文件中。
S408,一条命令执行完后暂定指定的间隔。本例中每条命令执行后都会暂停1000ms。
S409,判断是否到达列表末尾,如果到达,继续步骤S306及后续处理;如果没有到达末尾,转步骤S402。
对列表进行完一次处理后,即完成一次执行过程,在日志文件中记录循环执行次数。然后判断是否达到设定的总次数,本实例中设定的总次数是100。如果没有达到总次数,则返回步骤S402重新处理一次列表,直至达到100次;如果达到总次数,则在日志中记录执行数据库命令的总条数和当前时间,结束本次测试。然后根据日志文件检验数据库审计产品的审计结果,生成测试报告。
上例详细说明了包含绑定变量的数据库审计测试过程,如果要进行普通SQL语句的测试,只需在测试开始前将参数PreparedstatementTest设置成false。普通SQL脚本存放在脚本文件中,对该文件的处理比较简单,按顺序读取脚本中的命令,生成普通数据库命令并执行。本实例中脚本文件的一部分配置如下:
Figure BDA0000119414060000281
Figure BDA0000119414060000291
本实例中所有SQL命令均从行首开始,单行存储的go是批结束符。对该文件的处理过程如下:
步骤1、逐行获取文件内容,如果该行内容不是“go”,拼接在字符串尾部,继续读下一行;如果是“go”,则一批结束,转步骤2。
步骤2、用第一步读到的字符串创建数据库命令;
步骤3、日志中记录时间,执行数据库命令,处理执行结果,在日志中记录字符串的内容和执行结果。
步骤4、判断文件是否结束。如未结束转步骤1;如结束,转步骤S306继续后续处理。
通过本发明实施例提供的数据库协议审计集中测试方法,解析预编写的SQL脚本或预备语句配置文件生成数据库任务,并对数据库任务执行速度进行控制,产生数据库协议测试数据,可以同时进行六种数据库协议审计测试,有效解决了手工反复构造测试数据效率低,测试数据速率和数量不易控制的问题。
综上所述,1、本发明实施例可以生成包含任意类型绑定变量的数据库访问数据,从而完成对包含绑定变量的数据库数据的审计测试。绑定变量测试通过解析预先编写好的预备语句配置文件,生成包含绑定变量的数据协议数据来进行测试。2、SQL脚本或预备语句配置文件独立于调度过程,支持动态扩充,可以根据不同的测试目标、数据库特征随时编写不同的脚本或预备语句配置文件。通过不断补充、完善可以完成对数据库所有命令的全面测试。3、通过预设的测试参数控制各类数据库协议数据生成的速率和总量。任务类型用于控制进行普通SQL脚本数据库命令的审计测试,或者进行包含绑定变量的数据库命令审计测试;执行间隔和总数(总数是指执行过程中设置计数器记录已执行命令的总数)用于控制数据库任务的执行速度和次数,构造不同速率和数量的数据库协议数据,进行数据库协议审计测试。4、自动获取审计结果,将数据库执行过程中记录的日志信息、连接信息与审计结果进行对比,验证审计结果的正确性,按照预定格式生成测试报告。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

Claims (10)

1.一种数据库协议审计测试方法,其特征在于,包括:
根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
执行所述数据库任务,并根据预先设置的调度参数控制执行所述数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据;
在预先设置的日志中记录执行所述数据库任务的过程,在执行完成后自动连接审计产品,并获取所述审计产品针对所述数据库协议数据的审计结果;
根据所述数据库连接参数以及所述日志中记录的所述数据库任务的执行过程检测所述审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
2.如权利要求1所述的方法,其特征在于,在根据预先设置的数据库连接参数连接相应的数据库之前,所述方法还包括:
预先配置测试参数,根据需要进行测试的数据库的类型,创建一个或多个线程,其中,所述线程用于控制相应类型的数据库的数据库任务执行过程,其中,所述测试参数包括:所述数据库连接参数、所述任务类型、所述配置文件位置、所述调度参数、所述日志、以及所述测试报告位置,所述数据库连接参数包括:数据库服务器地址、服务器端口、数据库实例名、用户名、密码;所述任务类型包括:用于指示进行普通结构化查询语言SQL脚本数据库命令的审计测试任务、以及用于指示进行包含绑定变量数据库命令的审计测试任务。
3.如权利要求2所述的方法,其特征在于,在确定所述任务类型为指示进行包含绑定变量数据库命令的审计测试任务的情况下,执行所述数据库任务具体包括:
步骤1,采用文档对象模型DOM方式从指定的所述配置文件位置加载并解析预备语句配置文件;
步骤2,读取所述预备语句配置文件中的一条记录,根据记录的类型生成普通数据库命令或者预备语句命令,并执行所述普通数据库命令或者所述预备语句命令;
步骤3,重复执行步骤2,直至所述预备语句配置文件的所有记录全部执行完毕。
4.如权利要求2所述的方法,其特征在于,在确定所述任务类型为指示进行普通SQL脚本数据库命令的审计测试任务的情况下,执行所述数据库任务具体包括:
步骤1,从指定的所述配置文件位置加载SQL脚本;
步骤2,根据预先设置的脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,执行所述普通数据库命令;
步骤3,重复执行步骤2,直到所述SQL脚本的数据库命令全部执行完毕。
5.如权利要求3或4所述的方法,其特征在于,所述在预先设置的日志中记录执行所述数据库任务的过程具体包括:
在所述日志中记录对所述备语句配置文件或所述SQL脚本的处理次数,执行命令的开始时间、执行的命令、以及命令执行结果,在确定所述处理次数达到所述调度参数中预先设置的处理次数的情况下,在所述日志中记录执行的总次数和结束时间。
6.如权利要求5所述的方法,其特征在于,根据所述数据库连接参数以及所述日志中记录的所述数据库任务的执行过程检测所述审计结果的正确性具体包括:
根据所述数据库连接参数检测所述审计结果中还原的数据库名和用户名是否正确,并根据所述日志中的记录检测所述审计结果中还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间是否正确。
7.一种数据库协议审计测试装置,其特征在于,包括:
数据库连接单元,用于根据预先设置的数据库连接参数连接相应的数据库,并根据预先设置的任务类型以及配置文件位置加载对应的配置文件,生成数据库任务;
数据库任务执行单元,用于执行所述数据库任务;
任务调度单元,用于根据预先设置的调度参数控制执行所述数据库任务的执行次数和执行速率,获取不同速率和数量的数据库协议数据,在预先设置的日志中记录执行所述数据库任务的过程;
测试结果分析单元,用于在执行完成后自动连接审计产品,并获取所述审计产品针对所述数据库协议数据的审计结果;根据所述数据库连接参数以及所述日志中记录的所述数据库任务的执行过程检测所述审计结果的正确性,并在预先指定的测试报告位置生成测试报告。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
配置单元,用于预先配置测试参数,其中,所述测试参数包括:所述数据库连接参数、所述任务类型、所述配置文件位置、所述调度参数、所述日志、以及所述测试报告位置,所述数据库连接参数包括:数据库服务器地址、服务器端口、数据库实例名、用户名、密码;所述任务类型包括:用于指示进行普通结构化查询语言SQL脚本数据库命令的审计测试任务、以及用于指示进行包含绑定变量数据库命令的审计测试任务;
线程控制单元,用于并根据需要进行测试的数据库的类型,创建一个或多个线程,其中,所述线程用于控制相应类型的数据库的数据库任务执行过程。
9.如权利要求8所述的装置,其特征在于,所述数据库任务执行单元具体用于:
在确定所述任务类型为指示进行包含绑定变量数据库命令的审计测试任务的情况下,采用文档对象模型DOM方式从指定的所述配置文件位置加载并解析预备语句配置文件;读取所述预备语句配置文件中的一条记录,根据记录的类型生成普通数据库命令或者预备语句命令,并执行所述普通数据库命令或者所述预备语句命令,直至所述预备语句配置文件的所有记录全部执行完毕;
在确定所述任务类型为指示进行普通SQL脚本数据库命令的审计测试任务的情况下,从指定的所述配置文件位置加载SQL脚本;根据预先设置的脚本格式和分割标记提取一批数据库命令,生成普通数据库命令,执行所述普通数据库命令,直到所述SQL脚本的数据库命令全部执行完毕。
10.如权利要求9所述的装置,其特征在于,
所述任务调度单元具体用于:在所述日志中记录对所述备语句配置文件或所述SQL脚本的处理次数,执行命令的开始时间、执行的命令、以及命令执行结果,在确定所述处理次数达到所述调度参数中预先设置的处理次数的情况下,在所述日志中记录执行的总次数和结束时间;
所述测试结果分析单元具体用于:根据所述数据库连接参数检测所述审计结果中还原的数据库名和用户名是否正确,并根据所述日志中的记录检测所述审计结果中还原的数据库命令总数、单条命令还原的正确性、执行结果的正确性、执行顺序、执行时间是否正确。
CN201110414390.3A 2011-12-13 2011-12-13 一种数据库协议审计测试方法及装置 Active CN102521354B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110414390.3A CN102521354B (zh) 2011-12-13 2011-12-13 一种数据库协议审计测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110414390.3A CN102521354B (zh) 2011-12-13 2011-12-13 一种数据库协议审计测试方法及装置

Publications (2)

Publication Number Publication Date
CN102521354A true CN102521354A (zh) 2012-06-27
CN102521354B CN102521354B (zh) 2017-02-08

Family

ID=46292268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110414390.3A Active CN102521354B (zh) 2011-12-13 2011-12-13 一种数据库协议审计测试方法及装置

Country Status (1)

Country Link
CN (1) CN102521354B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810196A (zh) * 2012-11-09 2014-05-21 阿里巴巴集团控股有限公司 基于业务模型进行数据库性能测试的方法
CN104618192A (zh) * 2015-02-12 2015-05-13 网神信息技术(北京)股份有限公司 数据库审计设备的测试方法和装置
CN106712993A (zh) * 2015-11-16 2017-05-24 任子行网络技术股份有限公司 一种审计设备的管理方法及系统
CN107193902A (zh) * 2017-05-11 2017-09-22 北京交通大学 一种解析和还原Caché数据库通讯协议中SQL命令的方法
CN107491538A (zh) * 2017-08-23 2017-12-19 成都安恒信息技术有限公司 一种db2数据库的存储过程命令及参数值提取方法
CN107797916A (zh) * 2016-11-14 2018-03-13 平安科技(深圳)有限公司 Ddl语句审核方法和装置
CN107918737A (zh) * 2016-10-10 2018-04-17 北京奇虎科技有限公司 压力测试数据的传输方法、装置及系统
CN107943693A (zh) * 2017-11-21 2018-04-20 北京安博通科技股份有限公司 应用软件审计测试方法及装置、应用软件审计测试系统
CN110109809A (zh) * 2019-04-08 2019-08-09 武汉思普崚技术有限公司 根据syslog测试日志审计功能的方法及设备
CN110555011A (zh) * 2018-03-29 2019-12-10 深信服科技股份有限公司 应用审计失效识别方法、装置、系统以及可读存储介质
CN111125066A (zh) * 2019-12-26 2020-05-08 杭州迪普科技股份有限公司 检测数据库审计设备功能的方法及装置
CN111651429A (zh) * 2020-05-26 2020-09-11 中国平安财产保险股份有限公司 一种大数据调度参数管理方法、装置及分布式平台
CN112835778A (zh) * 2021-02-25 2021-05-25 紫光云技术有限公司 一种rds数据库性能的通用测试方法、电子设备、服务器
CN114721958A (zh) * 2022-04-18 2022-07-08 四创科技有限公司 一种多数据库系统的接口自动化测试方法及终端

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101556550A (zh) * 2009-05-22 2009-10-14 北京星网锐捷网络技术有限公司 一种自动化测试日志分析方法和装置
CN102141962B (zh) * 2011-04-07 2013-06-19 北京航空航天大学 一种安全性分布式测试框架系统及其测试方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810196B (zh) * 2012-11-09 2017-09-22 阿里巴巴集团控股有限公司 基于业务模型进行数据库性能测试的方法
CN103810196A (zh) * 2012-11-09 2014-05-21 阿里巴巴集团控股有限公司 基于业务模型进行数据库性能测试的方法
CN104618192B (zh) * 2015-02-12 2020-08-21 网神信息技术(北京)股份有限公司 数据库审计设备的测试方法和装置
CN104618192A (zh) * 2015-02-12 2015-05-13 网神信息技术(北京)股份有限公司 数据库审计设备的测试方法和装置
CN106712993A (zh) * 2015-11-16 2017-05-24 任子行网络技术股份有限公司 一种审计设备的管理方法及系统
CN107918737B (zh) * 2016-10-10 2021-09-07 北京奇虎科技有限公司 压力测试数据的传输方法、装置及系统
CN107918737A (zh) * 2016-10-10 2018-04-17 北京奇虎科技有限公司 压力测试数据的传输方法、装置及系统
CN107797916A (zh) * 2016-11-14 2018-03-13 平安科技(深圳)有限公司 Ddl语句审核方法和装置
CN107797916B (zh) * 2016-11-14 2020-04-28 平安科技(深圳)有限公司 Ddl语句审核方法和装置
CN107193902A (zh) * 2017-05-11 2017-09-22 北京交通大学 一种解析和还原Caché数据库通讯协议中SQL命令的方法
CN107193902B (zh) * 2017-05-11 2020-04-17 北京交通大学 一种解析和还原Caché数据库通讯协议中SQL命令的方法
CN107491538A (zh) * 2017-08-23 2017-12-19 成都安恒信息技术有限公司 一种db2数据库的存储过程命令及参数值提取方法
CN107943693A (zh) * 2017-11-21 2018-04-20 北京安博通科技股份有限公司 应用软件审计测试方法及装置、应用软件审计测试系统
CN110555011A (zh) * 2018-03-29 2019-12-10 深信服科技股份有限公司 应用审计失效识别方法、装置、系统以及可读存储介质
CN110555011B (zh) * 2018-03-29 2021-07-06 深信服科技股份有限公司 应用审计失效识别方法、装置、系统以及可读存储介质
CN110109809A (zh) * 2019-04-08 2019-08-09 武汉思普崚技术有限公司 根据syslog测试日志审计功能的方法及设备
CN111125066A (zh) * 2019-12-26 2020-05-08 杭州迪普科技股份有限公司 检测数据库审计设备功能的方法及装置
CN111125066B (zh) * 2019-12-26 2023-09-26 杭州迪普科技股份有限公司 检测数据库审计设备功能的方法及装置
CN111651429A (zh) * 2020-05-26 2020-09-11 中国平安财产保险股份有限公司 一种大数据调度参数管理方法、装置及分布式平台
CN111651429B (zh) * 2020-05-26 2023-10-24 中国平安财产保险股份有限公司 一种大数据调度参数管理方法、装置及分布式平台
CN112835778A (zh) * 2021-02-25 2021-05-25 紫光云技术有限公司 一种rds数据库性能的通用测试方法、电子设备、服务器
CN114721958A (zh) * 2022-04-18 2022-07-08 四创科技有限公司 一种多数据库系统的接口自动化测试方法及终端

Also Published As

Publication number Publication date
CN102521354B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN102521354A (zh) 一种数据库协议审计测试方法及装置
CN110309071B (zh) 测试代码的生成方法及模块、测试方法及系统
CN108959080B (zh) 一种基于UnitTest并行执行的自动化测试方法
US7913229B2 (en) Computer-implemented system for generating automated tests from a web application
CN101377759A (zh) 自动化界面测试系统
JP2010524060A (ja) 分散コンピューティングにおけるデータマージング
CN102122265A (zh) 一种计算机软件测试结果的验证方法及系统
CN106682036A (zh) 一种数据交换系统及其交换方法
CN110750458A (zh) 大数据平台测试方法、装置、可读存储介质及电子设备
CN102736939A (zh) 一种软件安装方法、装置和系统
CN112035363A (zh) 接口自动化测试方法及装置
CN114880240B (zh) 一种物联网设备自动化测试系统、方法、存储介质及设备
CN110377524B (zh) 报表系统的测试方法、装置、系统及介质
CN111767227A (zh) 一种录制回放测试的方法及装置
CN103810092A (zh) 应用系统测试方法及装置
CN112115058A (zh) 测试方法及装置、测试用例生成方法及装置、测试系统
CN114297961A (zh) 一种芯片测试用例处理方法及相关装置
CN108932121B (zh) 一种面向多租户分布式服务组件研发的模块及方法
CN111552648A (zh) 用于应用的自动验证方法和系统
CN111880860A (zh) 一种业务处理方法、装置及相关设备
US20070233818A1 (en) Recording medium storing input/output screen generation program, and method for suppressing an unreasonable screen shift
CN116701208A (zh) 一种芯片中内核模块的验证方法、系统、芯片和设备
CN114924963A (zh) 网页兼容性测试的分布式执行方法、装置、设备及介质
CN112114794B (zh) 网站应用程序自动生成方法、装置和计算机存储介质
CN111258838B (zh) 验证组件生成方法、装置、存储介质及验证平台

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant before: Beijing heaven melts letter Science Technologies Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES CO., LTD. TO: BEIJING TOPSEC TECHNOLOGY CO., LTD.

C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant before: BEIJING TOPSEC TECHNOLOGY CO., LTD.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: BEIJING TOPSEC TECHNOLOGY CO., LTD. TO: BEIJING HEAVEN MELTS LETTER SCIENCE TECHNOLOGIES CO., LTD.

CB02 Change of applicant information

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant after: BEIJING TOPSEC TECHNOLOGY CO., LTD.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Applicant before: Beijing heaven melts letter Science Technologies Co., Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee after: Beijing heaven melts letter Science Technologies Co., Ltd.

Address before: 100085 Beijing East Road, No. 1, building No. 301, building on the north side of the floor, room 3, room 3

Patentee before: BEIJING TOPSEC TECHNOLOGY CO., LTD.