1

我们正在将自动化设置为远程运行,以便我们可以开始将它们整合到构建中(你知道,整个 CI/CD 的东西)。这些是一些重要的自动化 GUI 测试,出于显而易见的原因,它们需要一个活动的 VM 才能运行。这些不是浏览器测试,它们实际上是 Windows 应用程序的自动化测试,因此 Selenium 带来的任何支持对我们来说都是关闭的。

所以现在开始挑战 - 我如何让虚拟机保持正常运行,而无需使用远程桌面连接登录它们以允许它们正确运行测试。目前,我必须从我的本地计算机连接到它们,然后将其最小化,然后我才能开始构建。但是,一旦我退出,虚拟机就会再次被锁定。

我希望虚拟机完全独立于我的机器工作,所以我对这种方法持怀疑态度,因为它似乎仍然只与我的机器相关联。公司中几乎任何人都可以使用他们的凭据从他们的机器上登录虚拟机。我想做的是在我的全局 TestStartup 期间以编程方式连接到 VM,然后在 TearDown 断开连接。这可能吗?是否有人在他们的自动化集成过程中取得了成功或遇到过类似的情况?我们使用名为 LeanFT 和 NUnit 的工具作为我们的测试运行器。.

4

2 回答 2

1

作为测试的一部分登录的想法有点脆弱并且容易不稳定。

这是适用于我用于 Windows 的每个 UI 自动化工具的设置

  • 将您的虚拟机设置为不锁定/睡眠/休眠等。
  • 避免使用 RDC(关闭该功能,即使是管理员也可以)
  • 仅对您的 vm 服务器使用控制台查看器
  • 使用 VM 服务器中的权限限制对这些系统的访问,以便只有您和您的团队可以与它们交互。

这就是为什么这有效。您已经发现,当您断开 RDP 连接时,会话锁定并且您的自动化失败。通过使用 vm 控制台查看器,它本质上就像打开/关闭连接到系统的监视器。通过让它们一直处于开启状态而不是休眠状态,它们始终可用于运行测试。

我们正在使用 LeanFT 并鼓励我们测试的稳定性,我们设置了任务来检查正在运行的进程,以杀死任何未从先前运行中干净地关闭的杂散leaft 运行时,以及任何未关闭的杂散应用程序试运行后正确。

于 2017-12-08T01:25:10.440 回答
0

这些问题对于 UI 自动化来说真的很烦人。

最后我找到了解决方案。不太好,但它的工作原理。我所做的只是创建了一个 Docker 容器并将其用于 UI 自动化工作。

容器由SSHD、Xvfb和xfreerdp组成,可以让你连接到海量的远程RDP,而且由于它使用了xvfb这个虚拟显示工具,所以资源消耗低。

这是我创建的图像供您参考。

https://hub.docker.com/repository/docker/ariyuan/ubuntu1604_ssh_rdp

在你的 UI 自动化开始之前,你只需要告诉容器打开远程 RDP 连接到你的 UI 自动化托管的机器。在这种情况下,您的 UI 自动化显示将在执行期间一直保持。(您可以通过 Jenkins 使用参数来完成所有操作以连接到不同的远程机器)

于 2020-09-26T02:37:34.050 回答