利用sql语句自动生成测试数据的方法和装置的制作方法

文档序号:6353327阅读:583来源:国知局
专利名称:利用sql语句自动生成测试数据的方法和装置的制作方法
技术领域
本发 明涉及程序测试,尤其涉及利用SQL语句自动生成测试数据的方法和装置。
背景技术
在基于数据库的软件系统中,针对数据库操作的功能点是整个软件系统的关键功 能点,因此,基于数据库的软件系统中SQL语句的正确与否,能够直接影响软件系统的鲁棒 性。所以对基于数据库的软件系统中的SQL语句的测试非常重要。在对SQL语句进行测试时,通常是没有真实数据的,而SQL语句测试又是一个非常 繁琐的过程,在缺少能充分暴露设计缺陷的真实测试数据情况下,致使大量问题无法在测 试过程中被发现,某些问题一旦逃逸出去后,带来的后果将是灾难性的。目前,针对SQL语句功能点的测试,测试人员依赖对基于数据库的软件系统功能 需求的理解,测试人员自己设计测试数据进行测试,但是,由于测试人员素质和技能的差 异,仅依靠测试人员手工生成测试数据,不能保证测试数据全面性,并且随着测试进度的推 进,测试数据不断增加,浪费人力资源。

发明内容
本发明的实施例提供一种利用SQL语句自动生成测试数据的方法和装置,可以有 效的保证测试数据全面性,且节省人力资源,提高效率。为达到上述目的,本发明的实施例采用如下技术方案—种利用SQL语句自动生成测试数据的方法,包括读取输入的待测试软件,获取所述待测试软件中的SQL语句;根据所述SQL语句中的限定条件生成测试数据。一种利用SQL语句自动生成测试数据的装置,包括获取单元,用于读取输入的待测试软件,获取所述待测试软件中的SQL语句;生成单元,用于根据所述SQL语句中的限定条件生成测试数据。本发明实施例提供的利用SQL语句自动生成测试数据的方法和装置,通过运行计 算机程序,根据待测软件中的SQL语句,完成对基于数据库的软件系统的测试数据的生成, 可以有效的保证测试数据全面性,且节省人力资源,提高效率。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。图1为本发明实施例提供的利用SQL语句自动生成测试数据的方法流程图;图2为本发明实施例提供的改进的利用SQL语句自动生成测试数据的方法流程图;图3为本发明实施例提供的利用SQL语句自动生成测试数据的装置结构图;图4为本发明实施例提供的改进的利用SQL语句自动生成测试数据的装置结构 图;图5为本发明实施例中限定条件和所述测试数据之间的对应关系。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 本发明实施例提供了 一种利用SQL语句自动生成测试数据的方法,如图1所示,包 括以下步骤101、读取输入的待测试软件,获取所述待测试软件中的SQL语句。为了实现自动测试数据的生成,首先,读取输入的待测试软件,并且,获取所述待 测试软件中的SQL语句。102、根据所述SQL语句中的限定条件生成测试数据。在获取了待测软件中的SQL语句后,根据所述SQL语句中的限定条件生成测试数据。本实施例提供的利用SQL语句自动生成测试数据的方法,通过运行计算机程序, 根据待测软件中的SQL语句,完成对基于数据库的软件系统的测试数据的生成,可以有效 的保证测试数据全面性,且节省人力资源,提高效率。作为本实施例的一种改进,本发明实施例提供另一种利用SQL语句自动生成测试 数据的方法,如图2所示,包括以下步骤201、读取输入的待测试软件,获取所述待测试软件中的SQL语句。为了实现自动测试数据的生成,首先,读取输入的待测试软件,并且,获取所述待 测试软件中的SQL语句。具体的,本步骤可以为遍历待检测软件,从该待检测软件中收集所有SQL语句。本步骤的主要功能是遍历待检测软件程序中所有代码行,要求被遍历语句的覆盖 率为100%,并根据关键词收集并整理SQL语句。详细处理流程如下步骤第一步,遍历待检测软件的所有程序代码行。启动本实施例提供的利用SQL语句自动生成测试数据的方法前,操作人员需要预 先设置被测试程序所在目录作为本实施例提供的利用SQL语句自动生成测试数据的方法 遍历的起点。启动启动本实施例提供的利用SQL语句自动生成测试数据的方法后,本实施例提 供的利用SQL语句自动生成测试数据的方法会自动按照前序遍历(DLR)的规则去遍历所有 的代码行。第二步,从待检测软件程序代码行中收集所有的SQL语句。SQL语句有其特定的语法规则和关键词,利用SQL语句特定的语法规则和关键词对待检测软件程序代码行进行语法分析,收集所有的SQL语句。形成一个SQL语句集合。例
如S = {sl,s2,......,si,......,sn},其中,S表示待检测软件系统中SQL语句的集合,
sn代表每个SQL语句元素。根据所述SQL语句的语法规则和关键词获取所述待测试软件中的SQL语句。202、分析所述SQL语句,从所述SQL语句中获取所述限定条件。本步骤中主要功能是用于分析SQL集合中各个限定条件的所有可能的取值。首先 从SQL语句中获取所述限定条件表达式,并将获取到的限定条件表达式转换为insert脚本 语句。该insert脚本语句作为获取限定条件的基础信息。203、根据所述SQL语句中的限定条件生成测试数据。在获取了待测软件中的SQL语句后,根据所述SQL语句中的限定条件生成测试数据。根据检测装置中存储的带编号的insert脚本语句,处理并运行该insert脚本语 句,生成符合测试要求的测试数据。具体可以包括以下步骤第一步,从SQL语句中获取所述限定条件的表达式。具体的,根据生成的SQL语句集合,逐一分析每一个SQL语句,获取SQL语句中所 包含的限定条件。通过上述处理,每一个SQL语句最终生成一个条件表达式的集合,如下所示Ci= {cl,c2,......,cj,......cn},其中,Ci表示由SQL语句si获取的限定条
件,以及由各个限定条件衍生出来的所有可能性限定条件的全部集合。cj代表其中一个限 定条件,一个或多个限定条件(1到η个条件)对应S中的一个SQL语句si。本实施例中的限定条件与SQL语句之间的一对多关系,便于查询与预期输出不符 合的限定条件在待检测软件程序代码段中的位置,可以较快速、较准确的回溯到程序的缺 陷位置。第二步,生成测试数据,也就是把第一步中的限定条件全部转换为insert语句的 具体数值,形成符合测试要求的测试数据。作为本实施例的一种实施方式,可以采用边界值分析法、等价划分分析法和错误 推荐分析法分析所述限定条件生成测试数据。具体包括以下步骤1.采用边界值分析法生成该限定条件下的有效测试数据;2.采用等价划分分析法生成该限定条件下的有效测试数据;3.采用错误推荐分析法生成该限定条件下的无效测试数据。下面举例说明本实施例中根据限定条件生成测试数据的方法比如,从待检测软件程序代码段中获取到的限定条件cj为short a >10,生成测 试数据的步骤为首先,确定限定条件中变量a的取值范围,从该限定条件中可以看出,限定条件a 属short类型,即短整型数值,其取值范围在[-32768,32767]之间。再与条件a > 10结合起来,可以得出a的合法取值范围为a e (10,32767],进而 得出边界值,如9,10,32766,32767,32768等,至于取多少个边界旁边的值,可以根据配置 文件进行调节。
在确定了边界值后,可以在该边界限定的取值范围内随机取得一些数据,至于取 多少个个数据,可以根据配置文件进行调节。在确定了边界 值后,可以在该边界限定的取值范围外取得一些数值,即取一些异 常数值,比如65535,165535,0,_9等,至于取多少个异常数值,可以根据配置文件进行调 节。通过上述操作,可以得出大量合法和非法的数据。可以表示为Vj = {vl, v2,......, vk,......,vn},其中,Vj表示由限定条件cj生成的测试
数据具体值的集合。通过上述分析和生成测试数据的过程可以看出,每一条测试数据可以非常方便的 回溯到对应的SQL语句,204、记录所述限定条件和所述测试数据之间的对应关系。如图5所示,为本发明实施例中限定条件和所述测试数据之间的对应关系。为了 能够在检测出待检测软件中的错误后,方便、快速的找到该待检测软件程序代码中的出错 位置,需要记录所述限定条件和所述测试数据之间的对应关系。205、将生成的测试数据应用于待检测软件,执行已采集到的SQL语句,生成测试结果。206、调用根程序,生成测试报告。详细处理流程如下所示调用装置中的根程序,将测试结果和预期结果比较,并输出存在错误的SQL语句 id。预期结果可以由需求规格说明书和详细设计说明书细化而来。本步骤中,将生成的结果与预期结果进行比较。并且把不一致的测试结果筛选出 来,直接对应到具体测试数据值的id,,根据具体测试数据值的id对应到限定条件的id,最 后定位到具体的SQL语句中程序代码段的位置。由于每个输出是由输入产生的,而每个输 入脚本分别对应一个源程序SQL语句条件,这个条件已打上id标识,所以每个程序的输出 都可以通过id追溯到源程序SQL语句条件中去,最终定位程序缺陷。本实施例提供的利用SQL语句自动生成测试数据的方法,通过运行计算机程序, 根据待测软件中的SQL语句,完成对基于数据库的软件系统的测试数据的生成,可以有效 的保证测试数据全面性,且节省人力资源,提高效率。本发明实施例对于那些软件程序中含有大量SQL语句的系统,系统功能点的正确 性,往往集中在程序SQL语句正确性上。于是,对SQL语句的验证,可以是程序功能较好的实 践过程。假想一下,运行程序的过程,同时也是执行SQL语句的过程。只有符合程序中SQL 语句条件的数据,才会通过SQL语句被程序运算处理,输出的结果才会和预期一致。反之, 不符合程序中SQL语句条件的那些数据,是不应该被系统选中去运算的,也不会得到和预 期输出相同的结果。否则,程序SQL语句是有缺陷的。当然,我们判断哪些数据是应该得到 预期输出,永远是依赖于需求文档中描述的正确功能实现上。针对这一点,我们的测试人员 可以以程序SQL语句为起点,将复杂的SQL语句完全转换为生成测试数据的脚本语句。只 要库中填满了这些针对SQL语句的数据,再运行被测程序,比较预期结果,如有非预期的输 出,便可以定位出程序SQL语句缺陷了。 本发明实施例提供了 一种利用SQL语句自动生成测试数据的装置,如图3所示,包 括获取单元31、生成单元32。
其中,获取单元31用于读取输入的待测试软件,获取所述待测试软件中的SQL语 句;生成单元32用于根据所述SQL语句中的限定条件生成测试数据。本实施例提供的利用SQL语句自动生成测试数据的装置,通过运行计算机程序, 根据待测软件中的SQL语句,完成对基于数据库的软件系统的测试数据的生成,可以有效 的保证测试数据全面性,且节省人力资源,提高效率。作为本实施例的一种改进,本发明实施例提供另一种利用SQL语句自动生成测试 数据的装置,如图4所示,包括获取单元41、分析单元42、生成单元43、记录单元44。其中,生成单元43包括第一生成模块431、第二生成模块432、第三生成模块 433。获取单元41用于根据所述SQL语句的语法规则和关键词获取所述待测试软件中 的SQL语句;分析单元42,用于分析所述SQL语句,从所述SQL语句中获取所述限定条件;生成单元43用于采用边界值分析法、等价划分分析法和错误推荐分析法分析所 述限定条件生成测试数据。具体的第一生成模块,用于采用边界值分析法生成该限定条件 下的有效测试数据;第二生成模块,用于采用等价划分分析法生成该限定条件下的有效测试数据;第三生成模块,用于采用错误推荐分析法生成该限定条件下的无效测试数据。记录单元44,用于记录所述限定条件和所述测试数据之间的对应关系。本实施例提供的利用SQL语句自动生成测试数据的装置,通过运行计算机程序, 根据待测软件中的SQL语句,完成对基于数据库的软件系统的测试数据的生成,可以有效 的保证测试数据全面性,且节省人力资源,提高效率。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳 的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种利用SQL语句自动生成测试数据的方法,其特征在于,包括 读取输入的待测试软件,获取所述待测试软件中的SQL语句;根据所述SQL语句中的限定条件生成测试数据。
2.根据权利要求1所述的利用SQL语句自动生成测试数据的方法,其特征在于,在所述 根据所述SQL语句中的限定条件生成测试数据之前,所述方法还包括分析所述SQL语句,从所述SQL语句中获取所述限定条件 ;所述根据所述SQL语句中的限定条件生成测试数据为采用边界值分析法、等价划分 分析法和错误推荐分析法分析所述限定条件生成测试数据。
3.根据权利要求2所述的利用SQL语句自动生成测试数据的方法,其特征在于,所述获 取所述待测试软件中的SQL语句为根据所述SQL语句的语法规则和关键词获取所述待测 试软件中的SQL语句。
4.根据权利要求1至3任一项所述的利用SQL语句自动生成测试数据的方法,其特征 在于,所述方法还包括记录所述限定条件和所述测试数据之间的对应关系。
5.根据权利要求2所述的利用SQL语句自动生成测试数据的方法,其特征在于,所述 采用边界值分析法、等价划分分析法和错误推荐分析法分析所述限定条件生成测试数据包 括采用边界值分析法生成该限定条件下的有效测试数据; 采用等价划分分析法生成该限定条件下的有效测试数据; 采用错误推荐分析法生成该限定条件下的无效测试数据。
6.一种利用SQL语句自动生成测试数据的装置,其特征在于,包括获取单元,用于读取输入的待测试软件,获取所述待测试软件中的SQL语句; 生成单元,用于根据所述SQL语句中的限定条件生成测试数据。
7.根据权利要求6所述的利用SQL语句自动生成测试数据的装置,其特征在于,所述利 用SQL语句自动生成测试数据的装置还包括分析单元,用于分析所述SQL语句,从所述SQL语句中获取所述限定条件; 所述生成单元根据所述SQL语句中的限定条件生成测试数据为所述生成单元采用边 界值分析法、等价划分分析法和错误推荐分析法分析所述限定条件生成测试数据。
8.根据权利要求7所述的利用SQL语句自动生成测试数据的装置,其特征在于,所述获 取单元获取所述待测试软件中的SQL语句为所述获取单元根据所述SQL语句的语法规则 和关键词获取所述待测试软件中的SQL语句。
9.根据权利要求6至8任一项所述的利用SQL语句自动生成测试数据的装置,其特征 在于,所述利用SQL语句自动生成测试数据的装置还包括记录单元,用于记录所述限定条件和所述测试数据之间的对应关系。
10.根据权利要求7所述的利用SQL语句自动生成测试数据的方法,其特征在于,所述 生成单元包括第一生成模块,用于采用边界值分析法生成该限定条件下的有效测试数据; 第二生成模块,用于采用等价划分分析法生成该限定条件下的有效测试数据; 第三生成模块,用于采用错误推荐分析法生成该限定条件下的无效测试数据。
全文摘要
本发明实施例公开了一种利用SQL语句自动生成测试数据的方法和装置,涉及程序测试领域,可以有效的保证测试数据全面性,且节省人力资源,提高效率。该方法包括读取输入的待测试软件,获取所述待测试软件中的SQL语句;根据所述SQL语句中的限定条件生成测试数据。主要应用于软件测试过程中测试数据的生成。
文档编号G06F11/36GK102043720SQ20111002041
公开日2011年5月4日 申请日期2011年1月18日 优先权日2011年1月18日
发明者宋三英, 张德胜, 杨承继 申请人:北京世纪高通科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1