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

Sql server 建立多样化的数据库测试环境,sql-server,database,oracle,continuous-integration,integration-testing,Sql Server,Database,Oracle,Continuous Integration,Integration Testing,我正在编写一些代码,这些代码需要针对一系列不同的数据库产品工作 MySql Sql Server 2000至2008 PostgreSQL Oracle 9i和10g Jet 4.0(MS访问) MSDE Sybase Adaptive Server Anywhere Sybase Sql Anywhere 进展开放 作为持续集成构建的一部分,我们需要针对每个数据库产品运行一组通用集成测试 我相信其他人也已经建立了类似的测试环境,我想利用其中的一些智慧-你最终使用了什么策略,什么效果好还是不

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

  • MySql
  • Sql Server 2000至2008
  • PostgreSQL
  • Oracle 9i和10g
  • Jet 4.0(MS访问)
  • MSDE
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • 进展开放
作为持续集成构建的一部分,我们需要针对每个数据库产品运行一组通用集成测试

我相信其他人也已经建立了类似的测试环境,我想利用其中的一些智慧-你最终使用了什么策略,什么效果好还是不好

一些想法:

  • 每个产品都有单独的虚拟机,每个虚拟机都分配了少量内存(在某些情况下更易于管理,或者在个别产品的设置略有不同的情况下)
  • 所有产品都有几个虚拟机,甚至一个虚拟机(例如,postgresql和mysql可能有一个ubuntu box,剩下的产品有一个windows 2008 server machine)——我喜欢一两个虚拟机,因为这是一个更便携的环境,可以运行测试,例如在路上/场外,因为我的笔记本电脑可能会停止运行8或10个小型虚拟机
最后,您是如何解决一些商业产品(如Oracle或Progress OpenEdge)高昂的成本问题的,以及以前的版本是否仍然可用,即是否有免费的“单一开发人员”版本,或购买这些产品的更便宜的途径?

我们在这里做的是(主要是)对于所需的每种配置,我们也针对不同的操作系统,所以我们要测试22种配置。这些虚拟机托管在ESX server中,并编写脚本以在需要时启动和停止,这样它们就不会同时运行。这是一项艰巨的工作


就数据库服务器的成本而言,我们正在构建所需的高端版本的软件类型,因此测试成本已被纳入总体开发成本中(我们只需“承担”)

Oracle确实有一个免费的“Express Edition”。它不具备Oracle的所有功能,但如果您也在与Jet竞争,那么这不应该是一个问题。

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

在体系结构上,最好创建一个功能强大的服务器集成测试场,以运行各种配置的虚拟机。它可以前置一个队列进程,监听集成测试请求(可以使用svn提交或其他源代码管理签入触发器触发)

为了获得最精确的测试范围,您可能需要为每个配置使用单独的VM。这将降低配置冲突的风险,并提高运行自定义虚拟机集(例如Oracle+MySQL+PostgreSQL,而不是其他虚拟机)的灵活性。根据您的构建过程,它还允许您运行10分钟的构建


运行集成测试场的一个好处是,如果您在路上使用笔记本电脑,您可以在代码签入后触发集成构建,运行所有测试并让它通知您结果。您还可以存档每个请求和结果,以帮助诊断失败的版本。

Oracle许可证摘录:

我们授予您非排他性、不可转让的有限许可证,允许您仅将程序用于开发、测试、原型设计和演示您的应用程序,而不用于任何其他目的

因此,您可以下载完整的Oracle版本9、10和11,并按照许可证中的说明免费使用它们。
查看下载部分,听起来你已经知道该做什么了。我建议使用以下VM布局:

承载以下内容的Windows Server 2008机箱:

  • MSDE
  • Jet 4.0(MS访问)
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • 进展开放
在Ubuntu或红帽盒上:

  • MySql
  • PostgreSQL
  • 甲骨文9i
  • 甲骨文10g

我看不出有任何必要针对成熟的SQL和Oracle版本进行测试。免费版本被剥离,因此当您在这些服务器的完整版本上运行时,代码被破坏的风险很小。如果您针对完整服务器进行了测试,然后选择了免费的东西,那么是的,有些东西可能会崩溃,但是通过使用最小公分母进行测试,您应该确保良好的质量。

我们在这里也使用ESX server-向上/向下旋转数据库听起来可能有点困难:)特别是在保持构建速度方面。。。您是否在后台运行下一个db虚拟机,同时对上一个虚拟机运行测试?是的,这正是我们正在做的,它工作正常(现在),但运行速度非常慢。开始的时候,让一切运转起来让人心痛不已。除了电力成本之外,我最好还是投入更多的硬件来解决这个问题。。。嗯-你们花了多长时间才弄到手