testing - 使用 MS Coded UI 进行自动化测试

标签 testing automation coded-ui-tests

我需要以下方面的帮助:

  • 使用 Visual Studio Coded GUI 进行自动化测试
  • 设置测试设置/代理以在 VM 上虚拟运行以运行测试(如登录,但未登录)
  • 在元素检查方面获得帮助(例如在 GUI 的三个不同位置区分某些使用“toolStrip1”作为 ID 的开发人员)
  • 我在使用 phantomjs 或 ieserver 驱动程序的 visual studio 中使用 Selenium、C# 取得了成功,但那是针对 Web 应用程序的。

所以我知道我可以做到这一点,但现在我需要为桌面应用程序设置框架。我有一些 GUI 桌面自动化正在运行。不太难获取元素,我使用 psexec->vm(.bat 文件)启动它们远程测试,它使用 vstest 实现我的测试。效果很好。但是我在让用户登录时传递登录凭据 - 我听说代理这样做所以现在我将“ headless ”。此外,开发人员在应用程序上为三个不同的工具条留下了“toolStrip1”ID,这真的让我很困扰。任何帮助将不胜感激。

最佳答案

要点 1:使用 Visual Studio Coded GUI 进行自动化测试

对于初学者,请确保您运行的是最新的 Visual Studio(包括所有补丁)。不要尝试使用 VS2010 或 VS2012 来解决这个问题。您还需要 VS2013 Premium,我还没有看过 VS2015。

在这里,将控件记录到您的 UI map 非常简单。至于录音,我懒得录了。仅使用记录器进行控制识别,然后手写实际测试。

您的成功在很大程度上取决于您的 WinApp 中有哪些控件。例如,您使用的是 Telerik、DevExpress 还是 Standard .Net Winforms?甚至是 C++ WIn32 应用程序?这是因为像 DevExpress 这样的控件不使用 MSAA,而是公开了自己的技术类型,并公开了更好的属性和方法以供测试。对于 MSAA,这在很大程度上取决于开发人员如何实现可访问性以公开正确的属性和方法。因此,如果他们没有对 C++ Win32 应用程序进行任何公开,那么任何嵌套的复合控件都不太可能有足够的曝光度让您轻松测试应用程序。

第 2 点:设置测试设置/代理以在 VM 上虚拟运行以运行测试(如登录,但未登录)

此处的最佳途径是使用成熟的实验室环境。然后使用 MTM(Microsoft 测试管理器)执行测试。

所以基本的地形是这样的:

  1. 您需要一个 TFS 构建服务器 ( Consisting of a build controller and an agent )
  2. 测试 Controller
  3. 测试代理

使用 TFS 注册构建环境,然后在 Visual Studio 中,将代码 checkin TFS 后,将新构建加入队列。

您的测试 Controller 应该注册到 TF​​S,但您的测试代理不要注册到测试 Controller 。相反,它们应该在实验室环境(MTM GUI 的一部分)中设置。

这样,一旦您将构建分配给项目(使用 MTM -> 项目 -> 属性),并设置您的代理(并在代理内安装 TFS 代理),并创建测试环境 (MTM),您就可以右键单击并使用 MTM 运行测试。

但是存在一些缺陷,理论上您可以使用自动登录运行测试,但在 VM 中这非常不可靠。除非你有物理测试机,否则每次使用 MTM 运行测试时,最好打开并最小化实验室环境。

要点 3:在元素检查方面获得帮助(例如在 GUI 的三个不同位置区分某些使用“toolStrip1”作为 ID 的开发人员)

如果使用记录器识别控件,这不会有问题。这是因为 CodedUI 使用查找链和搜索模式来识别控件。它确实检查父 -> 子关系。

关于testing - 使用 MS Coded UI 进行自动化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488482/

相关文章:

c# - 如何访问 RunSettings 文件中的 TestRunParameters

coded-ui-tests - 如何在编码的 ui 测试完成后保持浏览器打开?

java - 如何获取发送到 JMETER 中 ISO8583 采样器服务器的字节数组?

c++ - 检测 Windows Kit 8.0 和 Windows Kit 8.1 SDK

selenium-webdriver - 谁能向我解释一下 Selenium 中的 "to poll the DOM"是什么?

android - 验证视频 View appium (java) android

unit-testing - 程序演进和失败的测试

testing - 如何从我的 Golang 服务器获取代码覆盖率?

.net - Oracle SQLPLUS 是否有 .Net 接口(interface)?

c# - 单元测试适配器抛出异常