数据库测试[编辑]
一、简介:数据库测试是依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行的测试。软件应用程序已经离不开数据库。无论是在Web、桌面应用、客户端服务器,都需要数据库在后端操作。
二、测试分类:
(1)系统测试
传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这个进行分析,测试.例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证该修改是否落实到数据库上。
这个阶段我们的测试主要通过数据库设计评审来实现。
(2)集成测试
集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是
数据项的修改操作
数据项的增加操作
数据项的删除操作
数据表增加满
数据表删除空
删除空表中的记录
数据表的并发操作
针对存储过程的接口测试
结合业务逻辑做关联表的接口测试
同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试
(3)单元测试
注重逻辑覆盖。
可以通过语句覆盖和走读方式完成。
(4)功能测试
对数据库功能的测试我们可以依赖与工具进行
DBunit:一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。
QTP:大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。
DataFactory:一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试。
(5)数据库性能
性能优化分4部分 :物理存储方面;逻辑设计方面;数据库的参数调整;SQL语句优化.。
Loadrunner:这个不用多说,我们可以通过对协议的编程来对数据库做压力测试
Swingbench(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)
数据库厂商也意识到这点,例如:oracle11g已经提供了real application test,提供数据库性能测试,分析系统的应用瓶颈。
(6)安全测试
软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端
自从SQL 注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。
业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。
对于这点来说业界也有标准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMM和ISO的集成的产物,专门针对系统安全领域的
另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点
我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求。
三、数据测试操作
目前,市场中有很多活跃的数据库工具,例如MS-Access2010,MS SQL Server2008 r2,Oracle 10g,Oracle Financial,MySQL,PostgreSQL,DB2等等。它们在成本、可靠性、功能和安全性都有各自的优势。
(1)操作流程:下面简单的介绍数据库中‘CRUD'所代表的操作。
C:创建——创建用户。
R:检索——执行检索视图操作。
U:更新——更新数据库信息。
D:删除——执行删除数据库操作。
普遍用户在操作数据时,都会用到以上四种操作。
(2)数据库测试预备工作:
在数据库测试中如何准备各种测试数据
在数据库开发和测试中,我们经常要准备很多各种各样的测试数据,如 del,asc 格式的,时间日期型的,二进制的,big endian,little endian 的,还有 DB2 支持的的 zoned 和 packed 数据。
ACID属性
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。在数据库测试期间必须测试这四个要素,确保正确。
数据完整性
考虑到不同模块的应用程序以不同的方式使用相同的数据,并执行对数据所有的CRUD操作。确保数据库中包含的数据尽可能地准确和一致的数据性质,这就是数据完整性。
业务准确性
数据库发展至今,已不再是单纯的用来存储记录。事实上,数据库系统已经发展成为强大的工具,为开发者们提供了足够的扩展支持。数据库系统比以前具有了更多的强大功能,例如参考完整性,关系约束,触发器和存储过程。
(3)如何测试数据库:
创建查询
为了测试测试数据库正确和准确性。首先,测试人员要熟练掌握SQL和DML(数据库语言)语句。其次,测试人员应该掌握数据库的结构。如果满足这两个条件,即可放心测试。对于小、中型技术开发出的应用程序是个很好的测试方法。此外,如果程序相对的复杂,测试人员需要求助开发人员帮忙。但是我建议大家从初级开始测试,既有信心也能提高自己的SQL技术。
查询数据表
测试人员可以通过查看数据表来验证应用程序GUI的操作结果。但是,这种方式对于拥有大量数据的数据库,查询是相当的乏味和繁琐。验证多个数据表也是相当困难。
从开发人员查询
这个是测试数据库最简单的方法,从GUI执行任何CRUD操作和执行各自的SQL查询,从开发人员获得验证及其结果。这种方式似乎是最好的测试数据库方式。如果开发人员查询出语句错误或是不符合用户的要求,可以尽快的修改错误语句。
(4)操作总结
数据库是每个软件程序的核心部分。数据库测试已被被高度重视,测试人员需要具备良好的SQL技术。为了保证测试结果正确无误,应将上述四个元素分配给不同的测试人员交叉测试,确保万无一失
网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。