分类:
2008-10-15 16:43:38
随着软件业的迅猛发展,我们的开发也从以前的单层结构进入了三层架构甚至现在多层架构的设计,而数据库从以前一个默默无闻的后台仓库,逐渐成为了数据库系统,而数据库开发设计人员成为了炙手可热的核心人员。以前我们往往把数据库操作写在应用层,从而提高各个模块的独立性和易用性,而现在越来越多的数据库操作被作为过程直接放在数据库上进行执行来提高执行效率和提高性。
数据库开发既然在软件开发的比重逐步提高,随之而来的问题也突出。我们以前往往重视对代码的工作,随着流程技术的日益完善,软件质量得到了大幅度的提高,但数据库方面的仍然处于空白。我们从来没有真正将数据库作为一个独立的系统进行测试,而是通过对代码的测试工作间接对数据库进行一定的测试。随着数据库开发的日益升温,数据库测试也需要独立出来进行符合自身特点的测试工作。数据库开发和应用开发并没有实质上的区别,所以软件测试的方法同样适用于数据库测试
从测试过程的角度来说我们也可以把数据库测试分为
系统测试
传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这个进行分析,测试.例如过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
这个阶段我们的测试主要通过数据库设计评审来实现。
集成测试
集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是
数据项的修改操作
数据项的增加操作
数据项的删除操作
数据表增加满
数据表删除空
删除空表中的记录
数据表的并发操作
针对存储过程的接口测试
结合业务逻辑做关联表的接口测试
同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试
单元测试
单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成
系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。
而我们也可以从测试关注点的角度对数据库进行分类
功能测试
对数据库功能的测试我们可以依赖与工具进行
DBunit
一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验
[1]