【问题标题】:How to use a virtual machine with automated tests?如何使用带有自动化测试的虚拟机?
【发布时间】:2011-06-15 14:16:07
【问题描述】:

我正在尝试使用虚拟机环境为我们的应用程序设置自动化测试。

我想要的是类似于以下场景:

  1. 构建服务器被自动触发以启动应用程序的自动化测试
  2. 然后运行“构建”脚本,其中包括:
    1. 将应用程序文件和测试脚本复制到 VM 可访问的位置
    2. 启动虚拟机
      1. 在 VM 中,一个特殊的应用程序会在共享文件夹中查找并启动测试脚本
      2. 测试脚本完成工作,结果输出到共享文件夹
      3. 测试脚本结束
      4. 然后特殊应用程序删除测试脚本
      5. 特殊应用程序以某种方式让 VM 管理器关闭 VM 并恢复到之前的快照
    3. VM 退出后,处理结果并发送给构建服务器。

如果这很重要,我正在使用 TeamCity。 对于虚拟机,我们使用 VirtualBox,但如果需要,我们也可以使用其他任何机器。

是否有任何应用程序/套件可以管理这种情况?

如果没有,那么我会自己编写代码,应该很容易,但我不确定的唯一部分是虚拟机的处理。

我需要做的是让虚拟机在测试后自行关闭并恢复到以前的快照,因为我希望它处于下一次测试的已知状态。

任何指针?

【问题讨论】:

    标签: automated-tests teamcity virtualization


    【解决方案1】:

    我有一个类似的设置正在运行,我选择使用Vagrant 作为我们的开发人员用于规范化开发环境的相同东西。

    虚拟机的初始状态是使用 puppet 编写的,但我们没有在每次测试中从头开始运行部署脚本,每天只运行一次。

    您可以使用 puppet/chef 来处理所有事情,但对于 VM 上的所有其他操作,我们将使用 Fabric 脚本,因为它们也用于实际部署,并且以某种方式更适合我们的工作方式。总之,脚本如下所示:

    vagrant up   # fire up the vm, and run the puppet provisioning tool
    fab vm run_test  # run tests on vm
    fab local process_result  # process results on local shared folder
    vagrant destroy  # destroy the vm
    

    优点是您的开发人员也可以使用 vagrant 来模拟您的生产环境,而无需自己处理(即,对数据库设置的更改会同步到所有开发人员的虚拟机,无论他们在哪里),并且可以使用相同的脚本也用于生产。

    【讨论】:

      【解决方案2】:

      VirtualBox 确实有一个COM API。我没有这方面的经验,但也许可以使用它。一种选择是让 TeamCity 触发一个脚本来执行此操作。我建议从NAnt(TeamCity 原生支持)开始,必要时可能执行 PowerShell。

      【讨论】:

      • 很高兴知道有一种编程方式。去检查是否有人在它前面做了一个 C#。
      • @Stecy - 它是 COM,所以你可能不需要 C# 前端。特别是如果您使用的是 .NET 4 并且可以使用 dynamic 关键字。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-30
        • 1970-01-01
        相关资源
        最近更新 更多