有关数据库单元测试的几个常见问题
何为单元测试?
如果你对单元测试还不太了解, 可以看看中文维基百科的词条 http://zh.wikipedia.org/zh-cn/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95
何为数据库单元测试?
如果你对数据库单元测试还不太了解, 可以看看下面英文网站 http://www.agiledata.org/essays/databaseTesting.html
数据库单元测试的范围是什么?
1.数据库中的所有程序, 这包括存储过程/存储函数, 视图等, 对于Oracle, 还有package这个概念.
2.数据库中的一些数据, 比如控制表, 数据字典表
3.其他情形(这一点是废话, 你可能在很多法律条文中, 经常看到它)
由谁来做数据库代码单元测试?
和一般的单元测试一样, 应由数据库代码的开发者做.
为什么要做数据库的单元测试?
如果你认为有必要对C#, Java代码做单元测试, 那么你就应该想到也需要对数据库代码做单元测试,. 具体讲:
1. 错误越早发现,修复的代价越小, 这一点, 我想做所有软件同学都有同感吧. 单元测试可能是最早能帮你找到defect的环节了.
2. 单元测试提供了一种结构化的回归测试方式, 尤其是对不断演进的系统, 回归测试好处多多, 很多时候, 你可以通过回归测试, 发现新改动对原有功能造成了影响.
3. 如果你采用测试驱动开发TDD来做项目, 那单元测试工具是比不可少的. 至于何为测试驱动开发, 请参考维基百科(http://zh.wikipedia.org/zh-cn/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91) 或者(http://www.agiledata.org/essays/tdd.html)
4. 如果你的team要做Continuous Integration, 单元测试工具也是比不可少的.
有了Mock框架, 数据库单元测试还需要吗?
要回答这个问题, 你需要清楚为什么引入Mock的原因是什么. 如果你要测试一段包含数据库逻辑的C#代码, 你完全可以使用Mock来做模拟数据库逻辑, 而且, 我认为, 这是一个值得推荐的做法, 原因: 一来, 你的目标是测试C#的逻辑, 而不是相关的数据库代码, 理所当然, 应该假设数据库代码是正确的, 但事实上, 数据库代码不一定是正确的, 因此, 你需要一个数据库代码的替身. 二来, 一旦包含了数据库代码的测试, 情况将变得很复杂, 也许你不得不处理, 如何初始化数据库的数据, 在测试之后, 如何恢复数据库的状态.
稍等, 这时候数据库代码的测试还没有被cover到, 你就需要一个专门的数据库单元测试工具了.
一个数据库单元测试工具应该具备的功能?
1. 很多时候, 要测试一个逻辑, 你需要在数据库中初始化一些基础数据, 单元测试软件应该能让我们很方便地准备这些基础数据.
2. 前一点算是setup吧, 在做完测试工作后, 可能还需要有一个teardown过程, 所以这个也是必须的.
3. 因为你可能需要对一个数据库代码做多次单元测试, 所以, 单元测试最好可以工作在一个Sand Box中.
4. 它支持的测试用例应该是declarative, 而不是imperative
有关数据库单元测试的几个常见问题相关推荐
- 使用dbUnit,JSON,HSQLDB和JUnit规则进行数据库单元测试
在本周TDD课程的运行中,我认为编写一些夹具以简化dbUnit的使用将很有趣. 我最初的想法只是教dbUnit有关JSON的知识,但事实证明Lieven Doclo已经做到了. 因此,我决定更进一步, ...
- 软件测试宝藏图_tSQLt –数据库单元测试中被遗忘的宝藏
软件测试宝藏图 This article is an overview of tSQLt, which is one of the best SQL unit testing frameworks, ...
- Springboot单元测试mysql_Springboot Mybatis-Plus数据库单元测试实战(三种方式)
单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写 ...
- 谈一下我们是怎么做数据库单元测试(Database Unit Test)的
背景介绍 最近在团队在做release之前的regression,把各个feature分支merge回master之后发现DB的单元测试出现了20多个失败的test cases.之前没怎么做过DB的单 ...
- dbunit使用_使用dbUnit,JSON,HSQLDB和JUnit规则进行数据库单元测试
dbunit使用 在本周TDD课程的运行中,我认为编写一些夹具以简化dbUnit的使用将很有趣. 我最初的想法只是教dbUnit有关JSON的知识,但事实证明Lieven Doclo已经做到了. 因此 ...
- 数据库-解决MySQL的一些常见问题
实例 以下是如何解决MySQL的一些常见问题的示例. 首先创建一个表,并且导入数据 CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAU ...
- 最新版AnyDbTest数据库单元测试工具的下载地址
为了方便国内用户使用AnyDbTest软件, 已将软件发布到codeplex网站了. http://anydbtest.codeplex.com/releases/ 注: AnyDbTest原网站ht ...
- mysql数据库开发常见问题及优化
mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...
- sql重命名数据库_为什么要为SQL单元测试巧妙地命名数据库对象
sql重命名数据库 This article is focussed on clever database object naming from both development and SQL un ...
最新文章
- qt定时器是阻塞的吗_吊打面试官 | 面试官:TCP真的可靠吗
- JS 活学活用正则表达式
- php echo表单提交_PHP常见面试题及答案
- lt;%%gt;创建内联代码块(表达)
- JAVA对象集合转化为xml转换_xml转为Map集合以及对象转化为xml
- java deque.pop_Java ArrayDeque pop()方法
- 世界一流大学博士生典型科研特征
- 为什么大家越来越不着急换手机?
- 计算机组成加速比例题,计算机体系结构大题预测
- 8uftp,什么是8uftp
- emouse思·睿—评论与观点整理之一
- 计算机cad比例尺1 150,CAD图纸里面 1:50 和:1:100和1:150三个比例分别怎么换算...
- Python学习笔记-数据类型(元组 tuple)
- MATLAB输出白色背景图片
- 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)
- LOAM源码结合论文解析(二)laserOdometry
- PyQt5 常用窗口总结
- 人民币贬值之后该买什么
- 2016年阿里巴巴、腾讯等公司暑期实习面试经验分享
- 用Python中的马尔科夫链进行营销渠道归因
热门文章
- 启用 WebLogic Server 域之间的信任
- 中国无线充电器市场现状研究分析与发展前景预测报告
- 用VB6.0在Vista下实现全磨砂玻璃窗口
- 手把手教你用Python做个可视化的“剪刀石头布”小游戏
- 用python把当前路径下excel转化为pdf
- VFP 导出到excel
- python学习软件破解版_Thonny下载-Thonny(Python编程学习软件)v2.2.2官方免费版-ucbug下载站...
- python遥感影像地物分类_基于TensorFlow的遥感影像地物识别方法研究
- 内容营销专家刘鑫炜:品牌没人知道啥办?如何快速推广自己的品牌
- 模拟QQ上线头像闪动效果