如何处理严重依赖数据库的测试应用程序?

前端之家收集整理的这篇文章主要介绍了如何处理严重依赖数据库的测试应用程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在工作中,我们发现我们的测试套件已经到了这点,反复运行太慢了,我真的不喜欢.整个套件至少需要5分钟,只需要3分钟即可完成后端数据对象测试.所以,我很好奇听到人们进行测试.

目前,我们有一个具有实时模式和_test模式的数据库服务器.当测试运行时,它首先运行一个sql脚本,该脚本说明如何填充测试数据库(并清除可能会阻碍的所有旧数据).这发生在几乎所有的测试.从我可以看到,这是我们测试中最大的瓶颈 – 我刚刚分析了一个测试,大约需要800ms来设置数据库,然后每个后续测试运行在大约10ms.

我一直试图找出一些解决方案,这里是我到目前为止发现的:

>使测试模式填充一次,并在每次测试结束时进行回滚更改.

这似乎是最简单的解决方案,但它的确意味着我们将不得不添加一些特殊情况的东西来测试依赖于回滚(即错误处理测试)的东西.
>尽可能模拟数据库

我们将为正在测试的数据对象设置数据库,但会模拟所依赖的任何内容.对我来说,这似乎并不奇怪,有两个原因.首先,当我们设置数据库时,由于外键依赖关系,我们仍然(通常)最终会有更多的行.其次,大多数数据对象模型并不真正与其他对象模型进行交互,它们只是进行JOIN.
>运行相同的系统,但使用转储和RAMFS

而不是运行一个大的SQL查询,而是加载数据库转储.测试服务器将在RAMFS分区上运行,并希望带来一些速度优势.

我不能测试,因为我在OSX上,从我可以看到,没有ramfs的支持.

还有一些其他的选择,就像使用sqlite一样,但是这对我们来说不是一个选择,因为我们依赖于一些Postgresql特定的扩展.

HALP!

猜你在找的设计模式相关文章