如何在自动测试中使用虚拟机?

| 我正在尝试使用虚拟机环境为我们的应用程序设置自动化测试。 我想拥有的是以下情况: 系统将自动触发构建服务器以启动应用程序的自动化测试 然后运行一个“ build”脚本,该脚本包括: 将应用程序文件和测试脚本复制到VM可访问的位置 启动虚拟机 在VM中,一个特殊的应用程序在共享文件夹中查找并启动测试脚本 测试脚本执行其工作,结果输出到共享文件夹 测试脚本结束 然后,特殊应用程序删除测试脚本 特殊应用程序使VM管理器以某种方式关闭VM并还原到先前的快照 VM退出后,处理结果并发送到构建服务器。 如果重要的话,我正在使用TeamCity。 对于虚拟机,我们使用VirtualBox,但如果需要的话,我们也对其他任何人开放。 是否有任何应用程序/套件可以管理这种情况? 如果没有,则我自己进行编码,应该很容易,但是我不确定的唯一部分是虚拟机的处理。 我需要做的是让虚拟机在测试后关闭并恢复到先前的快照,因为我希望它在下一次测试时处于已知状态。 有指针吗?     
已邀请:
        VirtualBox确实具有COM API。我没有经验,但是可以使用它。一种选择是让TeamCity启动脚本来执行此操作。我建议从NAnt(TeamCity本地支持)开始,并在必要时执行PowerShell。     
        我正在运行类似的设置,因此我选择将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
好处是您的开发人员还可以使用游民来模仿您的生产环境,而不必自己照顾自己(即,对数据库设置的更改将同步到所有开发人员vm所在的所有vm \),并且可以使用相同的脚本也用于生产。     
        尽管我都没有任何经验,但是最近我碰巧听说过这个领域的一些应用程序: http://www.infoq.com/news/2011/05/virtual_machine_test_harness http://www.automatedqa.com/techpapers/testcomplete/automated-testing-in-virtual-labs/     

要回复问题请先登录注册