数据库开发既然在软件开发的比重逐步提升,随之而来的问题也突出。咱们之前每每重视对代码的测试工做,随着流程技术的日益完善,软件质量获得了大幅度的提升,但数据库方面的测试仍然处于空白。咱们历来没有真正将数据库做为一个独立的系统进行测试,而是经过对代码的测试工做间接对数据库进行必定的测试。随着数据库开发的日益升温,数据库测试也须要独立出来进行符合自身特色的测试工做。数据库开发和应用开发并无实质上的区别,因此软件测试的方法一样适用于数据库测试。 前端
从测试过程的角度来讲咱们也能够把数据库测试分为: 数据库
系统测试 编程
传统软件系统测试的测试重点是需求覆盖,而对于咱们的数据库测试一样也须要对需求覆盖进行保证。那么数据库在初期设计中也须要对这个进行分析,测试.例如存储过程,视图,触发器,约束,规则等咱们都须要进行需求的验证确保这些功能设计是符合需求的.另外一方面咱们须要确认数据库设计文档和最终的数据库相同,当设计文档变化时咱们一样要验证改修改是否落实到数据库上。 这个阶段咱们的测试主要经过数据库设计评审来实现。 安全
集成测试 性能优化
集成测试是主要针对接口进行的测试工做,从数据库的角度来讲和普通测试稍微有些区别对于数据库测试来讲,须要考虑的是: 并发
数据项的修改操做; oracle
数据项的增长操做; 框架
数据项的删除操做; 数据库设计
数据表增长满; ide
数据表删除空;
删除空表中的记录;
数据表的并发操做;
针对存储过程的接口测试;
结合业务逻辑作关联表的接口测试;
一样咱们须要对这些接口考虑采用等价类、边界值、错误猜想等方法进行测试。
单元测试
单元测试侧重于逻辑覆盖,相对对于复杂的代码来讲,数据库开发的单元测试相对简单些,能够经过语句覆盖和走读的方式完成系统测试相对来讲比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。
而咱们也能够从测试关注点的角度对数据库进行分类:
功能测试
对数据库功能的测试咱们能够依赖与工具进行。 DBunit 一款开源的数据库功能测试框架,可使用相似与Junit的方式对数据库的基本操做进行白盒的单元测试,对输入输出进行校验。
DataFactory
一款优秀的数据库数据自动生成工具,经过它你能够轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所须要的大量数据从而验证咱们数据库中的功能是否正确。这是属于黑盒测试。 数据库性能 虽然咱们的硬件最近几年进步很快,可是咱们须要处理的数据以更快的速度在增长。几亿条记录的表格在如今是司空见惯的,如此庞大的数据量在大量并发链接操做时,咱们不能像之前同样随意的使用查询,链接查询,嵌套查询,视图,这些操做若是不当会给系统带来很是巨大的压力,严重影响系统性能。
性能优化分4部分:
1.物理存储方面 2.逻辑设计方面 3.数据库的参数调整 4.SQL语句优化
咱们如何对性能方面进行测试呢,业界也提供了不少工具。
经过数据库系统的SQL语句分析工具,咱们能够分析获得数据库语句执行的瓶颈,从而优化SQL语句。
Loadrunner 这个不用多说,咱们能够经过对协议的编程来对数据库作压力测试。 Swingbench(这是一个重量级别的feature,相似LR,并且很是强大,只不过专门针对oracle而已) 数据库厂商也意识到这点, 还有不少第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工做从而提升执行效率。
安全测试
软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏如今更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端。自从SQL 注入***被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在***的手下,经过数据库强大的存储过程,***能够轻松的得到整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来讲,如何防范系统被注入是测试的难点。业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。 对于这点来讲业界也有标准,例如ISO IEC 21827,也叫作SSE CMM 3.0,是CMM和ISO的集成的产物,专门针对系统安全领域的另一方面,数据库的健壮性,容错性和恢复能力也是咱们测试的要点,咱们也能够发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员须要逐步掌握的技能,这也是之后公司对数据库测试人员的要求。