CN103699682B - 一种数据库结构逻辑校验方法 - Google Patents
一种数据库结构逻辑校验方法 Download PDFInfo
- Publication number
- CN103699682B CN103699682B CN201310754950.9A CN201310754950A CN103699682B CN 103699682 B CN103699682 B CN 103699682B CN 201310754950 A CN201310754950 A CN 201310754950A CN 103699682 B CN103699682 B CN 103699682B
- Authority
- CN
- China
- Prior art keywords
- verified
- objects
- depends
- proceed
- code
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据库结构逻辑校验方法,包括:从MSSQL数据库中获取到所有的对象列表,分析可以进行校验的对象;将上述可以进行校验的对象进行过滤,如果这个对象有被其他对象所依赖,则需要进行校验;对需要校验的对象进行方法校验,依次校验后得出结果;字段类型校正及再校验。本发明提供的一种数据库结构逻辑校验方法,提升数据库结构逻辑校验的效率和正确率,从而提高软件产品的开发速率与质量。
Description
【技术领域】
本发明属于数据库技术领域,具体涉及一种数据库结构逻辑校验方法。
【背景技术】
MSSQL是一种关系型数据库***,其构成包含表、视图、存储过程、函数等一系列对象,并且它的对象之间是可以相互调用并存在依赖的。如果调用的时候对象与对象之间接口存在差异,比如存储过程调用了表,并且使用了表中的某个参数进行赋值,而赋值的对象与被赋值的对象类型不一致,就会导致错误,严重的甚至造成数据库***无法使用。而MSSQL自身只能对单一的对象进行校验,比如只能校验单个表自身的逻辑是否正确,无法校验对象与对象之间的依赖逻辑是否正确。目前为了避免该现象的发生,均是靠人工细心设计来避免。但由于数据库***本身的庞大,人为的设计难免会产生疏漏。即使有测试人员来校验,其工作量也是相当庞大,且无法达到100%的校验覆盖率。
有鉴于此,本发明人针对现有技术的缺陷深入研究,遂有本案产生。
【发明内容】
本发明所要解决的技术问题在于提供一种数据库结构逻辑校验方法,提升数据库结构逻辑校验的效率和正确率,从而提高软件产品的开发速率与质量。
一种数据库结构逻辑校验方法,包括如下步骤:
步骤1:从MSSQL数据库中获取到所有的对象列表,分析可以进行校验的对象;
步骤2:将上述可以进行校验的对象进行过滤,如果这个对象有被其他对象所依赖,则需要进行校验;
步骤3:对需要校验的对象进行方法校验,依次校验后得出结果;
步骤4:字段类型校正及再校验。
进一步地,所述步骤1中,分析可校验对象,具体包括:
从sysobjects***表中查看所有对象;视图、存储过程、函数、规则过滤;如果是上述四种对象,则可以进行校验。
进一步地,所述步骤2,具体包括:
步骤2a:从步骤1中获取可以进行校验的对象名,使用sp_depends方法查看对象是否存在依赖;
步骤2b:sp_depends结果为空,表明该对象没有存在依赖,则不需要进行校验,继续判断下一个对象名;
步骤2c:sp_depends结果不为空,表明该对象存在与其他对象的依赖,则需要进行与其他对象的兼容性校验。
进一步地,所述步骤3中,具体包括:
步骤3a:从步骤2中获取需要校验的对象,命名为A;
步骤3b:使用sp_depends方法查看对象A的依赖信息;
步骤3c:sp_depends的结果显示对象A依赖于多个对象,以及体现具体依赖对象的具体字段,把依赖对象命名为C,依赖对象的字段命名为D;
步骤3d:使用sp_depends查看对象A的逻辑内容;
步骤3e:代码文本校验。
进一步地,所述步骤3e,具体包括:
步骤100:查找对象A的逻辑代码中的declare关键字;
步骤101:截取被申明的变量名,命名为B;
步骤102:查找变量B在对象A的代码中是否有被赋值或被比较,被变量赋值或比较的,转入步骤104;被固定参数赋值或比较的,转入步骤103;
步骤103:不需要校验;
步骤104:截取被赋值或被比较的变量名,命名为E;
步骤105:与D进行匹配,得出E的依赖对象C;
步骤106:判断对象C的属性,如果C是表,转入步骤107;如果C不是表,转入步骤108;
步骤107:使用sp_help查看对象C的内容,判断变量E在对象C中的类型,转入步骤110;
步骤108:使用sp_helptext查看对象C的逻辑代码;
步骤109:搜索C代码中declare的关键字,判断E在C代码中被定义时的类型;
步骤110:判断B与E的类型是否一致,一致转入步骤112;不一致转入步骤111;
步骤111:记录B与E的类型差异,记录B与E的对象来源;
步骤112:表明不会存在逻辑问题。
进一步地,所述步骤4,具体包括:
得出A对象的B与C对象的E字段类型不一致,则进行B与E的类型统一,然后重复步骤2-3,直到将MSSQL数据库中所有的对象校验通过。
本发明的优点在于:1、在MSSQL的基础上,将所有具备依赖的对象关联起来,进行一个接口的校验,从而实现整个***的接口一致性。2、弥补了黑盒测试无法检测出该问题的不足,传统黑盒测试由于无法查看到对象内容,导致无法高效遍历出所有数据库对象之间的接口问题,通过MSSQL自身的查询功能可以获知各对象的内容。3、即使数据库设计错误,通过该方法可以校验出数据库***内各对象之间的接口是否一致,从而高效的找出设计的结构错误。4、提高了传统白盒测试的执行效率,传统白盒测试无法完全遍历代码,一是遍历的效率较低,二是遍历的准确率不高,三是白盒测试的成本过高。
【附图说明】
下面参照附图结合实施例对本发明作进一步的描述。
图1是本发明方法流程示意图。
图2是本发明中分析可校验对象的具体流程图。
图3是本发明中过滤需要被校验的对象的具体流程图。
图4是本发明中校验方法具体流程图。
图5是本发明中文本校验具体流程图。
图6是本发明中字段类型校正及再校验具体流程图。
【具体实施方式】
如图1所示,一种数据库结构逻辑校验方法,包括如下步骤:
步骤1:从MSSQL数据库中获取到所有的对象列表,分析可以进行校验的对象;
步骤2:将上述可以进行校验的对象进行过滤,如果这个对象有被其他对象所依赖,则需要进行校验;
步骤3:对需要校验的对象进行方法校验,依次校验后得出结果;
步骤4:字段类型校正及再校验。
其中,步骤1中,分析可校验对象,如图2所示,具体包括:
从sysobjects***表中查看所有对象;视图、存储过程、函数、规则过滤;如果是上述四种对象,则可以进行校验。
MSSQL数据库中存在一张***表sysobjects,这张表中记录MSSQL中所有的对象列表,可以根据表字段xtype辩别对象类型。表是最小单元,不会存在下级依赖,故不需要进行校验。
视图、存储过程、函数、规则均是会引用到表对象的对象,或引用到其他对象,故有需要被校验的必要。
其中,步骤2,如图3所示,具体包括:
步骤2a:从步骤1中获取可以进行校验的对象名,使用sp_depends方法查看对象是否存在依赖;
步骤2b:sp_depends结果为空,表明该对象没有存在依赖,则不需要进行校验,继续判断下一个对象名;;
步骤2c:sp_depends结果不为空,表明该对象存在与其他对象的依赖,则需要进行与其他对象的兼容性校验。(sp_depends是MSSQL自带的逻辑方法,通过该方法可以查询出某对象的依赖情况,依赖情况以表的形式体现。)
其中,步骤3,如图4所示,具体包括:
步骤3a:从步骤2中获取需要校验的对象,命名为A;
步骤3b:使用sp_depends方法查看对象A的依赖信息;
步骤3c:sp_depends的结果显示对象A依赖于多个对象,以及体现具体依赖对象的具体字段,把依赖对象命名为C,依赖对象的字段命名为D;
步骤3d:使用sp_depends查看对象A的逻辑内容;
步骤3e:代码文本校验。(通过遍历代码文本进行自动化的白盒测试)。如图5所示,该步骤具体包括:
步骤100:查找对象A的逻辑代码中的declare关键字;(declare是定义的语法,表明有变量被申明。)
步骤101:截取被申明的变量名,命名为B;
步骤102:查找变量B在对象A的代码中是否有被赋值或被比较,(通过关键字:〉、〈、=、〈〉、!=、in、between判断参数B在代码中是否有被赋值或被比较,)被变量赋值或比较的,转入步骤104;被固定参数赋值或比较的,转入步骤103;
步骤103:不需要校验;(被固定参数赋值或比较的,由于该情况没有涉及变量,故不需要校验)
步骤104:截取被赋值或被比较的变量名,命名为E;
步骤105:与D进行匹配,得出E的依赖对象C;
步骤106:判断对象C的属性,如果C是表,转入步骤107;如果C不是表,转入步骤108;
步骤107:使用sp_help查看对象C的内容,判断变量E在对象C中的类型,(sp_help是MSQQL自带的逻辑方法,用于查看表对象的结构,)转入步骤110;
步骤108:使用sp_helptext查看对象C的逻辑代码;
步骤109:搜索C代码中declare的关键字,判断E在C代码中被定义时的类型;
步骤110:判断B与E的类型是否一致,一致转入步骤112;不一致转入步骤111;
步骤111:记录B与E的类型差异,记录B与E的对象来源;
步骤112:表明不会存在逻辑问题。
其中,步骤4中,如图6所示,具体包括:
得出A对象的B与C对象的E字段类型不一致,类型不一致导致引用的时侯出错,则告知研发人员进行B与E的类型统一,然后重复步骤2-3,直到将MSSQL数据库中所有的对象校验通过。
本发明在MSSQL的基础上,将所有具备依赖的对象关联起来,进行一个接口的校验,从而实现整个***的接口一致性。弥补了黑盒测试无法检测出该问题的不足,传统黑盒测试由于无法查看到对象内容,导致无法高效遍历出所有数据库对象之间的接口问题,通过MSSQL自身的查询功能可以获知各对象的内容。即使数据库设计错误,通过该方法可以校验出数据库***内各对象之间的接口是否一致,从而高效的找出设计的结构错误。提高了传统白盒测试的执行效率,传统白盒测试无法完全遍历代码,一是遍历的效率较低,二是遍历的准确率不高,三是白盒测试的成本过高。
以上所述仅为本发明的较佳实施用例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种数据库结构逻辑校验方法,其特征在于:包括如下步骤:
步骤1:从MSSQL数据库中获取到所有的对象列表,分析可以进行校验的对象;
步骤2:将上述可以进行校验的对象进行过滤,如果这个对象有被其他对象所依赖,则需要进行校验;具体包括:
步骤2a:从步骤1中获取可以进行校验的对象名,使用sp_depends方法查看对象是否存在依赖;
步骤2b:sp_depends结果为空,表明该对象没有存在依赖,则不需要进行校验,继续判断下一个对象名;
步骤2c:sp_depends结果不为空,表明该对象存在与其他对象的依赖,则需要进行与其他对象的兼容性校验;
步骤3:对需要校验的对象进行方法校验,依次校验后得出结果;
步骤4:字段类型校正及再校验。
2.如权利要求1所述的一种数据库结构逻辑校验方法,其特征在于:所述步骤1中,分析可校验对象,具体包括:
从sysobjects***表中查看所有对象;视图、存储过程、函数、规则过滤;如果是上述四种对象,则可以进行校验。
3.如权利要求1或2所述的一种数据库结构逻辑校验方法,其特征在于:所述步骤3,具体包括:
步骤3a:从步骤2中获取需要校验的对象,命名为A;
步骤3b:使用sp_depends方法查看对象A的依赖信息;
步骤3c:sp_depends的结果显示对象A依赖于多个对象,以及体现具体依赖对象的具体字段,把依赖对象命名为C,依赖对象的字段命名为D;
步骤3d:使用sp_depends查看对象A的逻辑内容;
步骤3e:代码文本校验。
4.如权利要求3所述的一种数据库结构逻辑校验方法,其特征在于:所述步骤3e具体包括:
步骤100:查找对象A的逻辑代码中的declare关键字;
步骤101:截取被申明的变量名,命名为B;
步骤102:查找变量B在对象A的代码中是否有被赋值或被比较,被变量赋值或比较的,转入步骤104;被固定参数赋值或比较的,转入步骤103;
步骤103:不需要校验;
步骤104:截取被赋值或被比较的变量名,命名为E;
步骤105:与D进行匹配,得出E的依赖对象C;
步骤106:判断对象C的属性,如果C是表,转入步骤107;如果C不是表,转入步骤108;
步骤107:使用sp_help查看对象C的内容,判断变量E在对象C中的类型,转入步骤110;
步骤108:使用sp_helptext查看对象C的逻辑代码;
步骤109:搜索C代码中declare的关键字,判断E在C代码中被定义时的类型;
步骤110:判断B与E的类型是否一致,一致转入步骤112;不一致转入步骤111;
步骤111:记录B与E的类型差异,记录B与E的对象来源;
步骤112:表明不会存在逻辑问题。
5.如权利要求4所述的一种数据库结构逻辑校验方法,其特征在于:所述步骤4,具体包括:
得出A对象的B与C对象的E字段类型不一致,则进行B与E的类型统一,然后重复步骤2-3,直到将MSSQL数据库中所有的对象校验通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754950.9A CN103699682B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库结构逻辑校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754950.9A CN103699682B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库结构逻辑校验方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699682A CN103699682A (zh) | 2014-04-02 |
CN103699682B true CN103699682B (zh) | 2017-02-15 |
Family
ID=50361210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310754950.9A Active CN103699682B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库结构逻辑校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699682B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708897B (zh) * | 2015-11-17 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 一种数据仓库质量保障方法、装置和*** |
CN107203407B (zh) * | 2016-03-18 | 2020-06-23 | 龙芯中科技术有限公司 | Java虚拟机中的数据校验方法及装置 |
CN109597763B (zh) * | 2018-12-04 | 2022-02-25 | 北京广利核***工程有限公司 | 一种对多项数据进行归一化的一致性验证方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814074A (zh) * | 2009-02-24 | 2010-08-25 | 上海众恒信息产业股份有限公司 | 一种信息***数据的校验方法及装置 |
CN103034738A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7580974B2 (en) * | 2006-02-16 | 2009-08-25 | Fortinet, Inc. | Systems and methods for content type classification |
-
2013
- 2013-12-31 CN CN201310754950.9A patent/CN103699682B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814074A (zh) * | 2009-02-24 | 2010-08-25 | 上海众恒信息产业股份有限公司 | 一种信息***数据的校验方法及装置 |
CN103034738A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法 |
Non-Patent Citations (2)
Title |
---|
SQL Server存储过程浅析;陈晓姗;《计算机与网络》;20091225;第170-172页 * |
基于异构数据复杂关联比对方法的研究与应用;孙靖怡;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090315;第I138-447页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103699682A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104035867B (zh) | 基于Android的应用功能遍历测试方法 | |
CN104077401B (zh) | 用于数据库的数据迁移装置和数据迁移方法 | |
CN103838672B (zh) | 一种通用报表的自动化测试方法及装置 | |
CN105138461B (zh) | 一种应用程序的接口测试方法及装置 | |
CN103235759B (zh) | 测试用例生成方法和装置 | |
CN104317722B (zh) | 一种基于Junit的单元测试方法及装置 | |
CN104484461B (zh) | 一种基于百科数据对实体进行分类的方法及*** | |
CN105373476B (zh) | 汽车控制器中自动测试用例的生成方法和*** | |
CN106354634A (zh) | 接口测试方法及装置 | |
CN106156083A (zh) | 一种领域知识处理方法及装置 | |
CN105975392A (zh) | 一种基于抽象语法树的重复代码检测方法及装置 | |
CN104407779B (zh) | 图形界面的排列显示方法及装置 | |
CN104461846B (zh) | 检测应用程序耗电量的方法和装置 | |
CN103699682B (zh) | 一种数据库结构逻辑校验方法 | |
CN105930409A (zh) | 基于动态生成规则的数据校验方法及装置 | |
CN106980560A (zh) | 一种基于icd数据库多总线协议测试及仿真方法和平台 | |
CN110765639A (zh) | 一种电气仿真建模方法、装置及可读存储介质 | |
CN109446107A (zh) | 一种源代码检测方法及装置、电子设备 | |
CN104615544A (zh) | 面向问题的gui软件关联功能分析方法及装置 | |
CN104133768A (zh) | 一种程序代码复查方法和装置 | |
CN107193930A (zh) | 一种网站敏感词屏蔽方法 | |
López-Fernández et al. | Meta-model validation and verification with metabest | |
CN106055641B (zh) | 一种面向智能机器人的人机交互方法及装置 | |
Wu et al. | They know your weaknesses–do you?: Reintroducing common weakness enumeration | |
CN109933794A (zh) | 一种基于本体owl技术的决策本体建模方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Zhan Junting Inventor after: Chen Feng Inventor before: Zhan Junting |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |