在通过管道触发的Azure VM上运行自动化的UI测试

时间:2019-12-04 13:43:08

标签: azure ui-testing

我们有一个非常复杂的(非Web,.NET)软件系统,因此在测试金字塔的最后一步,我们开始创建自动化的UI测试。这些测试主要是基于UIA3和FlaUI的系统不同部分之间的端到端测试。我们称它们为用例测试。

现在的想法是对系统预先配置一个Azure VM,将(新开发的)UI测试定期部署到该计算机上并在该计算机上运行。 (旁注:目前,由于复杂性,我们希望避免定期发布系统本身。四分之一的间隔对于系统来说已经足够了。更有趣的是扩展UI测试套件并获得其用例,测试自动运行。)

在Azure构建管道中,我们运行UI测试套件本身的一些基本单元测试(仅解决用例测试中使用的基本非UI功能)。然后,我们将构建工件(带有用例测试和xUnit控制台运行程序的程序集)复制到具有预安装的软件系统的Azure VM。

到目前为止,一切都很简单。但是我们如何在那里运行用例测试呢?要运行应用程序(WinForms / WPF应用程序),它需要一个交互式会话。我还不清楚如何进行远程交互式登录,触发测试等。

任何帮助,提示和想法都非常感谢。

谢谢Marko

1 个答案:

答案 0 :(得分:0)

解决方案(草稿,PoC)

经过一些调查和大量的尝试和错误,解决方案的草稿是这样的:

  • 复制所有工件以部署在文件夹中(例如project-root / deploy)
    我在构建环境中使用FAKE,它看起来像这样:

    - publish: $(System.DefaultWorkingDirectory)/deploy
      artifact: UC-Test-Artifacts
    
  • 在(yaml)构建管道中添加发布任务

    Full Access
  • 创建令牌以供代理以后使用

    • 转到`https://dev.azure.com/ {您的组织} / _ users设置/令牌
    • 创建具有必要权限的新令牌
      (我用过vn6yseuyq2brbgze3rylo...,但这不是一个好主意!)
    • 存储创建的令牌,以供以后使用
      (类似于https://dev.azure.com/{your-organization)/_settings/agentpools
    • 另请参阅Authenticate with a personal access token (PAT)
  • 创建一个代理池

    • 转到bvms
    • 添加一个池,例如将其命名为New Agent
  • 创建代理

    • 点击Get the Agent
    • 按照打开的对话框Azrue Pipelines的说明
      (在您的VM上运行,以后再运行UI测试)
  • 使用2个代理作业配置发布管道

    • 代理1:

    • 代理人池:vs2017-win2016

    • 代理规范:UC-Test-Artifacts
    • 工件下载:bvms

    • 代理2:

    • 代理人池:vs2017-win2016

    • 代理规范:UC-Test-Artifacts
    • 工件下载:$(System.DefaultWorkingDirectory)/UC-Test-Artifacts/UC-Test-Artifacts
  • 代理1的步骤:

    • 天蓝色文件副本

    • 来源:Azure VM

    • 目的地类型:c:\_temp
    • 虚拟机管理员帐户的凭据
    • 目标文件夹:c:\_temp\xunit.console.exe c:\_temp\Bvms.UiAutomation.UseCaseTests.dll
  • 代理2的步骤:

    • Power Shell脚本

    • 脚本:{{1}}

  

备注:将工件复制到VM的步骤可能会被发布机制后面的选项所取代。

一些资源