数据库测试
数据库执行者
开发人员
DBA
测试人员
数据库测试所需要的知识
了解数据库
了解SQL
能够使用SQL操作数据库
具备优化数据库的能力
数据结构的基本知识
数据结构
- 定义一、数据元素集合(也可称数据对象)中各元素的关系。
- 定义二、相互之间存在特定关系的数据元素集合
- 一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成
数据库测试分类
系统测试、集成测试、单元测试、功能测试、性能测试、安全测试
系统测试
- 数据库在初期设计中需要进行分析测试
-存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的 - 确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证修改是否落实到数据库上
-数据库设计评审来实现
集成测试
- 数据项的修改操作
- 数据项的增加操作
- 数据项的删除操作
- 数据表增加满
- 数据表删除空
- 删除空表中的记录
- 数据表的并发操作
- 针对存储过程的接口测试
- 结合业务逻辑做关联表的接口测试,需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试
单元测试
单元测试侧重于逻辑覆盖,数据库开发的单元测试相对简单
- 语句覆盖
- 通过走读方式
功能测试
- DBunit
一款开源的数据库功能测试框架,可以使用类似5Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。 - QTP
通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。 - DataFactory
一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试。
数据库性能
性能优化分4部分
-
物理存储方面
-
逻辑设计方面
-
数据库的参数调整
-
SQL语句优化
-
数据库系统的SQL语句分析工具,分析得到数据库语句执行的瓶颈,从而优化SQL语句
-
Loadrunner
- 通过对协议的编程来对数据库做压力测试
-
Swingbench
- 专门针对oracle
-
oracle11g
提供了real aplication test,提供数据库性能测试,分析系统的应用瓶颈
数据库安全测试
- SQL注入攻击、跨站点脚本攻击、未经授权的用户访问
- 所谓SQL注入(SQL Ijectin),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。
- 数据库强大的存储过程,黑客可以轻松的获得整个系统的权限
今天太阳也东升,而后西沉,早晨盛开的花儿也将凋谢;今天的太阳也西沉,而后东升,阳光照射之处遍地花开,但却已非昨日之花。