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

Sté*_*écy 12 virtualization teamcity automated-tests

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

我想要的是类似下面的场景:

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

如果重要的话,我正在使用TeamCity.对于虚拟机,我们使用VirtualBox,但如果需要,我们可以对任何其他虚拟机开放.

是否有任何应用程序/套件可以管理此方案?

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

我需要做的是让VM在测试后自行关闭并恢复到之前的快照,因为我希望它在下一个测试中处于已知状态.

有什么指针吗?

ash*_*ods 12

我有一个类似的设置运行,我选择使用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
Run Code Online (Sandbox Code Playgroud)

优点是你的开发人员也可以使用vagrant来模仿你的生产环境,而不必自己处理(即数据库设置的更改会同步到你所有的开发人员vm),并且可以在生产中使用相同的脚本太.


Tru*_*ill 4

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