不使用远程桌面连接,是否有可能运行Coded UI测试?

17

我正在尝试自动化Coded UI测试。

我的测试控制器在远程测试服务器上启动测试,我通常通过远程桌面连接访问该服务器。

是否有可能在不通过远程桌面连接的情况下运行Coded UI测试?

目前,只有在通过远程桌面连接且窗口处于打开状态时,测试才能运行。当我关闭远程桌面会话时,测试将停止运行。

如果无法在没有远程桌面连接的情况下运行coded UI测试,那么如何自动化连接远程桌面呢?

谢谢。


什么语言,什么框架? - Willem D'Haeseleer
C# .NET 4.0,Visual Studio 2010 SP1 FP2,Windows 7。 - Ciaran Gallagher
为什么你想要一个交互式测试?难道你不能只为小部件接口编写单元测试吗? - Willem D'Haeseleer
2
我被要求创建自动化UI稳定性测试,这就是我希望做的。我专门测试界面,那我为什么要编写单元测试呢?我们已经有了单元测试。 - Ciaran Gallagher
8个回答

18
我在我们的远程测试机上遇到了同样的问题,但我们的测试机是运行在Hyper-V上的。使用Hyper-V连接而不是远程桌面连接就可以解决这个问题,关闭Hyper-V连接时不会锁定计算机。
另外一个建议是规避远程桌面自动锁定屏幕的问题。这里有一个简单的方法:http://homeservershow.com/remote-desktop-session-locks-workstation-after-exit.html 基本上,在远程机器上的命令提示符中运行“tscon.exe RDP-Tcp#0 /dest:console”以断开连接。计算机应该保持解锁状态,测试将会正常执行。
根据@Zatricion的说法,该命令可以泛化处理:
tscon.exe %sessionname% /dest:console

是的,不幸的是我工作的公司不使用Hyper-V。所有的机器都是物理机器。 - Ciaran Gallagher
我在我的回答中又添加了一个建议。看看吧。我自己研究过这个,但实际上我发现这是一些对我自己很有用的东西! - mejdev
太好了,谢谢!我得试一下!如果它有效,我每次断开远程桌面连接时都需要运行这个命令吗? - Ciaran Gallagher
1
是的,不幸的是,我的建议以及链接页面上的建议是创建桌面快捷方式并将该命令设置为其目标。这样退出时只需单击桌面快捷方式即可! - mejdev
这正是我在寻找的。谢谢! - chief7
1
tscon.exe %sessionname% /dest:console 对我来说效果更好,因为数字一直在增加。 - Zatricion

4
这个问题最简单的解决方法就是在我的测试环境上启用自动登录(根据操作系统不同,有多种方法可供选择)。
启用自动登录后,当我重新启动测试环境(使用“shutdown.exe /r”命令,可以进行脚本化),测试环境将加载一个活动的、已登录的会话,因此测试可以成功运行。
对于我的夜间测试自动化,我在测试环境上启用了自动登录,并在测试执行之前安排了一次重启。
我使用这种方法没有遇到任何问题-这意味着我不必通过远程桌面连接。

3
来自MSDN
代理运行的计算机上不能锁定屏幕或启用屏幕保护程序,否则将无法运行编码 UI 测试。
如果您通过 Visual Studio 运行CodedUi Tests(意味着在您的帐户下执行测试),我相信您必须通过远程桌面连接到远程测试服务器。
但是,您可以使用 Microsoft Test Manager 运行测试:
  1. 创建虚拟环境。
  2. 设置您的虚拟机,使其能够运行自动化测试。
  3. 安装测试控制器和测试代理。
    -将测试代理设置为以交互方式运行,以便运行 CodedUi Tests。
    -将测试控制器设置为在 Microsoft Test Manager 中运行。
  4. 通过 MTM 创建测试计划并在虚拟环境中运行测试。现在无需连接到远程服务器,因为您的测试将在运行测试代理的帐户下运行(注意:您应为测试目的创建一个测试代理帐户)。

如果远程桌面窗口让您感到困扰,您可以直接关闭它。您的登录会话不会关闭,我认为您将能够运行测试。您可以尝试一下。 - chaliasos
使用Microsoft Test Manager,是否可以安排每日自动化测试?在MTM中,我只看到手动启动自动化测试运行的选项。 - Ciaran Gallagher
1
您可以使用Tcm从命令行运行测试或测试用例或测试计划(http://msdn.microsoft.com/en-us/library/ff942469.aspx)。因此,您可以创建一个小服务或批处理文件,每天执行该命令。 - chaliasos
此外,我不认为如果通过Microsoft Test Manager运行测试就不需要通过远程桌面连接。每次我通过MTM运行测试时,都会收到完全相同的错误消息:“自动化引擎无法回放测试,因为它无法与桌面交互”。同样,这些测试只能通过远程桌面运行。 - Ciaran Gallagher
使用命令行断开远程桌面连接:http://serverfault.com/questions/205902/how-to-keep-user-logged-in-when-disconnecting-from-rdp-session 这将保持会话处于活动状态。 - jessehouwing
显示剩余4条评论

2

这很简单,请查看此博客文章,其中以非常简单的方式解释了此问题

如何在没有MS TFS的情况下安排Microsoft coaded UI测试执行:

  1. 按照以下步骤创建稳定coded UI项目的发布版本。

    i. 打开Build > Batch build

ii. 如果已经建立了发布版本,则点击重新构建

  1. 成功构建coded UI项目后,转到项目的发布文件夹并复制以您的项目名称命名的testAutomated.dll

  2. 将此dll放置在您想要安排测试执行的远程机器上

  3. 将.dll放置在远程机器的某个目录中,例如D:\coadedUitest

  4. 从此链接在此要执行测试的计算机上安装 Miscosoft Test agent。 http://www.microsoft.com/en-us/download/details.aspx?id=38186

  5. 安装测试代理后,请验证 MS test 是否位于该位置

  6. 打开记事本并输入以下文本 D: cd coadedUitest set mstestPath="C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE" %mstestpath%\mstest /testcontainer:testAutomated.dll

  7. 保存它为.bat扩展名

  8. 双击打开.bat文件以验证是否执行测试

  9. 成功执行后,打开Windows任务计划程序并创建一个定期运行此创建的.bat文件的计划任务。

http://testingtoolstecniques.blogspot.com/2014/11/how-to-schedule-microsoft-coaded-ui.html


仅提供链接的答案!请在您的帖子中添加详细信息。 - SSA

1

更新:

使用VSO或TFS2015构建系统不再需要远程连接来运行测试。创建一个构建或发布任务“Visual Studio Test Agent Deployment”,然后运行“Run Functional Tests”任务。

最好的方法可能是,创建一个构建,放置您的构建工件,然后创建一个发布,从工件部署站点并针对该站点运行Coded UI测试。

注意事项:

  • 如果手动启动远程连接,则运行将失败。
  • 如果创建远程连接并断开连接而不是注销,则运行将失败。
  • 启用自动登录和重启仍将允许这些测试运行。
  • 使用Hyper-V,您可以看到运行测试的服务器的桌面,它是一个非常小的窗口,但可以让您了解服务器正在做什么。

0

使用VNC(例如,TightVNC)查看/与机器交互


0

-1

--首选方案1:拥有Hyper-V客户端,使用计划任务运行编码UI测试。没有任何问题。

--首选方案2:您需要有两个虚拟机。首先远程桌面连接到VM 1,然后从VM 1远程桌面连接到运行Coded UI的VM 2。一旦在VM2中启动了Coded UI,只需断开VM 1即可。这将保持会话打开,并且永远不会出现任何问题。

-次优方案3:使用命令行重新启动VM。确保在VM上启用自动登录。安排计划任务来运行编码UI。

我使用了这种方法,发现我的一些测试失败了。

--最不喜欢的方案4:使用tscon.exe %sessionname% /dest:console 我使用了这种方法,但不能保证您的测试不会出现任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接