【问题标题】:Setting up a diverse database testing environment搭建多样化的数据库测试环境
【发布时间】:2010-10-19 23:54:22
【问题描述】:

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

  • MySql
  • Sql Server 2000 到 2008
  • PostgreSQL
  • Oracle 9i 和 10g
  • Jet 4.0(MS 访问)
  • MSDE
  • Sybase Adaptive Server Anywhere
  • Sybase Sql Anywhere
  • OpenEdge 进展

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

我确信其他人必须设置类似的测试环境,我想利用其中的一些智慧 - 您最终使用了哪些策略,哪些策略有效或无效?

一些想法:

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

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

【问题讨论】:

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


    【解决方案1】:

    听起来您已经很清楚该做什么了。我建议以下虚拟机布局:

    一个 Windows Server 2008 盒子,承载以下内容:

    • MSDE
    • Jet 4.0(MS 访问)
    • Sybase Adaptive Server Anywhere
    • Sybase Sql Anywhere
    • OpenEdge 进展

    在 Ubuntu 或 Red Hat 机器上:

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

    【讨论】:

      【解决方案2】:

      Oracle 许可证摘录:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

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

          【讨论】:

            【解决方案5】:

            Oracle 确实有一个免费的“快捷版”。它不具备 Oracle 的所有功能,但如果您还针对 Jet 运行,那么这应该不是问题。

            【讨论】:

            • 很高兴知道......将不得不调查,你知道他们是否有 9i 和 10g 快递版?
            • 目前只有 10g (10.2.0.1)。
            • Blast,希望能覆盖 2011 年 9 月 10 日……尽管开发许可听起来无论如何都对我有用。
            【解决方案6】:

            我们在这里所做的(大部分)是为所需的每个配置提供一个虚拟机,我们还针对不同的操作系统,因此我们正在测试大约 22 种配置。这些虚拟机托管在 ESX 服务器中,并编写了脚本以在需要时启动和停止,这样它们就不会同时运行。设置工作很多

            就数据库服务器的成本而言,我们正在构建的软件类型需要高端版本,因此测试成本已计入整体开发成本(我们只好“忍气吞声”)

            【讨论】:

            • 我们在这里也使用 ESX 服务器 - 向上/向下旋转数据库听起来可能有点挑战 :) 尤其是在保持构建速度相当快方面...在对前一个 VM 运行测试时在后台运行下一个 db VM?
            • 是的,这正是我们正在做的,它工作正常(现在),但当然旋转起来很慢。开始时有很多心痛。
            • 除此之外的电力成本我可能会更好地解决这个问题......嗯 - 你们花了多长时间来完成所有设置,你粗略地想吗?跨度>
            • 哦,上下班大概要工作 10 天左右(超过 3-4 个月)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-08-24
            • 2019-01-12
            • 1970-01-01
            • 2012-01-23
            • 2017-05-18
            • 2022-01-13
            • 1970-01-01
            相关资源
            最近更新 更多