一种数据库依赖软件单元的测试方法技术

技术编号:2845456 阅读:303 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种数据库依赖软件单元的测试方法,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试。本发明专利技术还提供一种数据库依赖软件单元的综合测试系统及方法,包括被测软件单元,测试单元,环境状态检查模块,内存数据库管理模块,实际数据库,以及数据库连接工厂,由数据库连接工厂根据当前环境判断是处于测试状态还是生产状态,如果在测试状态时,由连接工厂返回内存数据库连接,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试,如果在生产状态时,由连接工厂返回实际数据库连接。本发明专利技术提高了数据库相关软件测试的测试效率,降低了测试的复杂度。

【技术实现步骤摘要】

本专利技术涉及一种软件单元的测试方法,尤其涉及数据库依赖软件单元的测试方法
技术介绍
在软件开发中,为了保证各个软件模块的正确性,通常采用单元测试技术来完成对软件系统中各个软件单元模块的测试。通常,一个软件系统中都会有访问数据库的单元模块。如果这个数据库访问单元模块需要单元测试,现有的方法是运行一个实际的关系数据库,比如,运行一些商品化的关系数据库实例,在这些数据库实例中,预先创建与这个单元相关的表和数据,为这个数据库访问单元模块提供数据库数据的访问支撑。数据库中的表和数据持久化在硬盘中。由于这种数据库依赖的单元模块需要运行实际的关系数据库实例才可以完成单元测试,这样就为单元测试带来了很多弊端,如1.测试环境组建复杂。必须安装一份关系数据库拷贝,没有关系数据库将无法完成单元测试。这将造成单元测试过程本身的数据库依赖,为测试过程的轻量、便捷设置了障碍。2.测试效率低,资源占用大。由于关系数据库的运行效率低和资源占用高,决定了测试过程的低效率和高资源占用。在数据库操作业务集中的应用中,这个问题更加突出,数据库操作占用了大量的测试时间,磁盘IO是数据库的瓶颈,导致测试迭代周期延长。3.必须保证同一时间一个测试过程要独占一个数据库。如果多个用户或多个测试过程共用一个数据库将无法保证数据库中测试数据的完整性。这里必须保证一个用户一个数据库,一个测试过程一个数据库。这样才可以保证多个用户多个单元测试的并发。否则必须保证多个用户多个单元测试的串行化,这将导致严重的测试效率问题。4.初始化状态创建和数据清除复杂低效。在进行测试前要向关系数据库中导入初始状态的数据。测试完成后还要清除测试的数据,为后续测试做准备。从以上的几点可以看出,现有的利用实际的关系数据库作为单元测试的依赖环境有其固有的缺点。另外,现有的测试技术中,有的也利用模仿对象(mock)来实现对数据库依赖软件单元测试的问题。但是数据库的模仿对象要模仿Sql语法的检验,和数据库结果集合的数据返回,模仿对象的实现和维护代价很高。尤其是对Sql语法检验更加麻烦,因为模仿对象必须实现ANSI SQL92以上的标准语法检查器。Sql语句与编程语言混合的情况正是错误多发的地方,如果模仿对象没有实现Sql语法检查就会遗漏了对这一方面的测试,使其测试覆盖不完整。当然,模仿对象可以做到对sql语句的解析分析,来判定sql语句的语法正确性。我们知道,这样的模仿对象的代价非常高,相当于实现了关系数据库中的sql解析部分,工作量过于庞大。
技术实现思路
本专利技术所要解决的技术问题在于提供、综合测试系统及综合测试方法,提高数据库相关软件测试的测试效率,降低测试的复杂度,提高测试覆盖范围。本专利技术提供,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试。所述的采用嵌入式内存数据库作为测试数据载体,包括如下步骤在测试单元中创建嵌入式内存数据库,并启动数据库;在测试单元中为嵌入式内存数据库创建需要的表和数据;由测试单元实例化所述被测试的数据库依赖软件单元;由测试单元向数据库依赖软件单元中注入嵌入式内存数据库连接。所述的进行数据库依赖的软件单元的测试,包括如下步骤由测试单元测试所述数据库依赖软件单元中的方法,方法中对数据库的操作是对所述嵌入式数据库内存数据库的操作;利用单元测试中的断言判断数据库操作方法的正确性。本专利技术还提供一种数据库依赖软件单元的综合测试系统,包括依赖数据的被测软件单元,还包括测试单元,用于完成对所述被测单元的测试;环境状态检查模块,用于检查当前的环境状态是测试状态还是生产状态;内存数据库管理模块,用于提供嵌入式内存数据库的管理;实际数据库,用于提供实际数据库用于测试;数据库连接工厂,用于提供数据库连接,在测试状态时,返回内存数据库连接,在生产状态时,返回实际数据库连接。本专利技术进而还提供一种数据库依赖软件单元的综合测试方法,包括如下步骤由数据库连接工厂根据当前环境判断是处于测试状态还是生产状态;在测试状态时,由连接工厂返回内存数据库连接,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试;在生产状态时,由连接工厂返回实际数据库连接。本专利技术与现有技术相比,避免了依赖实际数据库测试的缺点,也避免了模仿对象的实现维护复杂的问题。本专利技术利用嵌入式内存数据库来完成数据库依赖软件单元的测试,大大提高了数据库相关软件测试的测试效率,降低了测试的复杂度,提高了测试覆盖范围,提供了Sql语法的检查,减少了实际数据库的安装量,节省了数据库的投资。同时,由于本专利技术测试方法是临时在内存中创建数据库,每个被测单元的所依赖的数据库完全不同,这样可以实现被测单元互相独立,做到被测单元的并发测试,进一步的提高了测试效率。附图说明图1为本专利技术所述的采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试实施例流程示意图;图2为本专利技术所述的数据库依赖软件单元的综合测试系统的实施例模块结构图;图3为本专利技术所述的数据库依赖软件单元的综合测试方法实施例的工作流程图;图4为利用本专利技术进行实际测试的实施例效果示意图。具体实施例方式本方法采用嵌入式内存数据库来替代通常的关系数据库,作为依赖数据库的软件单元的测试数据载体。比如,Java语言开发的软件系统,可以采用Hsqldb数据库(hsqldb.sourceforge.net)。Hsqldb支持ANSI-92SQL标准,事务处理,视图支持,内置JDBC驱动程序的关系型数据库。Hsqldb是100%的纯java实现,160K的微型内核,支持内存的数据存储。内存数据库的特点,决定了他轻便的,与语言紧密结合的优点。由于数据在内存中存储,其数据操作的效率远远高于传统数据库磁盘IO的效率。如图1所示,为本专利技术所述的采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试实施例流程示意图,首先在测试单元中创建嵌入式内存数据库,并启动数据库(步骤101);然后在测试单元中为嵌入式内存数据库创建需要的表和数据,可以用SQL语句创建,也可以导入数据库脚本文件来创建表和数据(步骤102);由测试单元实例化所述被测试的数据库依赖软件单元(步骤103);由测试单元向数据库依赖软件单元中注入嵌入式内存数据库连接(步骤104);由测试单元测试所述数据库依赖软件单元中的方法,方法中对数据库的操作是对所述嵌入式数据库内存数据库的操作(步骤105);利用单元测试中的断言判断数据库操作方法的正确性(步骤106)。如图2所示,为本专利技术所述的数据库依赖软件单元的综合测试系统的实施例模块结构图,包括依赖数据的被测软件单元201,测试单元202,环境状态检查模块203,内存数据库管理模块204,实际数据库205,数据库连接工厂206。其中,测试单元202,用于完成对所述被测单元的测试;环境状态检查模块203,用于检查当前的环境状态是测试状态还是生产状态;内存数据库管理模块204,用于提供嵌入式内存数据库的管理;实际数据库205,用于提供实际数据库用于测试;数据库连接工厂206,用于提供数据库连接,在测试状态时,返回内存数据库连接,在生产状态时,返回实际数据库连接。数据库连接工厂206可以根据但前环境判断是测试状态还是生产状态。在测本文档来自技高网
...

【技术保护点】
一种数据库依赖软件单元的测试方法,通过测试单元完成数据库依赖的软件单元的测试,其特征在于,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试。

【技术特征摘要】
1.一种数据库依赖软件单元的测试方法,通过测试单元完成数据库依赖的软件单元的测试,其特征在于,采用嵌入式内存数据库作为测试数据载体,进行所述数据库依赖的软件单元的测试。2.如权利要求1所述的方法,其特征在于,所述采用嵌入式内存数据库作为测试数据载体,包括如下步骤在测试单元中创建嵌入式内存数据库,并启动数据库;在测试单元中为嵌入式内存数据库创建需要的表和数据;由测试单元实例化所述被测试的数据库依赖软件单元;由测试单元向数据库依赖软件单元中注入嵌入式内存数据库连接。3.如权利要求1所述的方法,其特征在于,所述进行数据库依赖的软件单元的测试,包括如下步骤由测试单元测试所述数据库依赖软件单元中的方法;利用单元测试中的断言判断数据库操作方法的正确性。4.如权利要求1所述的方法,其特征在于,所述的由测试单元实例化所述被测试的数据库依赖软件单元步骤,包括由测试单元初始化嵌入式内存数据库,为内存数据库添加测试用例数据。5.如权利要求3所述的方法,其特征在于,所述的由测试单元测试数据库依赖软件单元中的方法步骤,所述方法中对数据库的操作是对所述嵌入式数据库内存数据库的操作。6.如权利要求3所述的方法,其特征在于,所述的由测试单元测试数据库依赖软件单元中的方法步骤,包括如下步骤由测试单元发起测试,输入测试数据;被测单元访问嵌入式内存数据库,执行业务逻辑;由测试单元将被测单元返回的结果与...

【专利技术属性】
技术研发人员:杜玄苏丽辉
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1