Selenium를 사용하여 UI 테스트

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

릴리스 파이프라인의 일부로 UI(사용자 인터페이스) 테스트를 수행하는 것은 예기치 않은 변경을 감지하는 좋은 방법이며 어려울 필요가 없습니다. 이 항목에서는 연속 배포 릴리스 및 테스트 자동화 중에 Selenium을 사용하여 웹 사이트를 테스트하는 방법을 설명합니다. UI 테스트를 실행할 때 적용되는 특별한 고려 사항은 UI 테스트 고려 사항에서 설명합니다.

일반적으로 빌드 워크플로에서 단위 테스트를 실행하고, 앱이 배포된 후(일반적으로 QA 환경에) 릴리스 워크플로에서 UI(기능) 테스트를 실행합니다.

Selenium 브라우저 자동화에 대한 자세한 내용은 다음을 참조하세요.

테스트 프로젝트 만들기

Selenium 테스트를 위한 템플릿이 없으므로 시작하는 가장 쉬운 방법은 단위 테스트 템플릿을 사용하는 것입니다. 그러면 테스트 프레임워크 참조가 자동으로 추가되고 Visual Studio 테스트 탐색기에서 결과를 실행하고 볼 수 있습니다.

  1. Visual Studio에서 파일 메뉴를 열고 새 프로젝트를 선택한 다음 테스트를 선택하고 단위 테스트 프로젝트를 선택합니다. 또는 솔루션의 바로 가기 메뉴를 열고 추가새 프로젝트, 단위 테스트 프로젝트를 선택합니다.

  2. 프로젝트를 만든 후 브라우저에서 테스트를 실행하는 데 사용되는 Selenium 및 브라우저 드라이버 참조를 추가합니다. 단위 테스트 프로젝트의 바로 가기 메뉴를 열고 NuGet 패키지 관리를 선택합니다. 프로젝트에 다음 패키지를 추가합니다.

    • Selenium.WebDriver
    • Selenium.Firefox.WebDriver
    • Selenium.WebDriver.ChromeDriver
    • Selenium.WebDriver.IEDriver

    솔루션에 브라우저 드라이버 패키지 추가

  3. 테스트를 만듭니다. 예를 들어 다음 코드는 Bing.com 웹 사이트에서 간단한 테스트를 수행하는 MySeleniumTests라는 기본 클래스를 만듭니다. 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();
        }
      }
    }
    
  4. 테스트 탐색기를 사용하여 Selenium 테스트를 로컬로 실행하고 작동하는지 검사.

빌드 파이프라인 정의

Selenium 테스트를 빌드하는 CI(연속 통합) 빌드 파이프라인이 필요합니다. 자세한 내용은 Windows용 .NET 데스크톱 앱 빌드를 참조하세요.

웹앱 만들기

테스트하려면 웹앱이 필요합니다. 기존 앱을 사용하거나 CD(지속적인 배포) 릴리스 파이프라인에 배포할 수 있습니다. 위의 예제 코드는 Bing.com 대한 테스트를 실행합니다. 웹앱을 배포하도록 고유한 릴리스 파이프라인을 설정하는 방법에 대한 자세한 내용은 Azure Web Apps에 배포를 참조 하세요.

앱을 배포하고 테스트하는 방법 결정

Azure에서 Microsoft 호스팅 에이전트 또는 대상 서버에 설치하는 자체 호스팅 에이전트를 사용하여 앱을 배포하고 테스트할 수 있습니다.

  • Microsoft 호스팅 에이전트를 사용하는 경우 Windows 에이전트(Hosted VS 20xx라는 에이전트)에 미리 설치된 Selenium 웹 드라이버는 Microsoft 호스팅 에이전트 이미지에 설치된 브라우저 버전과 호환되므로 사용해야 합니다. 이러한 드라이버가 포함된 폴더의 경로는 (Internet Explorer), (Google Chrome) ChromeWebDriverGeckoWebDriver (Firefox)라는 IEWebDriver 환경 변수에서 가져올 수 있습니다. 드라이버는 Linux, Ubuntu 및 macOS 에이전트와 같은 다른 에이전트에 미리 설치되지 않습니다 . UI 테스트 고려 사항도 참조 하세요.

  • 대상 서버에 배포하는 자체 호스팅 에이전트 를 사용하는 경우 자동 로그온을 사용하도록 대화형으로 실행되도록 에이전트를 구성해야 합니다. 빌드 및 릴리스 에이전트 및UI 테스트 고려 사항을 참조하세요.

릴리스에 테스트 포함

  1. 웹앱을 배포하는 기존 릴리스 파이프라인이 없는 경우:

    • Azure DevOps의 Azure Pipelines 섹션 또는 TFS의 빌드 및 릴리스 허브에서 릴리스 페이지를 열고(웹 포털 탐색 참조) 아이콘을 + 선택한 다음 릴리스 파이프라인 만들기를 선택합니다.

      새 릴리스 파이프라인 만들기

    • Azure 앱 서비스 배포 템플릿을 선택하고 적용을 선택합니다.

    • 파이프라인 탭의 아티팩트 섹션에서 + 추가를 선택합니다. 빌드 아티팩트 선택 및 추가 선택

      아티팩트 선택

    • 파이프라인 탭의 아티팩트 섹션에서 연속 배포 트리거 아이콘선택합니다. 연속 배포 트리거 창에서 모든 빌드에서 새 릴리스가 생성되도록 트리거를 사용하도록 설정합니다. 기본 분기 대한 필터를 추가합니다.

      연속 배포 구성

    • 작업 탭을 열고, 1단계 섹션을 선택하고, 구독 정보와 앱 및 테스트를 배포할 웹앱의 이름을 입력합니다. 이러한 설정은 Azure 앱 Service 배포 작업에 적용됩니다.

      변수 구성

  2. 에이전트를 호스트하는 대상 컴퓨터에 Visual Studio가 설치되어 있지 않은 환경에 앱 및 테스트를 배포하는 경우:

    • 릴리스 파이프라인의 작업 탭에서 에이전트에서 실행 섹션에서 아이콘을 선택합니다+. Visual Studio 테스트 플랫폼 설치 관리자 작업을 선택하고 추가를 선택합니다. 모든 설정을 기본값으로 둡니다.

      Visual Studio 테스트 플랫폼 설치 관리자 작업 추가

      검색 텍스트 상자를 사용하여 작업을 더 쉽게 찾을 수 있습니다.

  3. 릴리스 파이프라인의 작업 탭에서 에이전트에서 실행 섹션에서 아이콘을 선택합니다+. Visual Studio 테스트 작업을 선택하고 추가를 선택합니다.

    Visual Studio 테스트 작업 추가

  4. 파이프라인에 Visual Studio 테스트 플랫폼 설치 관리자 작업을 추가한 경우 Visual Studio 테스트 태스크의 실행 옵션 섹션에서 테스트 플랫폼 버전 설정을 도구 설치 관리자가 설치하도록 변경합니다.

    테스트 플랫폼 버전 설정

    빌드 파이프라인에서 내 테스트 코드에 매개 변수를 전달할 어떻게 할까요? 있나요?

  5. 릴리스 파이프라인을 저장하고 새 릴리스를 시작합니다. 새 CI 빌드를 큐에 대기하거나 릴리스 파이프라인의 릴리스 드롭다운 목록에서 릴리스 만들기를 선택하여 이 작업을 수행할 수 있습니다.

    새 릴리스 만들기

  6. 테스트 결과를 보려면 릴리스 페이지에서 릴리스 요약을 열고 테스트 링크를 선택합니다.

다음 단계