【问题标题】:Running integration tests across multiple machines跨多台机器运行集成测试
【发布时间】:2012-01-16 23:53:08
【问题描述】:

我有一个 n 层应用程序,其中不同的层在不同的机器上运行。我需要在这些不同的机器上执行编码集成测试,最好使用 MSTest 框架,因为这是编写其他所有内容的内容。

有一个编排问题,在机器“B”上的测试可以运行之前,机器“A”需要正确设置。开箱即用的 VS 似乎无法处理这种情况,所以我需要别的东西。

从表面上看,我需要 TFS 实验室经理来管理机器、部署代码和运行适当的测试,但问题是代码并不存在 - 我们使用 Perforce 进行源代码控制。

所以

a) 有没有人成功使用 TFS 实验室管理器使用来自另一个源代码控制系统的代码进行测试部署?如果是这样,您是如何设置的?

b) 是否有任何替代测试框架可以让我将代码部署到多台机器、执行编码测试并收集成功/失败结果?

【问题讨论】:

  • 如何构建代码? TFS 还是别的什么?
  • 我正在测试的代码是使用VS在本地构建的。集成测试是手动启动的。如果需要,可以使用 TFS 构建代理进行设置,但考虑到当前的基础架构组合,我真的不想再增加一个复杂度!

标签: unit-testing tfs integration-testing mstest perforce


【解决方案1】:

a) 我没有使用不同的源代码控制来做到这一点,但我认为 TFS 实验室管理器绝对可以做到这一点。 TFS 工作流和测试控制器/代理模型基于实验室管理器中的 Windows 工作流工作,因此您需要修改构建工作流(使用 VS 中的 XAML 编辑器或工作流 UI)并将任何 TFS 源代码控制调用替换为您自己的任务设置为获取/版本/签出代码。事实上,TFS Lab 工作流程与构建工作流程是分离的,并且可以只从 UNC 路径或其他东西中获取构建的二进制文件。如果您选择后者,您可以使用 MSBuild 和其他一些驱动程序(如 Jenkins)构建代码,然后使用 TFS 实验室管理器在每一层上正确执行测试。

b) 相反,您可以完全使用 Jenkins 和 VMWare 插件来启动和关闭虚拟机进行测试。您可以使用 Powershell 插件和 powershell 远程处理或其他一些 MSTest 插件来执行远程测试。这个选项对我来说似乎更难,但我认为两者都可以工作。

【讨论】:

    【解决方案2】:

    根据你的 cmets

    我正在测试的代码是使用 VS 在本地构建的。集成测试 是手动启动的。

    我希望任何 CI 平台都可以使用标记的构建作为输入来运行。
    实际上,关于您的(两个)问题:我认为,除非您投入精力升级到稳定的构建环境,否则您注定要这样做手动/通过自酿脚本。

    拥有构建服务器确实是good 的事情,如果您要设置现代开发环境,基本上就离不开它。

    如果您被 TFS Lab Manager 所吸引,那么必须使用 TFS-Build。如果您走这条路,您应该考虑将所有内容都切换到 TFS - 包括源代码控制。

    我会说使用 Perforce 作为源代码控制和 TFS 进行构建/测试是绝对可能的,但它可以是正确设置构建令人头疼(从字面上看,关于源代码控制的所有开箱即用的东西都需要重构为 p4 友好的调用)。

    【讨论】:

    • 是的,这就是我要得出的结论。我喜欢实验室经理的承诺(将机器分组为环境、部署代码、运行测试等),但它真的,真的想要 TFS 中的一切!
    • 它明确要求的是 TFS 构建。到目前为止,使用 TFS 源代码管理更容易设置这些,但也应该可以使用任何其他源代码管理进行设置。另一个非常重要的因素是您的问题跟踪:我不知道您可以在多大程度上与 Lab Manager 一起使用任何其他非 MS 跟踪器。总而言之,您可能是对的:仅为 Lab Manager 部署 TFS 可能是一个糟糕的选择。
    • Perforce 和 MSBuild 有一个开源插件(请参阅这个问题:stackoverflow.com/questions/2418712/perforce-tasks-for-ms-build)。不确定它会有所帮助,但我想我会提到它。
    【解决方案3】:

    我将用我实际所做的来回答我自己的问题:放弃实验室的想法,因为手头的工作工作量太大!

    起初它看起来很有希望,我相信只要付出足够的努力就可以实现,但正如其他答案所指出的那样,这将意味着对实验室工作流程进行大量编辑以实现我的目标 - 远远超出我的证明。不仅代码不是用 TFS 构建的存在问题,而且我在试图告诉实验室/测试经理如何在哪里运行哪些测试时也遇到了问题。

    最后,我使用了一个 powershell 脚本来设置环境(恢复 hyper-v 快照,复制一些文件并运行一些远程安装)和内置于 VS 中的标准 MSTest 框架来执行针对环境进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多