概述

Selenium 是一个用于Web应用程序的可移植开源软件测试框架。它几乎可以在每个操作系统上运行。它支持所有现代浏览器和多种语言,包括.NET(C#),Java。

在本实验中,您将学习如何在C#Web应用程序上执行selenium测试用例,作为Azure DevOps Release Pipelines 的一部分。

准备工作

  1. 按照以下练习操作前,请参阅 Getting Started

  2. 单击下面的部署到Azure按钮,配置Windows Server 2016虚拟机以及SQL Express 2017和浏览器 - Chrome和FireFox。

    Deploy to Azure

    配置资源大约需要20-25分钟。部署成功后,您将看到如下所示的资源。

    azure_resources

  3. 使用 Azure DevOps Demo Generator 在Azure DevOps组织上配置项目.

练习1:创建部署组

我们将使用Azure DevOps中的部署组功能将应用程序部署在先前配置的VM上,以执行Selenium测试用例。Azure DevOps中的 Deployment Groups 使您可以更轻松地组织用于托管应用程序的服务器。部署组是一组计算机,每个计算机上都有一个Azure DevOps代理。每台计算机都与Azure DevOps交互以协调应用程序的部署。

我们还将使用 Deployment Groups 在VM中部署SQL数据库。

  1. 转到 Deployment GroupsPipelines 选项卡下. 点击 Add a deployment group .

    add_deploymentgroup

  2. 输入部署组名称,然后点击 Create.

    create_deploymentgroup

    这将生成PowerShell脚本以将VM与此部署组关联。

  3. 选中 Use a personal access token in the script for authentication 复选框, 这样我们就不必在每次执行脚本时都提供密码。 点击 Copy script to clipboard ,以复制将在下一个练习中使用的脚本,将VM与部署组关联。

    create_deploymentgroup2

练习2:将VM与部署组关联

在本练习中,我们将在VM上执行 registration script 以与部署组关联。

  1. 以下面的帐号使用远程桌面 RDP 登陆到虚拟机。

    • Username: vmadmin
    • Password: P2ssw0rd@123
  2. 以管理员模式打开 Windows PowerShell , 粘贴复制的Registration script,然后按Enter键。

    configure_deploymentgroup-2

  3. 当PowerShell窗口中出现提示消息 Enter deployment group tags for agent? (Y/N) (press enter for N) > 时,键入Y并按Enter键。

    deploygroup_agent

  4. 键入 web, db 做为标签。

    configure_deploymentgroup

  5. 当出现提示:Enter User account to use for the service (press enter for NT AUTHORITY\SYSTEM) > 时, 键入 Enter 以配置服务运行在服务帐号 NT AUTHORITY\SYSTEM 下.

    userserviceaccount-dg

  6. 刷新Azure DevOps部署组页面,您将注意到您的部署组已联机。

    configure_deploymentgroup2

练习3:在VM上配置代理

让我们在此VM上配置 private 代理,因为Selenium要求代理以交互模式运行以执行UI测试。

  1. 转到VM并打开文件夹 C:\VSTSwinAgent.

  2. 以管理员身份打开命令行. 进入到路径 C:\VSTSWinAgent ,输入 Config.cmd 后键入 Enter.

  3. 提供以下详细信息::

    • 输入服务器URL:您的Azure DevOps组织URL
    • 身份验证类型:按回车键以 PAT 作为验证类型,并在接下来的提示中粘贴这个 PAT。
    • 让我们使用其余配置的默认选项。按 Enter 键以显示所有提示,直到命令执行完成。
    • 注册代理后,键入 run.cmd 并按Enter键以启动代理。

    点击 这里 以获取有关如何配置代理的更多信息。

    configure_windowsagent

练习4:配置发布管道

部署组中可以使用目标计算机来部署应用程序并运行selenium测试用例。发布定义使用 Phases 部署到目标服务器。

  1. 转到 在 Pipelines 下的 Releases, 选择 Selenium 发布定义,然后单击 Edit.

    setuprelease

  2. 打开 Dev 环境以查看三个部署阶段.

    setuprelease2

    releasephases

    • IIS Deployment phase:在此阶段,我们使用以下任务将应用程序部署到VM

      • IIS Web App Manage: 此任务在使用部署组注册的目标计算机上运行。 它在本地创建一个在端口 82 http://localhost:82 下运行,名为 PartsUnlimitedwebsite 和一个 Application Pool

      • IIS Web App Deploy: 此任务使用 Web Deploy 将应用程序部署到IIS服务器。

    • Database deploy phase:在此阶段,我们使用 SQL Server Database Deploy 任务将 dacpac 文件部署到数据库服务器。

    • Selenium测试执行: 作为发布过程的一部分执行 UI testing 是检测意外更改的好方法,并且这不是很困难。设置基于浏览器的自动化测试可以提高应用程序的质量,而无需手动执行。在此阶段,我们将在已部署的Web应用程序上执行Selenium测试。以下任务描述了使用Selenium来测试发布管道中的网站。

      • Visual Studio Test Platform Installer: 此任务 将从nuget.org或指定的源获取Microsoft测试平台,并将其添加到工具缓存中。它满足’vstest’需求,并且构建或发布管道中的后续Visual Studio Test任务可以运行,而无需在代理计算机上安装完整的Visual Studio。
      • Run Selenium UI tests: 此 任务 使用 vstest.console.exe 在代理计算机上执行selenium测试用例。
  3. 单击 IIS Deployment 阶段,然后选择我们在 练习2 中创建的部署组。

    setuprelease_IIS

  4. SQL Deployment 阶段重复上述步骤。

    setuprelease_db

  5. 点击 Selenium tests execution 阶段并将代理池设置为 Default 然后点击 Save 以保存修改.

    setuprelease_selenium

练习5:触发构建和发布

在本练习中,我们将触发 Build 以编译Selenium C#脚本以及Web应用程序。生成的二进制文件将复制到Azure VM,最后selenium脚本将作为自动 发布 的一部分执行。

  1. 导航到 Builds 下的 Pipelines 标签,并手工触发一个构建。

    buildqueue

  2. 此构建将测试工件上传到Azure DevOps中,工件将在发布中使用。

    buildqueue2

  3. 构建成功后,将触发发布。导航到 Releases 选项卡以查看正在进行的部署。

    releasequeue

  4. Selenium test execution 阶段开始时,请连接回先前配置的VM以查看UI测试执行情况。

    Releaseprogress

  5. 在本实验中,我们正在执行四个配置为在Chrome和Firefox浏览器上运行的UI测试场景。

测试在 Chrome 中运行

seleniumtest

测试在 Firefox 中运行

seleniumtestfirefox

发布成功后,单击 测试 选项卡以分析测试结果。从 Outcome 部分的下拉列表中选择所需的过滤器,以查看测试及其状态。

analyzetests

总结

在本实验中,您学习了如何使用Azure Pipelines在Azure VM上的不同浏览器上自动执行和执行Selenium UI测试用例。