Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Automated tests 如何使用具有自动化测试的虚拟机?_Automated Tests_Teamcity_Virtualization - Fatal编程技术网

Automated tests 如何使用具有自动化测试的虚拟机?

Automated tests 如何使用具有自动化测试的虚拟机?,automated-tests,teamcity,virtualization,Automated Tests,Teamcity,Virtualization,我正在尝试使用虚拟机环境为我们的应用程序设置自动测试 我想要的是以下场景: 生成服务器将自动触发,以启动应用程序的自动测试 然后运行一个“构建”脚本,该脚本包括: 将应用程序文件和测试脚本复制到VM可访问的位置 启动虚拟机 在VM中,一个特殊的应用程序查看共享文件夹并启动测试脚本 测试脚本完成其工作,结果输出到共享文件夹 测试脚本结束 然后,特殊应用程序删除测试脚本 特殊应用程序以某种方式让VM管理器关闭VM并恢复到以前的快照 VM退出后,处理结果并发送到生成服务器 我正在使用TeamCit

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

我想要的是以下场景:

  • 生成服务器将自动触发,以启动应用程序的自动测试
  • 然后运行一个“构建”脚本,该脚本包括:
  • 将应用程序文件和测试脚本复制到VM可访问的位置
  • 启动虚拟机
  • 在VM中,一个特殊的应用程序查看共享文件夹并启动测试脚本
  • 测试脚本完成其工作,结果输出到共享文件夹
  • 测试脚本结束
  • 然后,特殊应用程序删除测试脚本
  • 特殊应用程序以某种方式让VM管理器关闭VM并恢复到以前的快照
  • VM退出后,处理结果并发送到生成服务器
  • 我正在使用TeamCity,如果这很重要的话。 对于虚拟机,我们使用VirtualBox,但如果需要,我们对任何其他虚拟机都是开放的

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

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

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


    有什么建议吗?

    尽管我对这两个方面都没有任何经验,但最近我碰巧听说在这个领域有几个应用程序:


    VirtualBox确实有一个。我没有这方面的经验,但也许可以使用它。一种选择是让TeamCity发布一个脚本来实现这一点。我建议从(TeamCity本机支持的)开始,并在必要时可能执行PowerShell。

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

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

    您可以使用puppet/chef来完成所有操作,但是对于VM上的所有其他操作,我们都会使用脚本,因为它们也用于实际部署,并且以某种方式更适合我们的工作方式。总而言之,脚本将类似于以下内容:

    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来模拟您的生产环境,而无需自行处理(即,对数据库设置的更改会同步到所有开发人员的虚拟机上,无论它们在何处),同样的脚本也可以在生产中使用。

    很高兴知道有一种编程方式。去检查是否有人给它做了一个C字头。@Stecy-它是COM,所以你可能不需要C字头。尤其是当您使用.NET4并且可以使用dynamic关键字时。