基于动态规划算法的数据库软件升级检测系统及方法与流程

文档序号:11261844阅读:164来源:国知局
本发明涉及软件测试
技术领域
:,具体涉及一种基于动态规划算法的数据库软件升级检测系统及方法。
背景技术
::一般情况下,计算机软件在设计最初,由于设计人员考虑不全面或程序功能不完善,在运行过程中,会不断出现新的问题。有些是代码漏洞引起的故障,有些是软硬件之间新出现的兼容性问题,也有些是用户在使用过程中提出的新需求。这些问题一般通过软件升级到更新的版本来解决,还能够提高性能,完善功能,增强软件的竞争力。因此,软件升级在后期维护中愈加重要,不可或缺。软件研发发布的一系列版本,一般要求比较高的版本支持从低版本的升级,这就是软件升级。例如某个软件发布了version1.0、version2.0两大版本;针对version1.0又分别发布了若干补丁版本,例如version1.0servicepack1、version1.0servicepack2等;针对version2.0发布若干补丁版本。以大版本升级为例(暂不考虑补丁版本),该软件新开发version3.0版本需要支持如下升级路径测试如下:(1)支持从version1.0升级到version3.0;(2)支持从version2.0升级到version3.0;(3)支持从version1.0升级到version2.0,再升级到version3.0;前两种升级测试路径是显然的,后一种升级测试路径也是实际需要的,因为全新安装的version2.0版本和从version1.0升级得到的version2.0版本是会存在差异的,虽然对客户来说这种差异往往是感觉不明显的,但是在数据库结构与数据上往往会存在差异。可以看出,随着发布版本的增加,版本升级测试路径将越来越多。假设已经发布了n(n>=1)个软件版本(即存在n个源版本),那么发布第n+1个软件版本时,需要测试的升级路径数就是c(n,1)+c(n,2)+c(n,3)+…+c(n,n)=2^n-1。另外,如果软件支持多种操作系统与数据库类型组合,例如windows+sqlserver中/英文、linux+oracle中/英文、solaris+oracle中/英文,那么升级测试路径再把测试环境考虑上(ω表示测试环境个数),测试路径组合数就变为ω(2^n-1)。随着版本数目的增多,测试路径数可以说是爆炸式增长的。同时,要进行一次版本升级测试,都需要经过若干过程(源版本软件安装、源版本软件基本数据的生成和一定量的历史数据产生、升级过程,以及升级后一致性测试等环节),需要消耗的人力与占用服务器资源是比较高的。目前,版本升级过程的测试大体先后经历三个主要的时期:升级故障频发期、升级故障验证初期、升级测试回归期。版本升级测试任务就是发现升级模块存在的故障、修改故障、验证故障,最终输出一个对外发布的升级软件版本。在升级故障频发期,故障较多,升级过程无法顺利进行。经过实践证明:此时切入自动化测试是不合适的,此时需要测试人员精心挖掘潜在故障,在版本相对稳定后才切入自动化测试。因为版本升级过程中,各步骤间是串行进行的。因此,在升级故障频发期和升级故障验证初期,使用一种半自动化测试方式;在升级验证回归期,使用全自动化测试方式。但是,由于在升级故障频发期和升级故障验证初期采用人工与自动化结合的半自动测试方式,测试较慢。若是在升级检测初期(升级故障频发期和升级故障验证初期),每条升级路径都去检测,这类似于穷举法,检测速度较慢,升级程序错误搜索效率较低,需大量投入时间与人力。尤其在版本升级过程中,数据库应用程序测试需要在数据库实例(数据库状态)下运行测试用例,而测试结果也与数据库状态有关。相同的数据库结构在不同数据库数据记录下形成的不同数据库状态,会导致相同测试用例的不同测试输出,由于升级测试路径组合数指数增长,数据库状态组合数也随之指数增长,在实际测试中,也是需大量投入时间与人力,成本是非常高的。针对上述出现的技术问题,版本升级过程中数据库的软件升级路径搜索速度慢,测试效率低,成本高的问题,是当前需要解决的问题。技术实现要素:本发明的目的是克服现有技术中版本升级过程中数据库的软件升级路径搜索速度慢,测试效率低,成本高的问题。本发明的基于动态规划算法的数据库软件升级检测系统及方法,解决了数据库的软件升级测试效率低,成本高的问题,提高了数据库的软件升级测试效率,降低了测试成本,具有良好的应用前景。为了达到上述目的,本发明所采用的技术方案是:一种基于动态规划算法的数据库软件升级检测系统,其特征在于:包括依次连接的设计模块、第一获取模块、第二获取模块和第一检测模块,所述设计模块,用于根据有向图设计动态规划算法,选取数据库软件升级的最短路径和关键路径,优先对最短路径和关键路径进行静态测试,最短路径和关键路径分别是有向图路径上各边权值和的最小值和最大值;所述第一获取模块,用于获取待测试软件数据库的升级程序语句,截取所述升级程序语句中的变更语句,所述变更语句为已发布软件数据库的实例转变为所述待测试软件数据库的实例的语句;所述第二获取模块,用于获取已发布软件数据库的初始化语句,并从所述初始化语句中抽取与所述变更语句中数据库表名相对应的数据库表以及字段信息,所述数据库表以及字段信息包括约束信息和字段类型信息;第一检测模块,用于在检测所述变更语句的执行是否违反所述数据库表以及字段信息内的约束信息,以及检测所述变更语句是否匹配所述数据库表以及字段信息内的字段类型信息。前述的基于动态规划算法的数据库软件升级检测系统,其特征在于:还包括判断模块和第二检测模块,所述判断模块分别与第一获取模块、第一检测模块相连接,用于扫描所述升级程序语句是否存在判断语句;所述第二检测模块与判断模块相连接,用于若存在的所述判断语句,则检测对应的变更语句的执行是否违反所述约束信息。前述的基于动态规划算法的数据库软件升级检测系统,其特征在于:所述已发布软件数据库的已发布软件包括所述待测试软件数据库中待测软件支持的所有源版本软件,且已发布软件和所述待测软件所用软件的版本号唯一确定。前述的基于动态规划算法的数据库软件升级检测系统,其特征在于:所述已发布软件数据库的初始化语句为待测试软件数据库需要执行的数据库语句。前述的基于动态规划算法的数据库软件升级检测系统,其特征在于:所述变更语句,至少包括以下之一:插入insert语句、删除delete语句、更新update语句、创建create语句、删除表drop语句、修改alter语句;所述约束信息,至少包括以下之一:主键约束、外键约束、唯一unique约束、检查check约束、缺省default定义、允许空值;所述字段类型信息,至少包括以下之一:字段类型、字段最大宽度。一种基于动态规划算法的数据库软件升级检测方法,其特征在于:包括以下步骤,步骤(a),根据有向图设计动态规划算法,获取数据库软件升级的最短路径和关键路径,优先对最短路径和关键路径进行静态测试,最短路径和关键路径分别是有向图路径上各边权值和的最小和最大的路径;步骤(b),获取待测试软件数据库的升级程序语句,截取该升级程序语句中的变更语句,所述变更语句为已发布软件数据库的实例转变为该待测试软件数据库的实例的语句;步骤(c),获取已发布软件数据库的初始化语句,并从该初始化语句中抽取与该变更语句中数据库表名对应的数据库表以及字段信息,所述数据库表以及字段信息,包括约束信息和字段类型信息;步骤(d),检测所述变更语句的执行是否违反数据库表以及字段信息内的约束信息后,继续检测所述变更语句是否匹配数据库表以及字段信息内的字段类型信息。前述的基于动态规划算法的数据库软件升级检测方法,其特征在于:步骤(b),还包括扫描所述升级程序语句是否存在判断语句;若存在的所述判断语句,则检测所述变更语句的执行是否违反所述约束信息。前述的基于动态规划算法的数据库软件升级检测方法,其特征在于:步骤(c),所述已发布软件数据库的已发布软件包括所述待测试软件数据库中待测软件支持的所有源版本软件,且已发布软件和所述待测软件所用软件的版本号唯一确定。前述的基于动态规划算法的数据库软件升级检测方法,其特征在于:所述已发布软件数据库的初始化语句为待测试软件数据库需要执行的数据库语句。前述的基于动态规划算法的数据库软件升级检测方法,其特征在于:所述变更语句,至少包括以下之一:插入insert语句、删除delete语句、更新update语句、创建create语句、删除表drop语句、修改alter语句;所述约束信息,至少包括以下之一:主键约束、外键约束、唯一unique约束、检查check约束、缺省default定义、允许空值;所述字段类型信息,至少包括以下之一:字段类型、字段最大宽度。本发明的有益效果是:本发明的基于动态规划算法的数据库软件升级检测系统及方法,解决了数据库的软件升级测试效率低,成本高的问题,提高了数据库的软件升级测试效率,降低了测试成本,实现快速地、不需要动态安装搭建测试环境,可提前发现数据库应用软件升级程序错误的静态测试方法,在一定程度上降低了由于升级路径爆炸式增长导致的高成本测试投入的风险,提高了路径和程序错误搜索效率,为尽早发现程序错误,尽早将升级软件版本推向市场提供了保障,具有良好的应用前景。附图说明图1是本发明的基于动态规划算法的数据库软件升级检测系统的系统框图;图2是本发明的基于动态规划算法的数据库软件升级检测方法的流程图;图3是本发明的第三实施例数据库软件升级检测方法的流程图;图4是本发明的第三实施例数据库软件升级检测方法的扫描待测试软件数据库升级程序的流程图;图5是本发明的第三实施例数据库软件升级检测方法的扫描已发布软件数据库初始化程序的流程图;图6是本发明的第三实施例数据库软件升级检测方法的变更语句错误检测的流程图。具体实施方式下面将结合说明书附图,对本发明作进一步的说明。如图1所示,本发明的基于动态规划算法的数据库软件升级检测系统,包括依次连接的设计模块1、第一获取模块2、第二获取模块3和第一检测模块4,所述设计模块1,用于根据有向图设计动态规划算法,选取数据库软件升级的最短路径和关键路径,优先对最短路径和关键路径进行静态测试,最短路径和关键路径分别是有向图路径上各边权值和的最小值和最大值;所述第一获取模块2,用于获取待测试软件数据库的升级程序语句,截取所述升级程序语句中的变更语句,所述变更语句为已发布软件数据库的实例转变为所述待测试软件数据库的实例的语句;所述第二获取模块3,用于获取已发布软件数据库的初始化语句,并从所述初始化语句中抽取与所述变更语句中数据库表名相对应的数据库表以及字段信息,所述数据库表以及字段信息包括约束信息和字段类型信息;第一检测模块4,用于在检测所述变更语句的执行是否违反所述数据库表以及字段信息内的约束信息,以及检测所述变更语句是否匹配所述数据库表以及字段信息内的字段类型信息。优选的本发明的基于动态规划算法的数据库软件升级检测系统,还包括判断模块5和第二检测模块6,所述判断模块5分别与第一获取模块2、第一检测模块4相连接,用于扫描所述升级程序语句是否存在判断语句;所述第二检测模块6与判断模块5相连接,用于若存在的所述判断语句,则检测对应的变更语句的执行是否违反所述约束信息。优选的所述已发布软件数据库的已发布软件包括所述待测试软件数据库中待测软件支持的所有源版本软件,且已发布软件和所述待测软件所用软件的版本号唯一确定。优选的所述已发布软件数据库的初始化语句为待测试软件数据库需要执行的数据库语句。优选的所述变更语句,至少包括以下之一:插入insert语句、删除delete语句、更新update语句、创建create语句、删除表drop语句、修改alter语句;所述约束信息,至少包括以下之一:主键约束、外键约束、唯一unique约束、检查check约束、缺省default定义、允许空值;所述字段类型信息,至少包括以下之一:字段类型、字段最大宽度。本发明的基于动态规划算法的数据库软件升级检测模块,解决了数据库的软件升级搜索速度慢,测试效率低,成本高的问题,提高了数据库的软件升级路径搜索速度及测试效率,降低了测试成本。根据上述的基于动态规划算法的数据库软件升级检测模块的数据库软件升级检测方法,如图2所示,包括以下步骤,步骤(a),根据有向图设计动态规划算法,获取数据库软件升级的最短路径和关键路径,优先对最短路径和关键路径进行静态测试,最短路径和关键路径分别是有向图路径上各边权值和的最小和最大的路径;步骤(b),获取待测试软件数据库的升级程序语句,截取该升级程序语句中的变更语句,所述变更语句为已发布软件数据库的实例转变为该待测试软件数据库的实例的语句,本步骤还还包括扫描所述升级程序语句是否存在判断语句;若存在的所述判断语句,则检测所述变更语句的执行是否违反所述约束信息;步骤(c),获取已发布软件数据库的初始化语句,并从该初始化语句中抽取与该变更语句中数据库表名对应的数据库表以及字段信息,所述数据库表以及字段信息,包括约束信息和字段类型信息,所述已发布软件数据库的已发布软件包括所述待测试软件数据库中待测软件支持的所有源版本软件,且已发布软件和所述待测软件所用软件的版本号唯一确定;所述已发布软件数据库的初始化语句为待测试软件数据库需要执行的数据库语句;步骤(d),检测所述变更语句的执行是否违反数据库表以及字段信息内的约束信息后,继续检测所述变更语句是否匹配数据库表以及字段信息内的字段类型信息。所述变更语句,至少包括以下之一:插入insert语句、删除delete语句、更新update语句、创建create语句、删除表drop语句、修改alter语句;所述约束信息,至少包括以下之一:主键约束、外键约束、唯一unique约束、检查check约束、缺省default定义、允许空值;所述字段类型信息,至少包括以下之一:字段类型、字段最大宽度。本发明的基于动态规划算法的数据库软件升级检测方法,实现快速地、不需要动态安装搭建测试环境,可提前发现数据库应用软件升级程序错误的静态测试方法,在一定程度上降低了由于升级路径爆炸式增长导致的高成本测试投入的风险,提高了路径和程序错误搜索效率,为尽早发现程序错误,尽早将升级软件版本推向市场提供了保障。下面根据本发明的基于动态规划算法的数据库软件升级检测系统及方法,介绍第一实施例的数据库软件升级检测方法,包括以下步骤,步骤(1),获取最短路径和关键路径的动态规划算法,优先选用最短路径和关键路径进行静态测试;步骤(2),获取待测试软件数据库升级程序语句,在所述变更语句中获取到数据库表名;步骤(3),获取已发布软件数据库初始化语句,获取步骤2)得到的数据库表名对应表以及字段信息;步骤(4),检测步骤(2)得到的变更语句前是否存在判断语句,判断语句目的在于检查该变更语句的执行是否违反步骤(3)得到的对应数据库表及字段约束信息;继续检测步骤(3)得到的变更语句是否违反步骤(3)得到的对应数据库表各字段类型信息。上述的数据库软件升级检测方法,所述步骤(1)关于最短路径和关键路径分别是有向图路径上各边权值和的最小和最大的路径;所述步骤(2)关于数据库变更语句是将数据库实例从一种状态转变为另一种实例状态的语句,也就是将已发布软件数据库实例转变为新的待测试软件数据库实例的语句,变更语句是数据库升级程序语句的核心内容;所述步骤(2)数据库升级程序语句信息将用于步骤(4)的检测过程。上述的数据库软件升级检测方法,所述步骤(3)关于已发布软件可以是待测试软件需要支持升级的所有源版本软件,使用软件版本号唯一确定;所述步骤(3)关于数据库初始化语句是全新安装数据库应用软件需要执行的数据库语句;所述步骤(3)数据库表及字段信息将用于步骤(4)的检测过程。上述数据库软件升级检测方法,所述步骤(4)关于判断语句是一种选择性判断,也就是说如果判断语句结果为真,则执行其后的数据库变更语句;如果判断语句结果为假,则不执行其后的数据库变更语句。以确保数据库变更语句的正确执行。如图3所示,本发明优选的第二实施例,包括三个步骤,步骤(11):针对输入的待测试数据库应用软件版本,获取其数据库升级程序变更语句,具体而言,所述数据库程序语言可以为任意一种结构化查询语言(sql),数据库可以为所有关系型数据库。所述数据库升级程序变更语句包括insert、delete、update、create、drop、alter语句。不需要安装待测试数据库应用软件,只需要提供待测试数据库应用软件文件;如图4所示,上述步骤(11)的流程示意图,包括四个步骤:步骤1101:针对输入的待测试数据库应用软件版本,扫描其升级程序,所述升级程序就是该软件用于升级已发布软件版本时需要执行的程序集合;步骤1102:在升级程序中获取数据库升级程序语句,数据库升级程序语句在步骤(13)中将再次使用;步骤1103:获取数据库升级程序变更语句;步骤1104:在数据库升级程序变更语句中截取数据库表名,所述截取过程依据结构化查询语言语法规则。举例而言,若扫描升级程序后得到的数据库升级语句集合中,存在一条变更语句,insertintopm_nepodef_table(mocid,netypeid,poid,poname,podes,potablename)values('an_port','zxdsl9852v','50009','igmp端口统计','igmp端口统计','zxdsl9852v_50009'),依据语法规则“insertintotable(columns)values(columnsvalues)”,可以抽取出表名pm_nepodef_table,并将包含该变更语句在内的所有数据库升级程序语句集合储存备用;步骤(12):针对输入的已发布数据库应用软件,获取数据库初始化语句,具体而言,所述已发布数据库应用软件可以为任意一个已经发布过的需要待测试应用软件支持升级的源版本,所述数据库初始化程序语句为全新安装该版本应用软件过程中初始执行的数据库程序语句,不需要安装已发布数据库应用软件,只需要提供已发布数据库应用软件文件,依据版本号来定位版本,如图5所示,步骤(12)的流程示意图,包括三个步骤:步骤1201:针对输入的已发布数据库应用软件,扫描其安装程序。所述安装程序就是该软件用于初始安装时需要执行的程序集合;步骤1202:在安装程序中依据步骤1得到的数据库表名定向搜索获取表的初始化程序;步骤1203:抽取数据库表及字段信息,包括约束信息和字段类型信息。所述约束信息包括主键约束、外键约束、unique约束、check约束、default定义、允许空值;所述字段类型信息包括字段类型、字段最大宽度,所述数据库表及字段信息将用于步骤(13),举例而言,扫描得到已发布数据库应用软件数据库初始化程序语句,依据数据库表名pm_nepodef_table锁定相关初始化程序语句为:依据语法规则,抽取约束信息和字段类型信息,最终结果如下表1展示:表1步骤(13):检测步骤(11)得到的变更语句前是否存在正确的判断,检测步骤(11)得到的变更语句是否违反步骤(12)得到的数据库初始化语句,具体而言,所述判断语句可以是任意结构化查询语言中判断语句,该语句结果为真或者假,用于控制后续一段语句的执行与否,如图6所示,步骤(13)的流程示意图,包括两个步骤:步骤1301:在步骤(11)所得数据库升级程序语句集合中对应数据库变更语句前搜索是否存在判断语句,判断语句目的在于检查该变更语句的执行是否违反步骤(12)得到的对应数据库表及字段约束信息,如果存在,则进一步检测是否有效于该变更语句,也就是说判断其是否违反步骤(12)得到的表的约束信息;步骤1302:在步骤(11)所得数据库变更语句中检测其中涉及的字段值是否与步骤(12)得到的字段类型以及字段最大宽度相匹配,举例而言,示例insertintotable(columns)values(columnvalues)变更语句错误检测,首先,在待测数据库应用软件升级程序集合中的变更语句insertintopm_nepodef_table(mocid,netypeid,poid,poname,podes,potablename)values('an_port','zxdsl9852v','50009','igmp端口统计','igmp端口统计','zxdsl9852v_50009')前搜索是否存在判断语句,例如如果存在如下语句:ifexists(select*frompm_nepodef_tablewherenetypeid='zxdsl9852v'andmocid='an_port'andpoid='50009'andpotablename='zxdsl9852v_50009')则进一步检测对应字段是否包含主键约束,netypeid,mocid,poid,potablename,并且对应字段值是否与变更语句中字段值类型一致或者前者包含后者的范围。在所述步骤中,还需要检测变更语句中所有涉及的字段,(mocid,netypeid,poid,poname,podes,potablename)对应的取值'an_port','zxdsl9852v','50009','igmp端口统计','igmp端口统计','zxdsl9852v_50009'在类型、在字段宽度上是否与表pm_nepodef_table的字段类型信息相匹配。综上所述,本发明的基于动态规划算法的数据库软件升级检测方法,解决了数据库的软件升级测试效率低,成本高的问题,提高了数据库的软件升级测试效率,降低了测试成本,实现快速地、不需要动态安装搭建测试环境,可提前发现数据库应用软件升级程序错误的静态测试方法,在一定程度上降低了由于升级路径爆炸式增长导致的高成本测试投入的风险,提高了路径和程序错误搜索效率,为尽早发现程序错误,尽早将升级软件版本推向市场提供了保障,具有良好的应用前景。以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可根据具体情况,选择设计合适的动态规划算法,不限于某种特定的优化算法,并借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行上述实施例方法步骤的程序代码:在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例的方法步骤。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1