使用 MS 编码的自动化测试 UI

Automated Testing using MS Coded UI

我需要以下方面的帮助:

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

要点 1:使用 Visual Studio 编码 GUI

进行自动化测试

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

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

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

第 2 点:在 VM 上虚拟地设置测试 Settings/Agents 到 运行 以 运行 测试(就像登录,但不是)

这里最好的方法是使用完整的实验室环境。然后使用 MTM(Microsoft 测试管理器)执行测试。

所以基本地形是这样的:

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

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

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

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

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

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

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