周显明1,李建军1,2
(1.中国电子科技集团公司第三十二研究所,上海 200233;2. 广西大学 计算机与电子信息学院,广西 南宁 530004)
摘要:随着国产基础软件的快速发展,市场上涌现了大量的国产化数据库管理系统(DBMS)产品,文章分析并给出了国产化数据库管理系统软件测试内容、测试方法和测试技术等,对于从事国产化数据库管理系统测试验证的技术人员有一定的参考借鉴意义。
关键词:国产化;数据库管理系统;测试验证;测试规范
0引言
在信息化建设日益重要的今天,核心基础软件的作用越来越被政府和企业的信息化主管所重视。其中,数据库作为基础软件的重要组成之一,对于IT系统的重要性不言而喻。基于国产基础软硬件平台电子政务系统的应用,是保障国家信息安全、促进基于国产基础软硬件技术发展的有力手段。近几年,随着国产基础软硬件在性能和稳定性方面的快速发展,出现了大量基于国产化数据库管理系统构建的电子政务系统,但是由于国产软硬件技术与国外同类技术相比仍存在较大差距,一些国产化数据库管理系统在国产基础软硬件平台下运行一段时间后,会出现各种问题,对国产化数据库管理系统进行第三方检测成为亟待解决的实际问题。因此研究其软件测试方法和技术具有重要的意义,国内外研究人员已经对数据库管理系统的测试进行了大量研究[13],但目前还未形成系统成熟的测试方法,本文主要针对国产化数据库管理系统的测试内容和测试方法进行研究。
1DBMS测试内容
国产数据库基础软件的测试主要从数据库管理系统的基本功能组件[4] 进行,包括事务处理、支持数据类型、内置函数、完整性约束、数据库管理、基表管理、视图、索引管理、存储过程和触发器等。
2DBMS组件测试
2.1事务处理
事务控制能够控制事务的开始、结束、回滚及自动提交事务。测试时应覆盖以下内容:
(1)使用事务控制语句设定事务提交状态(自动提交),设定完成后执行事务(不包含begin语句)并回滚,查看回滚后的结果(回滚语句无作用),验证软件是否支持自动提交事务;
(2)使用事务控制语句(开始、结束、提交)执行事务,查看语句执行结束后的数据库信息(事务控制语句已执行),验证事务的开始、结束、提交功能的正确性;
(3)使用事务控制语句执行事务,查看语句执行结束后的数据库信息(未执行该事务),验证事务回滚功能的正确性。
支持事务隔离级别:SERIALIZABLE、READ COMMITTED。测试时应覆盖以下内容:
(1)设定事务隔离级别为SERIALIZABLE,并开启2个会话,会话1修改数据库,会话2进行查询,查看会话2的查询结果是否包含会话1的修改数据(不包含修改数据结果),验证软件是否满足SERIALIZABLE隔离级别的要求;
(2)设定事务隔离级别为READ COMMITTED,并开启2个会话,会话1修改数据库,会话2进行查询,查看会话2的查询结果是否包含会话1的修改数据(包含修改数据结果),验证软件是否满足READ COMMITTED隔离级别的要求。
2.2支持数据类型
设定能对以下各数据类型进行增删改查:字符串、数值、日期时间、布尔、位串、二进制串、大对象、XML、时间间隔。
测试时应覆盖以下内容:
(1)在数据库表中添加数据,添加的数据类型包括字符串、数值、日期时间、布尔、位串、二进制串、大对象、XML、时间间隔,完成后对所添加的数据进行查询,查看查询结果显示的数据是否正确,验证数据库是否支持各数据类型的添加、查询;
(2)在已有的数据库表中修改、删除数据类型,并进行查询,验证数据库是否支持数据类型的修改、删除。
2.3支持多字符集
测试时,设定服务器及客户端为不同字符集(GBK、ASCII、GB18030、UNICODE),使用客户端访问数据库,查看显示的数据信息是否正确,验证软件支持客户端和服务器端编码不一致时数据访问的正确性。
2.4提供内置函数
验证数据库管理系统提供字符串函数、数学函数、格式化函数、日期时间函数、聚集函数、管理函数。
使用查询语句对数据库进行查询,语句查询条件中包含有字符串函数、数学函数、格式化函数、日期时间函数、聚集函数、管理函数的限定条件,查看查询结果,验证软件是否提供各内置函数。
2.5提供完整性约束
(1)实体完整性[5]
验证数据库表对象支持主键,当用户输入数据不满足实体完整性时,会报错。
通过设定主键值为空或内容与原记录重复,查看软件是否提示错误信息,验证软件是否满足实体完整性要求。
(2)参照完整性
数据库表对象支持外键,当用户输入数据不满足参照完整性时,会报错。测试时通过建立两张基本表,使用外键建立依赖关系,在表中进行插入数据且数据中的外键值为空或所对应的值不存在(不满足参照完整性),查看软件是否提示错误信息,验证软件是否满足参照完整性要求。
(3)用户定义完整性
数据库表对象支持各种约束,当用户输入数据不满足约束时,会报错。
测试时应覆盖以下内容:通过设定完整性约束(如非空值约束、唯一性约束等),并在录入数据时违反设定的完整性约束,查看软件是否提示错误信息,验证软件是否满足用户定义完整性要求。
2.6多数据库管理
验证DBMS支持可扩展的逻辑和物理存储结构,每个服务器可以支持多个独立的数据库,用户可以动态地创建数据库,每个数据库相对独立。
(1)通过创建多个数据库,在数据库中创建表对象,查看创建的数据库和表对象是否正确,验证软件是否支持多个独立的数据库;
(2)通过配置数据文件的存储位置、空间、大小,并在各数据库中添加内容,查看各数据库数据存储位置是否正确,验证软件是否支持可扩展的逻辑和物理存储结构。
2.7基表管理
验证数据库管理系统软件能够对数据库表进行管理,测试时可参考以下方法:
(1)通过表新建、表删除、表截断操作,查看软件是否完成表的新建、删除和截断,验证软件基表创建、删除和截断功能的正确性;
(2)通过对表记录进行插入、删除、更新操作,查询该表,查看软件是否完成相应操作,验证表记录插入、删除、更新功能的正确性;
(3)通过在设计表中进行列的增加、删除和类型修改,查询该表,查看软件是否完成相应操作,验证列的增加、删除和类型修改功能的正确性。
2.8视图
支持视图管理,包括视图的创建、删除、查找,对可更新视图数据的增加、修改、删除。
测试时应覆盖以下内容:
(1)使用语句创建视图,所创建视图包括可更新视图和不可更新视图,并对视图进行删除、查询操作,验证视图的创建、删除、查询功能的正确性;
(2)在已有可更新视图的基础上增加、删除、修改视图的数据内容,并查询与视图相关的基表信息,查看修改的数据在基表中是否已被修改,验证可更新视图是否能够增加、删除、修改数据;
(3)在不可更新视图上进行增加、删除、修改操作,查看软件是否对不可更新视图的增加、删除、修改操作进行提示,验证软件是否提示错误。
2.9存储过程和函数
支持存储过程的定义、删除、查询、更新、重编译;支持采用流程控制和SQL语句书写存储过程,若干个有联系的过程可以组合在一起构成程序包,以完成复杂的判断和较复杂的运算。
测试时应覆盖以下内容:
(1)在数据库中创建存储过程(包含控制语句、条件表达式、数学函数、存储过程的嵌套调用),并调用该存储过程,查看数据库内容确定该存储过程是否被正确执行,验证软件是否支持存储过程的创建;
(2)对已有的存储过程进行查询,查看查询结果(存储过程信息、存储过程状态)信息,验证是否能够对系统的存储过程进行查询;
(3)对已有的存储过程进行重命名、重编译,并调用修改后的存储过程,查看数据库内容确定该修改后存储过程是否被正确执行,验证存储过程能够重命名、重编译;
(4)删除已有的存储过程,并查询系统的存储过程确定该存储过程是否被删除,验证软件能够删除存储过程。
(5)在多用户的环境下,赋予其他用户(非数据库所有者)执行权限,并使用其他用户执行存储过程,查看数据库内容确定该存储过程是否正确执行,验证是否支持将存储过程的执行权限赋予其他用户。
2.10触发器
触发器测试时应覆盖以下内容:
(1)在数据库表、视图中创建触发器(触发事件:DELETE、 INSERT 、UPDATE;触发类型:事前触发、事后触发、语句级触发、行级触发),并触发触发器事务,查看审计信息中是否实现触发器功能及事前、事后触发的正确性,验证是否支持触发器的相应功能及是否支持各类触发事件及触发类型;
(2)对数据库表、视图中已创建的触发器进行修改(变更触发事件、变更触发类型、变更触发事务),并触发触发器事务,查看审计信息的事务信息(执行修改后的触发事务),验证软件能够对触发器进行修改;
(3)删除数据库表、视图中已创建的触发器,并使用原触发器触发事件对数据库进行操作,查看审计信息的事务信息(原触发器触发事务未执行),验证软件是否能够删除触发器。
3结束语
数据库作为国产化基础软件的重要组成之一,如何对国产化数据库管理系统进行第三方检测成为亟待解决的实际问题。本文研究了国产化数据库管理系统的测试方法和要点,对于国产化数据库管理系统的测试具有一定的参考价值。本研究成果已被用于多个国产化DBMS测试工作中,取得了较好的效果,下一阶段的研究方向为如何采用业界的基准测试工具进行性能评测。
参考文献
[1] 亓伟,叶晓俊,王建民. ODBC标准符合性测试框架[J]. 计算机工程,2005,31(20):101-103.
[2] 窦洁.基于国产基础软硬件平台的办公系统性能测试与优化[D].北京:中国科学院大学,2014 .
[3] 胡恩博.DBMS测试浅探[J]. 湖南第一师范学院学报,2009,9(1):166-167.
[4] 任冬梅.软件测试技术基础[M].北京:清华大学出版社,2008.
[5] 陈瑜,彭甫阳.关系数据库管理系统的SQL—致性测试和性能基准测试[J]. 计算机工程与应用, 1999,35(12):85-87.