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

时间:2009-04-16 23:29:04

标签: sql-server database oracle continuous-integration integration-testing

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

  • MySQL的
  • Sql Server 2000到2008
  • 的PostgreSQL
  • Oracle 9i& 10克
  • Jet 4.0(MS Access)
  • MSDE
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • Progress OpenEdge

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

我确信其他人不得不设置类似的测试环境,我想深入了解一些智慧 - 你最终会使用哪些策略,哪些方法运行良好或哪些方法效果不佳?

一些想法:

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

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

6 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

我们在这里做的(大多数情况下)是针对所需的每个配置的VM,我们还针对不同的操作系统,因此我们正在测试22种配置。这些VM托管在ESX服务器中,并在需要时编写脚本以启动和停止,以便它们不会一次全部运行。设置工作是很多

就数据库服务器的成本而言,我们正在构建的软件类型需要高端版本,因此测试成本已经考虑到整体开发成本(我们只需要“吸收它”)

答案 2 :(得分:1)

Oracle确实有免费的“Express Edition”。它没有Oracle的所有功能,但如果你也在使用Jet运行,那么这应该不是问题。

答案 3 :(得分:1)

在架构上,最好创建一个功能强大的服务器集成测试服务器场来运行各种配置的虚拟机。可以使用队列进程监听集成测试请求(可以使用svn提交或其他源代码控制检查触发器来触发)。

对于最准确的测试范围,您可能希望为每个配置分别配置一个VM。这将降低配置冲突的风险,并增加运行自定义VM集的灵活性(例如Oracle + MySQL + PostgreSQL而不是其他VM等)。根据您的构建过程,它还可能允许您运行10分钟的构建。

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

答案 4 :(得分:1)

Oracle许可证摘录:

  

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

因此,您可以下载完整的Oracle版本9,10和11,并按照许可证中的说明免费使用它们。 检查www.oracle.com

上的下载部分

答案 5 :(得分:0)

听起来你已经知道该怎么做了。我建议使用以下VM布局:

托管以下内容的Windows Server 2008框:

  • MSDE
  • Jet 4.0(MS Access)
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • Progress OpenEdge

在Ubuntu或Red Hat盒子上:

我认为没有必要对完整的SQL和Oracle版本进行测试。免费版本被剥离,因此当您针对这些服务器的完整版本运行代码时,代码中断的风险很小。如果您已经针对整个服务器进行了测试并转向了免费的东西,那么有些事情可能会破坏,但是通过使用最小公分母进行测试,您应该确保良好的质量。