一、什么是数据库测试?
数据库测试也称为后端测试。数据库测试分为四个不同的类别。
[if !supportLists]· [endif]数据完整性测试
[if !supportLists]· [endif]数据有效性测试
[if !supportLists]· [endif]数据库相关的性能
[if !supportLists]· [endif]测试功能,程序和触发器
二、数据库中数据的基本结构
定义一:数据元素集合(也可称数据对象)中各元素的关系。
定义二:相互之间存在特定关系的数据元素集合。
一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多 字段(数据项)组成数据库测试分类系统测试、集成测试、单元测试、功能测试、性能测试、安全测试系统测试、数据库在初期设计中需要进行分析测试。
三、数据库测试分类
从测试过程的角度来说我们也可以把数据库测试分为
系统测试
数据库在初期设计中需要对需求覆盖进行分析,测试..另一方面需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
这个阶段我们的测试主要通过数据库设计评审来实现。
集成测试
集成测试是主要针对接口进行的测试工作,数据库需要考虑的是
数据项的修改操作
数据项的增加操作
数据项的删除操作
数据表增加满
数据表删除空
删除空表中的记录
数据表的并发操作
针对存储过程的接口测试
结合业务逻辑做关联表的接口测试
同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试
单元测试
单元测试侧重于逻辑覆盖,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成。
而我们也可以从测试关注点的角度对数据库进行分类
功能测试
对数据库功能的测试我们可以依赖与工具进行
DBunit
一款开源的数据库功能测试框架,可以对数据库的基本操作进行白盒的单元测试,对输入输出进行校验
QTP
通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。比较偏向灰盒。
DataFactory
一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。属于黑盒测试。
数据库性能
性能优化分4部分
1.物理存储方面
2.逻辑设计方面
3.数据库的参数调整
4.SQL语句优化.
数据库性能测试工具:
Loadrunner
可以通过对协议的编程来对数据库做压力测试
Swingbench(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)
安全测试
自从SQL 注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。
四、在数据库测试中,我们需要正常检查什么?
通常,我们在DB Testing中检查的内容是:
[if !supportLists]· [endif]约束检查
[if !supportLists]· [endif]验证字段大小
[if !supportLists]· [endif]存储过程
[if !supportLists]· [endif]将应用程序字段大小与数据库匹配
[if !supportLists]· [endif]基于绩效的问题的索引
五、解释什么是数据驱动测试?
在数据表中,为了测试多个数据,使用数据驱动的测试。通过使用它,它可以很容易地从不同位置同时替换参数。
六、什么是连接并提及不同类型的连接?
Join用于显示两个或两个以上的表,连接类型为:
[if !supportLists]· [endif]自然加入
[if !supportLists]· [endif]内部联接
[if !supportLists]· [endif]外加入
[if !supportLists]· [endif]交叉加入
外部联接又分为两部分:
[if !supportLists]· [endif]左外连接
[if !supportLists]· [endif]右外连接
七、什么是索引并提及不同类型的索引?
索引是数据库对象,它们是在列上创建的。为了快速获取数据,经常访问它们。不同类型的索引是:
[if !supportLists]· [endif]B树索引
[if !supportLists]· [endif]位图索引
[if !supportLists]· [endif]聚集索引
[if !supportLists]· [endif]覆盖指数
[if !supportLists]· [endif]非唯一索引
[if !supportLists]· [endif]独特的指数
八、在数据库测试中,测试数据加载的步骤是什么?
以下步骤需要遵循测试数据加载
[if !supportLists]· [endif]应该知道源数据
[if !supportLists]· [endif]目标数据应该是已知的
[if !supportLists]· [endif]应检查源和目标的兼容性
[if !supportLists]· [endif]在SQLEnterprise管理器中,打开相应的DTS包后运行DTS包
[if !supportLists]· [endif]您必须比较目标和数据源的列
[if !supportLists]· [endif]应检查目标和源的行数
[if !supportLists]· [endif]更新源中的数据后,检查更改是否显示在目标中。
[if !supportLists]· [endif]检查NULL和垃圾字符
九、为数据库测试编写测试用例的方法是什么?
编写测试用例就像功能测试一样。首先,您必须了解应用程序的功能要求。然后你必须决定编写测试用例的参数
[if !supportLists]· [endif]目标:写出您想要测试的目标
[if !supportLists]· [endif]输入法:编写要执行的操作方法或输入
[if !supportLists]· [endif]预期:它应该如何出现在数据库中
十、要管理和操作测试表,您在数据库测试中使用了哪些SQL语句?
SELECT,INSERT,UPDATE,DELETE等语句用于操作表,而ALTER TABLE,CREATE TABLE和DELETE TABLE用于管理表。
总结:
数据库的健壮性,容错性和恢复能力也是我们测试的要点,我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的基本要求。