2011-06-15 199 views
11

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

我想什么都有点像以下情形:

  1. 构建服务器是自动触发启动一个自动化测试应用
  2. A“打造”的脚本,然后运行它包括:
    1. 复制应用程序文件和测试脚本由VM
    2. 启动VM访问的位置
      1. 在虚拟机中,一个特殊的应用程序查找共享文件夹,并开始测试脚本
      2. 测试脚本完成其工作,结果输出到共享文件夹
      3. 测试脚本结束
      4. 特殊的应用程序,然后删除测试脚本
      5. 特殊应用在某种程度上有VM管理器关闭虚拟机并恢复到以前的快照
    3. 当VM已经退出,处理结果发送到构建服务器。

我使用的TeamCity如果该事项。 对于虚拟机,我们使用VirtualBox,但如果需要,我们向任何其他人开放。

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

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

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

任何指针?

回答

4

VirtualBox中确实有COM API。我没有经验,但可能会使用它。一种选择是让TeamCity发起一个脚本来做到这一点。我建议从NAnt开始(由TeamCity本地支持),并可能在必要时执行PowerShell。

+0

很高兴知道有一个编程方式。去检查是否有人对它进行C#前台。 – 2011-06-15 18:23:01

+1

@Stecy - 这是COM,所以你可能不需要C#前台。特别是如果您使用.NET 4并且可以使用动态关键字。 – TrueWill 2011-06-15 18:26:50

11

我有一个类似的安装程序运行,我选择使用Vagrant作为我们的开发人员用于规范化开发环境的同样的事情。

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

您可以使用木偶/厨师做所有事情,但对于虚拟机上的所有其他操作,我们将使用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的任何地方),同样的脚本也可以在生产中使用。

相关问题