现在的软件应用程序,已经离不开数据库的支持。无论是在Web应用、桌面应用、客户端服务器、企业和个人业务,都需要自己的数据库在后端操作。同样的在金融、租赁、零售、邮寄、医疗各个领域中,数据库也是不可缺少的。
随着现在应用的复杂程度增加,应用需要更强大和安全系数高的数据库才可以满足需求。为了满足高频率的应用程序事务(如银行或财务应用),数据库的安全性成为首要之重,今天我们就来介绍下数据库测试。
一:了解数据库
1、什么是数据库
数据库是存放数据的仓库。它的存储空间一般很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是要有一定的规则的,否则查询的效率会很低。当今世界是一个充满着大量数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源种类很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念包括两层意思:
(1)数据库是一个实体,它是能够合理保管数据的仓库,用户在该仓库中存放要管理的应用事务数据,“数据”和“库”两个概念结合成为数据库。
(2)数据库是数据管理的新方法和技术,它能更合理的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
2、数据库系统的组成:
1)硬件
数据库系统的硬件包括计算机的主机、键盘、显示器和外围设备(例如打印机、光盘机、磁带机等)。由于一般数据库系统所存放和处理的数据量很大,加之DBMS丰富的功能软件,使得自身所占用的存储空间很大,因此整个数据库系统对硬件资源提出了较高的要求
2)软件
数据库系统的软件除了数据库管理系统之外,还包括操作系统各种高级语言处理程序(编译或解释程序)、应用开发工具软件和特定应用软件等
3)数据
数据是数据库的基本组成,是对客观世界所存在事物的一种表征,也是数据库用户的操作对象。数据是数据库系统,也是企业或组织的真正财富。数据应按照需求进行采集并有结构地存入数据库。由于数据的类型多样性,数据的采集方式和存储方式也会不同. 数据作为一种资源是数据库系统中最稳定的成分,即硬件可能更新,甚至软件也可以更新,但只要企业或组织的性质不改变,数据将是可以长期使用的财富
4)用户
数据库用户是管理、开发、使用数据库的主体。根据工作任务的差异,数据库用户通常可以分成终端用户、应用程序员和数据库管理员等3种不同类型
二、数据库操作
下面为大家简单的介绍数据库中‘CRUD’所代表的操作。
C:创建——创建用户。
R:检索——执行检索视图操作。
U:更新——更新数据库信息。
D:删除——执行删除数据库操作。
普遍用户在操作数据时,都会用到以上四种操作
1、数据库事务
ACID属性
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。在数据库测试期间必须测试这四个要素,确保正确。
数据完整性
考虑到不同模块的应用程序以不同的方式使用相同的数据,并执行对数据所有的CRUD操作。确保数据库中包含的数据尽可能地准确和一致的数据性质,这就是数据完整性。
2、业务准确性
数据库发展至今,已不再是单纯的用来存储记录。事实上,数据库系统已经发展成为强大的工具,为开发者们提供了足够的扩展支持。数据库系统比以前具有了更多的强大功能,例如参考完整性,关系约束,触发器和存储过程
三:数据库测试
1、数据准备
为了测试测试数据库正确和准确性。首先,测试人员要熟练掌握SQL和DML(数据库语言)语句。其次,测试人员应该掌握数据库的结构。如果满足这两个条件,即可放心测试,测试人员可以根据自己对数据库的理解,以及本身应用提供的数据库设计说明,还有相对于的业务说明,设计自己的测试用例及其测试的sql语句,然后进行对应的功能性的数据测试。
测试人员可以通过查看数据表来验证应用程序GUI的操作结果。但是,这种方式对于拥有大量数据的数据库,查询是相当的乏味和繁琐。验证多个数据表也是相当困难。
2、系统测试
在系统测试阶段,测试主要做的工作是对开发的数据库设计部分进行评审来发现其设计错误或者缺陷
3、集成测试
集成测试主要是针对各种接口进行测试,对于数据库来说,主要考虑的有以下一些:
数据项的修改操作;
数据项的增加操作;
数据项的删除操作;
数据表增加满;
数据表删除空;
删除空表中的记录;
数据表的并发操作;
针对存储过程的接口测试;
结合业务逻辑做关联表的接口测试;
同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试。
四:测试内容
1、数据库设计的测试
数据库是应用的基础,其性能直接影响应用软件的性能。为了使数据库具有较好的性能,需要对数据库中的表进行规范化设计。规范化的范式可分为第一范式、第二范式、第三范式、BCNF 范式、第四范式和第五范式。一般来说,逻辑数据库设计应满足第三范式的要求,这是因为满足第三范式的表结构容易维护,且基本满足实际应用的要求。因此,实际应用中一般都按照第三范式的标准进行规范化
2、数据一致性测试
在进行实体测试后,应进一步检查下面的内容以保障数据的一致性:
表的主键测试根据应用系统的实际需求,对每个表的主键进行测试,验证是否存在记录不唯一的情况,如果有,则要重新设置主键,使表中记录唯一。
表之间主外键关系的测试数据库中主外键字段在名称,数据类型,字段长度上的一致性测试。
级联表,删除主表数据后,相应从报表数据应同时删除的问题例如学生表和学生成绩表,学生数据已经删除,成绩表中相应学生的成绩记录应同时删除。
3、数据库的容量测试
随着数据库系统的使用,数据量在飞速增长,如何在使用前对数据容量的增长情况进行初步估算,为最终用户提供参考,这在数据库使用和维护过程中,是非常重要的。可以通过对数据库设计中基本表的数据大小,和每天数据表的数据产生量进行初步估算
4、数据库的性能测试
应用软件除了功能外,很重要的一部分就是软件的性能,而对于数据库系统,数据库性能的好坏会直接影响应用软件的性能,这部分的测试,一般手工测试就显得无能为力了,这时就要借助自动化的测试软件,例如:DataFactory,DataFactory 是一种强大的数据产生器,它允许开发人员和测试人员很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、Sybase、SQL Server 数据库。这样,就可以模拟出应用软件长期使用后,海量数据存储的数据库的性能状况。从而尽早发现问题,进行数据库性能的优化
5、数据库的压力测试
数据库在大多数软件项目中是不可缺少的,对于它进行压力测试是为了找出数据库对象是否可以有效地承受来自多个用户的并发访问。这些对象主要是:索引、触发器、存储过程和锁。通过对SQL语句和存储过程的测试,自动化的压力测试工具可以间接的反应数据库对象是否需要优化。
,