数据库测试

上一篇 / 下一篇  2007-12-19 12:18:32 / 个人分类:学习笔记

很幸运能上这节'云'老师的课,一是在数据库测试、测试这方面听到了很多思路,一天的课一定不会涉及到很多具体的内容,思路就在足够了;另外更了解了自己一个很严重的缺陷,就是不擅长把简单的问题考虑周全,做深做好,学习也一样,不善于把东西学得更深入一些,不好的本性,得改;还有就是上课本身也很愉快~

数据库测试

范式
范式:范式是关系数据库在设计的时候要遵守的一些规则,最常用的有1NF,2NF,3NF,还有BCNF
1NF:数据库的每个字段都是单一属性,不可再分。(很好理解)
2NF:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,也就是任何的非关键字段都依赖于任何一组关键字段。(也就是当骷辛礁鲆陨献侄问保渲幸桓霾荒艿ザ谰龆ㄎㄒ环侵骷侄危?BR>3NF:在2NF的基础上,不存在任意非关键字段对其他非关键字段的函数依赖(所有非关键字段都必须是由主键来决定的,而不能一部分非关键字段有某个非关键字段决定)

数据库建模
待学习…………
想要发现数据库设计的问题,必须要很好的了解数据库设计,这是必然。

数据库系统测试的对象
数据库设计是否与实现相同。这是最容易做到的一点。如果没有数据库设计文档怎么办?逆向工程,可以用工具将数据库sql导出,再转换成关系图
数据库设计是否符合范式
数据库设计是否合理 经验
数据库安装、配置测试

数据库集成测试对象
数据库的增删改操作
数据表加满(这里的加满是指加满数据文件所在磁盘空间,可以为其分配一个小的磁盘空间,逆向思维)
数据表空
删除空表记录
数据表的并发操作(即使数据库做了主键约束,在并发很多的时候也会导致插入重复主键的数据,就会导致数据库的死锁,down掉)
针对存储过程的接口测试:也可以编写驱动和桩
结合业务逻辑做关联表的接口测试

数据库单元测试的重点
语句覆盖
走读
eg:已知yx表,包括id,salary字段,中间2~10省略,另有yg表中的salary字段与yx.id有外键约束,要更新yg中的salary,为每个人加1级,如何写sql语句
update yg set salary = salary + 1 对吗?

 id

 salary
 0 面议
 1 1500以下
…  …
 11 20000以上


1)11不能再加
2)0不能加  update yg set salary = salary + 1 where salary > 0 and salary < 11;
3)如果有4.5这样的数据怎么办?
update yg set salary = salary + 1 where salary in (1,2,3,4,5,6,7,8,9,10);
4)如果更新错了怎么办?写成一个事务,可以commit,rollback
5)假设yx表中的数据发生变化了怎么办?还需要修改sql语句

(讨厌,死机了)
最后俺写的是
select * from yg;
update yg set salary = salary + 1
where salary in ( select id from yx)
and salary > ( select min(id) from yx)
and salary < ( select max(id) from yx);
关于第4)数据库事务,sqlserver有三种事务类型,隐式,显示,自动提交,默认为自动提交,可以设置
set implicit_transactions on设置为隐式事务,就是需要另外输入commit 或rollback 来结束事务
http://kyle.itpub.net/post/1626/10699

数据库功能测试
DataFactory 自动数据库数据生成器

数据库性能测试
Loadrunner
Swingbench 专门针对Oracle

性能优化考虑的顺序
磁盘存储
数据库设置
数据库设计
sql语句

数据库安全测试
sql注入
数据库的健壮性  严格的检查约束,主外键约束等
数据库的容错性
数据库自身的恢复能力


TAG: 学习笔记

西西里の芝士小屋 引用 删除 locy1223   /   2010-06-04 10:46:50
 

评分:0

我来说两句

我的栏目

日历

« 2024-05-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 6420
  • 日志数: 8
  • 建立时间: 2007-11-07
  • 更新时间: 2007-12-27

RSS订阅

Open Toolbar