一种验证解码数据库封包的测试方法及装置与流程

文档序号:16536473发布日期:2019-01-08 19:56阅读:355来源:国知局
本发明涉及数据库测试领域,特别涉及一种验证解码数据库封包的测试方法及装置。
背景技术
::数据库安全审计产品主要用于监视并记录对数据库服务器的各类操作行为,通过对网络数据的分析,实时地、智能地解析对数据库服务器的各种操作,并记入审计数据库中以便日后进行查询、分析、过滤,从而实现对目标数据库系统的用户操作的监控和审计。目前,市面上大多数数据库安全审计产品都存在对数据库封包解码异常,或者漏解码数据库封包中部分字段的缺陷,特别是包含了多条复杂sql语句的数据库封包,很容易出现解码异常或者漏解码部分字段。为了避免出现解码异常或者漏解码部分字段的情况,通常都需要对解码后的数据库封包中的内容进行测试。而现有技术在进行测试的过程中,针对每个版本的每一轮测试,都需要对解码后的数据库封包中的内容进行回归测试,以验证解码后的数据库封包功能是否正常。因此,现有的这种测试方式存在有如下缺陷:不仅在测试的过程中需要投入大量的人力资源,而且在繁冗复杂的数据面前人也容易产生疲劳,并进而导致出现测试误差。技术实现要素:本发明要解决的技术问题,在于提供一种验证解码数据库封包的测试方法,通过该测试方法不仅可大量减少人力资源的投入,而且还能避免人为分析测试结果数据时造成的误差,并精准地验证数据库封包的内容。本发明是这样实现的:一种验证解码数据库封包的测试方法,所述方法包括:步骤s1、读取数据库封包,并验证数据库封包中包含的标志;步骤s2、调用解码程序对数据库封包进行解码,将解码后的数据保存至一指定文本中;步骤s3、从指定文本中读取数据,根据关键字统计出数据库封包中所包含的记录总数;步骤s4、轮询遍历指定文本中每条记录所包含的关键字总数以及每个关键字的键值,将各个关键字的键值均与对应的预期值进行比对,并生成测试结果;步骤s5、通过测试报告生成器将测试结果展现在页面上。进一步地,在所述步骤s1中,所述数据库封包中包含的标志包括第一次握手、第二次握手、第三次握手以及tcp连接关闭的标志。更进一步地,所述数据库封包中包含的标志还包括有数据传送的标志。更进一步地,所述步骤s1具体为:读取数据库封包,并验证数据库封包中是否包含第一次握手、第二次握手、第三次握手以及tcp连接关闭的标志,且如果是,则说明所要测试的数据库封包是一个合法完整的封包,此时进入步骤s2;如果否,则说明所要测试的数据库封包不是一个合法完整的封包,此时直接结束测试流程。进一步地,所述记录中包含的关键字包括:数据库协议类型、数据库名、目标地址ip、目标地址端口号、数据库连接状态、完整的sql语句、sql语句中的table、sql语句中的column、sql语句中的value或者相应sql语句的应答结果。进一步地,在所述步骤s4中,所述测试结果中包含各个关键字的键值、各个关键字所对应的预期值以及对比状态。进一步地,所述步骤s5具体为:通过测试报告生成器将测试结果展现在html页面上。本发明具有如下优点:1、通过本发明方法只需一次编写好自动化测试脚本后,就可以进行多次使用,不仅可大量减少人力资源的投入,而且还能避免人为分析测试结果数据时造成的误差,并精准地验证数据库封包的内容。2、将各个关键字的键值、各个关键字所对应的预期值以及对比状态均展现在html页面上,可以帮助研发人员快速发现并定位数据库封包中没有被正常解码的关键字。附图说明下面参照附图结合实施例对本发明作进一步的说明。图1为本发明一种验证解码数据库封包的测试方法的执行流程图。具体实施方式请参阅图1所示,本发明一种验证解码数据库封包的测试方法的较佳实施例,所述方法包括:步骤s1、读取数据库封包,并验证数据库封包中包含的标志;步骤s2、调用解码程序对数据库封包进行解码,将解码后的数据保存至一指定文本中,例如,可以将解码后的数据保存到decode_result.txt形式的文本中;步骤s3、从指定文本中读取数据,根据关键字统计出数据库封包中所包含的记录总数;步骤s4、轮询遍历指定文本中每条记录所包含的关键字总数以及每个关键字的键值,将各个关键字的键值均与对应的预期值进行比对,并生成测试结果;步骤s5、通过测试报告生成器将测试结果展现在页面上。本发明的测试方法在具体实施时,只需一次编写好自动化测试脚本后,就可以进行多次使用,特别适合常规的版本回归测试。经过实际测试,解码300个50kb以上的数据库封包其耗时小于1小时,因此,不仅可大量减少人力资源的投入,而且还能避免人为分析测试结果数据时造成的误差。在所述步骤s1中,所述数据库封包中包含的标志包括第一次握手[syn]、第二次握手[syn,ack]、第三次握手[ack]以及tcp连接关闭[fin,ack]的标志。其中,第一次握手[syn]表示建立tcp连接;第二次握手[syn,ack]表示服务器确认客户的连接请求;第三次握手[ack]表示客户端在接收到服务端的确认包后,向服务端发送的确认包;tcp连接关闭[fin,ack]表示关闭建立的tcp连接。在本发明中,所述第一次握手[syn]、第二次握手[syn,ack]、第三次握手[ack]以及tcp连接关闭[fin,ack]的标志都是必须要进行验证的。所述数据库封包中包含的标志还包括有数据传送[psh,ack]的标志,该有数据传送[psh,ack]表示客户端与服务器端之间有数据传送,在本发明中,该有数据传送[psh,ack]在具体验证时是可选的。所述步骤s1具体为:读取数据库封包,并验证数据库封包中是否包含第一次握手[syn]、第二次握手[syn,ack]、第三次握手[ack]以及tcp连接关闭[fin,ack]的标志(当然,如果还选择验证有数据传送[psh,ack]的标志,则还需要对有数据传送[psh,ack]进行验证),且如果是,则说明所要测试的数据库封包是一个合法完整的封包,此时进入步骤s2;如果否,则说明所要测试的数据库封包不是一个合法完整的封包,此时直接结束测试流程。本发明在具体实施时,一般包含一条sql通讯语句的数据库即可作为一条记录,所述记录中包含的关键字包括:数据库协议类型、数据库名、目标地址ip、目标地址端口号、数据库连接状态、完整的sql语句、sql语句中的table、sql语句中的column、sql语句中的value或者相应sql语句的应答结果。在所述步骤s4中,所述测试结果中包含各个关键字的键值、各个关键字所对应的预期值以及对比状态(即通过或者不通过)。所述步骤s5具体为:通过测试报告生成器将测试结果展现在html页面上,采用html页面可以更直观更友好的展现出测试结果。综上所述,本发明具有如下优点:1、通过本发明方法只需一次编写好自动化测试脚本后,就可以进行多次使用,不仅可大量减少人力资源的投入,而且还能避免人为分析测试结果数据时造成的误差,并精准地验证数据库封包的内容。2、将各个关键字的键值、各个关键字所对应的预期值以及对比状态均展现在html页面上,可以帮助研发人员快速发现并定位数据库封包中没有被正常解码的关键字。虽然以上描述了本发明的具体实施方式,但是熟悉本
技术领域
:的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1