建立多样化的数据库测试环境

Bit*_*der 6 database sql-server oracle continuous-integration integration-testing

我正在编写一些需要针对不同数据库产品阵列工作的代码.

  • MySQL的
  • Sql Server 2000到2008
  • PostgreSQL的
  • Oracle 9i和10g
  • Jet 4.0(MS Access)
  • MSDE
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • 进步OpenEdge

作为持续集成构建的一部分,我们需要针对每个数据库产品运行一组通用集成测试.

我相信其他人不得不设置类似的测试环境,我想深入了解一些智慧 - 你最终使用的是什么策略,什么工作得好或者效果不好?

一些想法:

  • 每个产品都有单独的虚拟机,每个虚拟机分配少量内存(在某些情况下更容易管理,或者我们对各个产品的设置略有不同).
  • 所有产品都有几个虚拟机甚至是一个虚拟机(也许是用于postgresql和mysql的ubuntu盒子,以及用于剩余产品的windows 2008服务器机器) - 我喜欢一个或两个vm,因为这是一个更便携的运行测试的环境,即在公路/非现场,因为我的笔记本电脑可能会停止运行8或10个小型VM.

最后你是如何解决其中一些商业产品(即Oracle或Progress OpenEdge)的高成本,以及之前的版本仍然可用,即有免费的"单一开发者"版本,还是购买这些产品的更便宜的途径?

Mar*_*son 6

  • 我们还为我们的服务器使用vmware,每个数据库使用一个vmware主机.您应该可以在一个vmware上放置几个数据库.
  • 昂贵的软件许可证不应该有太大问题.例如,Oracle允许您拥有所有产品的开发许可证.只要您没有在笔记本电脑vmware上运行生产数据库,就应该没问题.当然,IANAL.
  • 对于Oracle,如果您的客户将使用(最有可能),请获取企业版.
  • 确保并利用vmware快照.您可以完美地配置数据库以运行测试,运行测试,然后将数据库恢复到测试前状态,以便再次运行测试.