【问题标题】:Running UI automation tests on build server在构建服务器上运行 UI 自动化测试
【发布时间】:2009-05-05 14:40:11
【问题描述】:

我们使用 UI 自动化和 Nunit 为 WPF 应用程序创建测试 UI 测试。 当您从本地计算机运行它们时,我们已经创建了可以正常工作的测试。这些测试从未在我们的构建服务器上成功运行(使用 TeamCity)。打开应用程序窗口后构建总是挂起。但是,如果我登录(远程桌面),在我们的构建服务器上,所有 UI 自动化测试也会成功运行。 所以我猜测它可能与运行活动的 Windows 会话有关。任何想法如何说服我们的构建服务器创建活动 Windows 会话或任何其他解决方案以使这些测试在构建服务器上运行?

【问题讨论】:

    标签: wpf testing user-interface automation teamcity


    【解决方案1】:

    您没有太多选择。我会列出我知道的两个,最喜欢的选项优先:

    • 在您的构建服务器上设置虚拟机。您的构建在虚拟机中执行。您可以锁定主机(也称为您的构建服务器)以确保安全。
    • 让某人始终保持登录状态。这种偏离会产生安全问题。您可以通过移除鼠标、键盘和屏幕并仅通过 RDP 或类似方式访问构建服务器来稍微缓解此问题。

    编辑

    看看这个TestComplete FAQ项目:TestComplete可以在计算机被锁定的情况下执行脚本吗?

    【讨论】:

    • 我们在构建服务器上的虚拟机中执行所有构建。并且所有测试都在本地帐户(而不是系统)下运行。它没有解决问题。让某人始终登录不是一种选择。正如我所说,我们有 3 个虚拟机,可以在其中运行此构建。所以每次构建都会选择最快的可用虚拟机。 vm 上的本地用户通常已登录,但我们无法确保它没有被锁定。我们真的很想尽可能地自动化这个过程,所以手动登录是最不吸引人的选择。
    • @andreja,我已经用 Testcomplete 的问答链接更新了回复。我怀疑还有其他方法可以解决这个问题。您必须让某人保持登录状态。当您的虚拟机“解锁”并且主机“锁定”(但我不是系统管理员)时,我看不出这会带来安全问题。
    • @andreja:如果您想自动登录,您可以设置一些注册表项值,您的构建用户将在构建 VM 启动后登录。如果您愿意,我可以查找相应的 reg 键。
    • 运行 2 周后发现只能让某人登录的工作,所以谢谢。
    【解决方案2】:

    好的,我只是在这里猜测。

    尝试使用本地构建服务器用户而不是系统帐户运行 TeamCity 服务。 在开始新构建之前,您可能必须使用该帐户登录一次。

    【讨论】:

    • 我们已经尝试过了。当我说如果我登录(远程桌面),在我们的构建服务器上,所有 UI 自动化测试也成功运行,我已经以该用户身份登录,并且所有测试都在该用户下运行。问题是,该用户被锁定时的第二次测试失败。如果我在本地机器上运行它们并在运行时锁定计算机,它们也会失败。
    【解决方案3】:

    这听起来像是您需要使用交互式会话而不是服务来运行测试。添加“允许服务与桌面交互”可能会有所帮助,但显然 Vista 不再支持此功能。

    如果您可以将构建交互作为命令行运行,而不是应该工作的服务。

    我们曾经使用 Visual studo 2008 负载代理运行我们的 UIAutomation 测试来分发它们,在 VM 上作为命令行工具运行没有问题。

    我也同意您可能不应该在构建服务器上运行 UI 测试作为日常构建的一部分。

    【讨论】:

    • 谢谢,但正如您提到的,在 Vista 和 Windows Server 2008 中不再允许服务与用户桌面交互。我们使用 Windows Server 2008。以控制台用户身份运行也会锁定桌面,并且构建失败.
    【解决方案4】:

    打开应用程序窗口后构建总是挂起。

    实例化 UI 的测试?那是行不通的,例如如果你得到一个模态对话框,构建将挂起。这就是发明 MVP 模式的原因,用于将活动表示代码与具体视图隔离开来。

    您是否在自动化测试中使用模拟视图?

    【讨论】:

    • 我不相信不会工作 :) 我们没有使用模拟视图。
    • 虽然将您的 UI 代码设计为可测试解决了许多问题,但在某些情况下,您仍然想要测试一些东西,而这些东西只需要一个交互式环境来使测试变得有意义。 (不一定是单元测试,但您也想自动化集成测试,对吧?)
    • 有时您只想测试单击按钮是否会打开相应的对话框。 (即你想测试 UI。)
    猜你喜欢
    • 2012-12-23
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多