如何使用虚拟机进行自动化测试?

13

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

我想要的是以下场景:

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

如果有必要我使用TeamCity。对于虚拟机,我们使用VirtualBox,但如果需要,我们可以使用任何其他虚拟机。

是否有适合管理此方案的应用程序/套件?

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

我需要能够在测试后关闭VM并还原到先前的快照,因为我希望它处于下一个测试的已知状态。

有什么建议吗?

3个回答

13

我有一个类似的设置正在运行,我选择使用 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模拟生产环境,而无需自己处理(即,对数据库设置的更改会同步到所有开发人员的虚拟机中,无论他们在哪里),并且相同的脚本也可以用于生产。


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

很高兴知道有编程的方法。我要去看看是否有人做了一个 C# 的前端。 - Stécy
1
@Stecy - 这是COM,所以你可能不需要一个C#前端。特别是如果你正在使用.NET 4并且可以使用dynamic关键字。 - TrueWill

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接