随着市场对软件系统的要求越来越高,我们的软件产品结构也越来越复杂,从以前的单层结构进入了目前的双层,三层甚至多次架构的设计。同时,由于对数据存储,分析,安全,性能和稳定性的要求越来越高,数据库也从以前一个默默无闻的后台仓库,逐渐成为了数据库系统。同时数据库开发设计人员和数据库系统管理员成为各个公司不可或缺的重要人物。以前的开发往往把数据库操作写在应用层,从而提高各个模块的独立性和易用性,而现在越来越多的数据库操作被作为存储过程直接放在数据库上进行执行来提高执行效率和提高安全性。
既然数据库开发在软件系统中的比重逐步提高,那么由于数据库开发过程中存在的问题也随之而来。一个软件系统的功能,性能,安全性往往和数据库开发有直接的关系,但是实际工作中,我们从来没有真正将数据库作为一个独立的系统进行测试,而是通过对代码的测试工作间接对数据库进行一定的测,数据库方面的测试仍然处于空白。为了进一步的提高软件质量和开发效率,我们必须关注数据库测试,并且尽早的参与数据库开发。
我还是喜欢习惯性的先抛出几个问题:
1. 什么是数据库测试?
2. 数据库测试的分类?
3. 如何测试数据库?
4. 数据库对测试人员的要求?
我们一个个问题来回答,在寻找答案的过程中,我们会逐渐明白我们在数据库测试过程中需要掌握的一些东西。
1.什么是数据库测试?
具体的说,就是针对数据库各个方面进行测试,其中也包括功能性能安全等各个方面的测试,这个和软件测试的概念差不多。
2.数据库测试的分类。
从测试关注点的角度来说,数据库测试可以分为以下几大类
a) 功能测试
b) 性能测试
c) 安全测试
d) ……(健壮性测试,容错性测试和恢复能力等等)
其中,数据库的功能测试主要涉及到增、删、改、查等方面基本操作,数据有效性和准确性等等,对数据的输入输出进行检查;性能测试主要包括,插入,查询的并发,满负荷下的持续运行时间,数据库响应时间,CPU占用率,SQL语句优化等,安全测试最主要考虑的是SQL注入;另外健壮性测试,容错性测试和恢复能力也是我们测试的要点,主要考察数据库持续运行的时间。
按测试过程来分:
在设计初期,主要是针对例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
在单元测试阶段,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成;
j
NdF7^
]0cv%u!C248623.E h4kk2p-y在集成测试阶段,主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是:
l 数据项的修改操作
l 数据项的增加操作
l 数据项的删除操作
l 数据表增加满
l 数据表删除空
l 删除空表中的记录
l 数据表的并发操作
l 针对存储过程的接口数据查询测试
l 结合业务逻辑做关联表的接口测试
同样我们可以对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试;
系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验,我们根据我们自己的能力进行取舍,对数据库的功能,性能,安全性的各个方面进行测试。
关于如何进行测试,当我们提取了数据库的测试需求之后,我们可以选择手工测试或自动化测试,比较主流的工具主要有以下几种:
1. 功能测试:QTP,大名鼎鼎的自动测试工具,通过对对象的捕捉识别,可以设置数据库检查点,对业务流程进行模拟,适合系统稳定后,进行页面和原始数据的一个准确性进行测试。
2. 性能测试:LR,通过录制数据插入,查询的操作,虚拟多用户多并发长时间运行,达到压力测试的目的。另外,还有很多第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工作从而提高执行效率,如Embarcadero SQLTuner 2.0.2,LECCO SQL Expert等等
3. 安全测试:业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测,可根据需要酌情筛选。
要做好数据库测试,和其他测试一样,对测试人员也有很高的要求,比较特殊的要求主要有以下几项:
1. 熟练操作SQL,可以方便的进行数据库数据的查询和修改;(虚构数据和核对数据准确性时最用得着);
2. 熟悉数据库的安装、连接、配置。如果不会这些,测试数据库时,会变得非常的被动;
3. 了解各种类型的数据库,最好对他们的性能有个初步的印象。
4. 了解数据库的特性,跟据系统数据管理的需要选择正确的数据库做为系统支持;
5. 熟悉数据库的参数设置及调优,不同的数据库差别很大。这些特性会对数据库的使用,特别是性能方面造成很大的影响;(性能测试最用得着)
6. 如果可能,了解数据库固有的问题,会能帮助你暴露问题、有效进行测试;数据库本身就是个系统,其稳定性比较高,但是问题总是会存在。
参考文章:
http://www.51testing.com/?uid-104-action-viewspace-itemid-20167
http://www.51testing.com/html/23/n-89823.html
http://www.51testing.com/?uid-88979-action-viewspace-itemid-100829
http://www.51testing.com/?uid-316683-action-viewspace-itemid-209252