azure - 在通过管道触发的 Azure VM 上运行自动化 UI 测试
问题描述
我们有一个非常复杂的(非网络,.NET)软件系统,因此我们开始创建自动化 UI 测试作为测试金字塔的最后一步。这些测试大多是基于 UIA3 和 FlaUI 的系统不同部分之间的 end-2-end 测试。我们称它们为用例测试。
现在的想法是在系统中预置一个 Azure VM,定期将(新开发的)UI 测试部署到该机器并在那里运行它们。(旁注:目前,由于复杂性,我们希望避免系统本身的定期推出。每季度一次对系统来说已经足够了。更有趣的是扩展 UI 测试套件并获得它的用例-测试自动运行。)
在 Azure 构建管道中,我们运行 UI 测试套件本身的一些基本单元测试(仅解决我们在用例测试中使用的基本非 UI 功能)。然后,我们将构建工件(带有用例测试和 xUnit 控制台运行程序的程序集)复制到带有预安装软件系统的 Azure VM)。
到目前为止,一切都很顺利。但是我们如何在那里运行用例测试呢?要运行应用程序(WinForms/WPF 应用程序),它需要一个交互式会话。我不清楚如何远程交互式登录、触发测试……)。
非常感谢任何帮助、提示和想法。
谢谢,马尔科
解决方案
解决方案(草案,PoC)
经过一些调查和大量尝试和错误,解决方案的草案是这样的:
复制所有工件以部署在一个文件夹中(例如项目根/部署)
我使用 FAKE 作为我的构建环境,它看起来像这样:Target.create "Provide-Deployment-Package" (fun _ -> // Setup some constants for later usage let outputDir = projectRootDir </> "src" </> "UseCaseTests" </> "UseCaseTests" </> "bin" </> configuration let xUnitRunnerDir = projectRootDir </> "packages" </> "tests" </> "xunit.runner.console" </> "tools" </> "net472" let xUnitTestAdapter = projectRootDir </> "packages" </> "tests" </> "xunit.runner.visualstudio" </> "build" </> "_common" let deployDir = projectRootDir </> "deploy" Directory.ensure(deployDir) |> ignore Shell.copyRecursiveTo true deployDir outputDir |> ignore Shell.copyRecursiveTo true deployDir xUnitRunnerDir |> ignore Shell.copyRecursiveTo true deployDir xUnitTestAdapter |> ignore )
在您的(yaml)构建管道中添加发布任务
- publish: $(System.DefaultWorkingDirectory)/deploy artifact: UC-Test-Artifacts
从代理创建一个令牌以供以后使用
- 转到` https://dev.azure.com/ {your-organization}/_usersSettings/tokens
- 创建一个具有必要权限的新令牌
(我使用过Full Access
,但这不是一个好主意!) - 存储创建的令牌以供以后使用
(例如vn6yseuyq2brbgze3rylo...
- 另请参阅使用个人访问令牌 (PAT) 进行身份验证
创建代理池
- 去
https://dev.azure.com/{your-organization)/_settings/agentpools
- 添加一个池,例如命名它
bvms
- 去
创建代理
- 点击
New Agent
- 按照打开对话框的说明
Get the Agent
(在您的 VM 上运行它,稍后应该运行 UI 测试)
- 点击
配置具有 2 个代理作业的发布管道
代理 1:
代理池:
Azrue Pipelines
- 代理规格:
vs2017-win2016
神器下载:
UC-Test-Artifacts
代理 2:
代理池:
bvms
- 代理规格:
vs2017-win2016
- 神器下载:
UC-Test-Artifacts
代理1的步骤:
Azure 文件副本
资源:
$(System.DefaultWorkingDirectory)/UC-Test-Artifacts/UC-Test-Artifacts
- 目的地类型:
Azure VM
- VM 管理员帐户的凭据
- 目标文件夹:
c:\_temp
代理2的步骤:
电源外壳脚本
脚本:
c:\_temp\xunit.console.exe c:\_temp\Bvms.UiAutomation.UseCaseTests.dll
备注:将工件复制到 VM 的步骤可能会替换为发布机制背后的选项。
一些资源
推荐阅读
- kubernetes - 添加新主机时,如何使 pod 均匀分布在节点之间?
- sql-server-2012 - 我需要合并两个表,然后在 SQL 中再加入 10 个表
- python - 如何将数组写入文件,然后调用该文件并将更多内容添加到数组中?
- java - 使用时区 JAVA API 翻译时区名称
- python - Python终端不显示简单Hello World的代码输出
- go - 运行“地形计划”时如何显示警告/错误?
- docusignapi - 是否有任何 API(或 sdk 方法)可以检查 docusign 管理员帐户的 SIGNING_SETTING 选项下的文档可见性设置是否为 ON/OFF?
- json - 在 JMeter 中关联 JSON 响应正文
- php - 使用“保存”方法在 Laravel 上插入新行
- math - 我想从添加到该脚本 P1、P2 的两个点进行 3d 欧拉旋转 ....这可行吗?我想在旋转骨骼中使用它们来制作动画