Тестирование пользовательского интерфейса с помощью Selenium
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Выполнение тестирования пользовательского интерфейса в рамках конвейера выпуска — отличный способ обнаружения непредвиденных изменений и не требует трудностей. В этой статье описывается использование Selenium для тестирования веб-сайта во время непрерывного выпуска развертывания и автоматизации тестирования. Особые рекомендации, которые применяются при выполнении тестов пользовательского интерфейса, рассматриваются в рекомендациях по тестированию пользовательского интерфейса.
Обычно вы будете запускать модульные тесты в рабочем процессе сборки и функциональные тесты (пользовательский интерфейс) в рабочем процессе выпуска после развертывания приложения (обычно в среде QA).
Дополнительные сведения об автоматизации браузера Selenium см. в следующем разделе:
Создание тестового проекта
Так как для тестирования Selenium нет шаблона, проще всего приступить к работе с шаблоном модульного теста. Это автоматически добавляет ссылки на платформу тестирования и позволяет запускать и просматривать результаты из обозревателя тестов Visual Studio.
В Visual Studio откройте меню "Файл" и выберите "Создать проект", а затем выберите "Тестовый проект" и выберите "Проект модульного теста". Кроме того, откройте контекстное меню решения и нажмите кнопку "Добавить новый проект", а затем проект модульного теста.
После создания проекта добавьте ссылки на драйвер Selenium и браузер, используемые браузером для выполнения тестов. Откройте контекстное меню проекта модульного теста и выберите пункт "Управление пакетами NuGet". Добавьте в проект следующие пакеты:
- Selenium.WebDriver
- Selenium.Firefox.WebDriver
- Selenium.WebDriver.ChromeDriver
- Selenium.WebDriver.IEDriver
Создайте тесты. Например, следующий код создает класс по умолчанию с именем MySeleniumTests , который выполняет простой тест на веб-сайте Bing.com. Замените содержимое функции TheBingSearchTest кодом Selenium, необходимого для тестирования веб-приложения или веб-сайта. Измените назначение браузера в функции SetupTest на браузер, который вы хотите использовать для теста.
using System; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.IE; namespace SeleniumBingTests { /// <summary> /// Summary description for MySeleniumTests /// </summary> [TestClass] public class MySeleniumTests { private TestContext testContextInstance; private IWebDriver driver; private string appURL; public MySeleniumTests() { } [TestMethod] [TestCategory("Chrome")] public void TheBingSearchTest() { driver.Navigate().GoToUrl(appURL + "/"); driver.FindElement(By.Id("sb_form_q")).SendKeys("Azure Pipelines"); driver.FindElement(By.Id("sb_form_go")).Click(); driver.FindElement(By.XPath("//ol[@id='b_results']/li/h2/a/strong[3]")).Click(); Assert.IsTrue(driver.Title.Contains("Azure Pipelines"), "Verified title of the page"); } /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } [TestInitialize()] public void SetupTest() { appURL = "http://www.bing.com/"; string browser = "Chrome"; switch(browser) { case "Chrome": driver = new ChromeDriver(); break; case "Firefox": driver = new FirefoxDriver(); break; case "IE": driver = new InternetExplorerDriver(); break; default: driver = new ChromeDriver(); break; } } [TestCleanup()] public void MyTestCleanup() { driver.Quit(); } } }
Запустите тест Selenium локально с помощью обозревателя тестов и убедитесь, что он работает.
Определение конвейера сборки
Вам нужен конвейер сборки непрерывной интеграции (CI), который создает тесты Selenium. Дополнительные сведения см. в статье "Создание классического приложения .NET для Windows".
Создание веб-приложения
Для тестирования требуется веб-приложение. Вы можете использовать существующее приложение или развернуть его в конвейере выпуска непрерывного развертывания (CD). В предыдущем примере кода выполняются тесты на Bing.com. Дополнительные сведения о настройке собственного конвейера выпуска для развертывания веб-приложения см. в статье "Развертывание в Azure веб-приложения".
Решение о развертывании и тестировании приложения
Вы можете развернуть и протестировать приложение с помощью агента, размещенного корпорацией Майкрософт в Azure, или локально размещенного агента, устанавливаемого на целевых серверах.
При использовании агента, размещенного корпорацией Майкрософт, следует использовать веб-драйверы Selenium, предварительно установленные в агентах Windows (агенты с именем Hosted VS 20xx), так как они совместимы с версиями браузера, установленными на образах агентов, размещенных майкрософт. Пути к папкам, содержащим эти драйверы, можно получить из переменных среды с именем
IEWebDriver
(Internet Explorer),ChromeWebDriver
(Google Chrome) иGeckoWebDriver
(Firefox). Драйверы не предварительно установлены в других агентах, таких как Linux, Ubuntu и macOS. Также см . рекомендации по тестированию пользовательского интерфейса.При использовании локального агента, развернутого на целевых серверах, агенты должны быть настроены для интерактивного запуска с включенным автологом. Ознакомьтесь с рекомендациями по сборке и выпуску агентов и тестов пользовательского интерфейса.
Включение теста в выпуск
Если у вас нет существующего конвейера выпуска, который развертывает веб-приложение:
Откройте страницу "Выпуски" в разделе Azure Pipelines в Azure DevOps или в центре сборки и выпуска в TFS (см. навигацию веб-портала) и выберите + значок, а затем нажмите кнопку "Создать конвейер выпуска".
Выберите шаблон развертывания службы приложение Azure и нажмите кнопку "Применить".
В разделе "Артефакты" вкладки "Конвейер" нажмите кнопку "+ Добавить". Выберите артефакты сборки и нажмите кнопку "Добавить".
Щелкните значок триггера непрерывного развертывания в разделе "Артефакты" на вкладке "Конвейер". В области триггера непрерывного развертывания включите триггер, чтобы создать новый выпуск из каждой сборки. Добавьте фильтр для ветвь по умолчанию.
Откройте вкладку "Задачи", выберите раздел "Этап 1" и введите сведения о подписке и имя веб-приложения, в котором вы хотите развернуть приложение и тесты. Эти параметры применяются к задаче развертывания приложение Azure Service.
Если вы развертываете приложение и тестируете в средах, где целевые компьютеры, на которых размещены агенты, не установлены Visual Studio:
На вкладке "Задачи" конвейера выпуска выберите + значок в разделе "Запуск в агенте". Выберите задачу установщика платформы тестирования Visual Studio и нажмите кнопку "Добавить". Оставьте все параметры значениями по умолчанию.
Задачу проще найти с помощью текстового поля поиска.
На вкладке "Задачи" конвейера выпуска выберите + значок в разделе "Запуск в агенте". Выберите задачу "Тест Visual Studio" и нажмите кнопку "Добавить".
Если вы добавили задачу установщика платформы тестирования Visual Studio в конвейер, измените параметр версии платформы тестирования в разделе "Параметры выполнения" задачи "Тест Visual Studio" на "Установленные установщиком инструментов".
Разделы справки передать параметры в тестовый код из конвейера сборки?
Сохраните конвейер выпуска и запустите новый выпуск. Для этого можно выполнить очередь новой сборки CI или выбрав команду "Создать выпуск" из раскрывающегося списка "Выпуск" в конвейере выпуска.
Чтобы просмотреть результаты теста, откройте сводку о выпуске на странице "Выпуски " и выберите ссылку "Тесты ".