UI 테스트 고려 사항
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
CI/CD 파이프라인에서 자동화된 테스트를 실행할 때 Selenium, Appium 또는 코딩된 UI 테스트와 같은 UI 테스트를 실행하려면 특별한 구성이 필요할 수 있습니다. 이 문서에서는 UI 테스트 실행에 대한 일반적인 고려 사항을 설명합니다.
필수 조건
에이전트를 숙지하고 Windows에 에이전트를 배포합니다.
헤드리스 모드 또는 표시되는 UI 모드?
웹앱에 대한 Selenium 테스트를 실행하는 경우 다음 두 가지 방법으로 브라우저를 시작할 수 있습니다.
헤드리스 모드입니다. 이 모드에서는 브라우저가 정상적으로 실행되지만 UI 구성 요소가 표시되지 않습니다. 이 모드는 웹 검색에 유용하지 않지만 CI/CD 파이프라인에서 무인 방식으로 자동화된 테스트를 실행하는 데 유용합니다. Chrome 및 Firefox 브라우저는 헤드리스 모드에서 실행할 수 있습니다.
이 모드는 일반적으로 UI가 렌더링되지 않고 테스트가 더 빠르게 실행되기 때문에 컴퓨터에서 리소스를 적게 사용합니다. 따라서 동일한 컴퓨터에서 병렬로 더 많은 테스트를 실행하여 총 테스트 실행 시간을 줄일 수 있습니다.
스크린샷은 이 모드에서 캡처하고 오류 문제를 해결하는 데 사용할 수 있습니다.
참고 항목
Microsoft Edge 브라우저는 현재 헤드리스 모드에서 실행할 수 없습니다.
표시되는 UI 모드입니다. 이 모드에서는 브라우저가 정상적으로 실행되고 UI 구성 요소가 표시됩니다. Windows 에서 이 모드에서 테스트를 실행하는 경우 에이전트 의 특수 구성이 필요합니다.
WinAppDriver 또는 코딩된 UI 테스트를 사용하는 Appium 테스트와 같은 데스크톱 애플리케이션에 대한 UI 테스트를 실행하는 경우 에이전트의 특별한 구성이 필요합니다.
팁
엔드투엔드 UI 테스트는 일반적으로 장기 실행되는 경향이 있습니다. 표시되는 UI 모드를 사용하는 경우 테스트 프레임워크에 따라 앱이 키보드 및 마우스 이벤트를 수신하기 위해 포커스에 있어야 하므로 동일한 컴퓨터에서 동시에 테스트를 실행하지 못할 수 있습니다. 이 시나리오에서는 다른 컴퓨터에서 병렬로 테스트를 실행하여 테스트 주기의 속도를 높일 수 있습니다. Visual Studio 테스트 태스크를 사용하여 테스트 실행기를 병렬로 실행하고 테스트를 병렬로 실행하는 것을 참조하세요.
표시되는 UI 모드의 UI 테스트
에이전트가 표시되는 UI 모드에서 UI 테스트를 실행하려면 특별한 구성이 필요합니다.
Microsoft 호스팅 에이전트를 사용하여 표시되는 UI 테스트
Microsoft 호스팅 에이전트에서 지원되지 않는 VISIBLE UI 테스트입니다. "상호 작용할 수 없는 요소"라는 오류 메시지와 함께 테스트가 실패합니다. Microsoft 호스팅 에이전트는 헤드리스 브라우저 테스트를 지원합니다.
Microsoft 호스팅 에이전트를 사용한 헤드리스 모드 UI 테스트
Microsoft 호스팅 에이전트는 웹앱에 대한 UI 테스트 및 UI 테스트를 위해 미리 구성됩니다. 또한 Microsoft 호스팅 에이전트는 Selenium 테스트를 실행하는 데 사용할 수 있는 인기 있는 브라우저 및 일치하는 웹 드라이버 버전으로 미리 구성됩니다. 브라우저 및 해당 웹 드라이버는 정기적으로 업데이트됩니다. Selenium 테스트 실행에 대한 자세한 내용은 Selenium을 사용한 UI 테스트를 참조 하세요.
자체 호스팅 Windows 에이전트를 사용하여 표시되는 UI 테스트
서비스로 실행되도록 구성된 에이전트는 헤드리스 브라우저에서만 Selenium 테스트를 실행할 수 있습니다. 헤드리스 브라우저를 사용하지 않거나 데스크톱 앱에 대한 UI 테스트를 실행하는 경우 Windows 에이전트 가 자동 로그온을 사용하도록 설정된 대화형 프로세스로 실행되도록 구성해야 합니다 .
에이전트를 구성할 때 서비스로 실행하라는 메시지가 표시되면 '아니요'를 선택합니다. 그런 다음, 후속 단계를 통해 자동 로그온을 사용하여 에이전트를 구성할 수 있습니다. UI 테스트가 실행되면 애플리케이션 및 브라우저가 자동 로그 설정에 지정된 사용자의 컨텍스트에서 시작됩니다.
원격 데스크톱을 사용하여 에이전트가 자동 로그온으로 실행되는 컴퓨터에 액세스하는 경우 원격 데스크톱의 연결을 끊으면 컴퓨터가 잠기고 이 에이전트에서 실행되는 모든 UI 테스트가 실패할 수 있습니다. 오류를 방지하려면 원격 컴퓨터의 tscon 명령을 사용하여 원격 데스크톱에서 연결을 끊습니다. 예시:
%windir%\System32\tscon.exe 1 /dest:console
이 예제에서 숫자 '1'은 원격 데스크톱 세션의 ID입니다. 이 수는 원격 세션 간에 변경될 수 있지만 작업 관리자에서 볼 수 있습니다. 또는 현재 세션 ID 찾기를 자동화하려면 다음 코드가 포함된 일괄 처리 파일을 만듭니다.
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
일괄 처리 파일을 저장하고 바탕 화면 바로 가기를 만든 다음 바로 가기 속성을 '관리자 권한으로 실행'으로 변경합니다. 이 바로 가기에서 일괄 처리 파일을 실행하면 원격 데스크톱의 연결이 끊어지지만 UI 세션이 유지되고 UI 테스트가 실행되도록 허용합니다.
UI 테스트를 위해 Azure VM에서 에이전트 프로비전
Azure에서 VM(가상 머신)을 프로비전하는 경우 DevTest Labs용 에이전트 아티팩트를 통해 UI 테스트에 대한 에이전트 구성을 사용할 수 있습니다.
화면 해상도 설정
UI 테스트를 실행하기 전에 앱이 올바르게 렌더링되도록 화면 해상도를 조정해야 할 수 있습니다. 이를 위해 Marketplace에서 화면 해상도 유틸리티 작업을 사용할 수 있습니다. 파이프라인에서 이 작업을 사용하여 화면 해상도를 에이전트 컴퓨터에서 지원하는 값으로 설정합니다. 기본적으로 이 유틸리티는 에이전트 컴퓨터에서 지원하는 최적 값으로 해상도를 설정합니다.
화면 확인 작업을 사용하여 오류가 발생하는 경우 에이전트가 자동 로그온을 사용하도록 구성되고 위에서 설명한 대로 tscon 명령을 사용하여 모든 원격 데스크톱 세션의 연결이 안전하게 끊어지도록 합니다.
참고 항목
화면 확인 유틸리티 작업은 통합 빌드/릴리스/테스트 에이전트에서 실행되며 더 이상 사용되지 않는 기능 테스트 실행 태스크와 함께 사용할 수 없습니다. 해결 유틸리티 작업은 Azure 가상 머신에서도 작동하지 않습니다.
UI 테스트의 오류 문제 해결
무인 방식으로 UI 테스트를 실행하는 경우 스크린샷 또는 비디오와 같은 진단 데이터를 캡처하면 오류가 발생했을 때 애플리케이션의 상태를 검색하는 데 유용합니다.
스크린샷 캡처
대부분의 UI 테스트 프레임워크는 스크린샷을 캡처하는 기능을 제공합니다. 수집된 스크린샷은 이러한 결과가 서버에 게시될 때 테스트 결과에 대한 첨부 파일로 사용할 수 있습니다.
Visual Studio 테스트 작업을 사용하여 테스트를 실행하는 경우 테스트 보고서에서 사용할 수 있도록 캡처된 스크린샷을 결과 파일로 추가해야 합니다. 이를 위해 다음 코드를 사용합니다.
먼저 TestContext가 테스트 클래스에 정의되어 있는지 확인합니다. 예: public TestContext TestContext { get; set; }
를 사용하여 스크린샷 파일 추가 TestContext.AddResultFile(fileName); //Where fileName is the name of the file.
테스트 결과 게시 태스크를 사용하여 결과를 게시하는 경우 VSTest(TRX) 결과 형식 또는 NUnit 3.0 결과 형식을 사용하는 경우에만 테스트 결과 첨부 파일을 게시할 수 있습니다.
JUnit 또는 xUnit 테스트 결과를 사용하는 경우 결과 첨부 파일을 게시할 수 없습니다. 이러한 테스트 결과 형식에는 결과 스키마의 첨부 파일에 대한 공식적인 정의가 없기 때문입니다. 대신 아래 방법 중 하나를 사용하여 테스트 첨부 파일을 게시할 수 있습니다.
빌드(CI) 파이프라인에서 테스트를 실행하는 경우 빌드 아티팩트 복사 및 게시 작업을 사용하여 테스트에서 만든 파일을 더 이상 게시할 수 있습니다. 빌드 요약의 아티팩트 페이지에 표시됩니다.
REST API를 사용하여 필요한 첨부 파일을 게시합니다. 코드 샘플은 이 GitHub 리포지토리에서 찾을 수 있습니다.
비디오 캡처
Visual Studio 테스트 작업을 사용하여 테스트를 실행하는 경우 테스트 비디오를 캡처할 수 있으며 테스트 결과에 대한 첨부 파일로 자동으로 사용할 수 있습니다. 이를 위해 .runsettings 파일에서 비디오 데이터 수집기를 구성해야 하며 이 파일은 작업 설정에서 지정해야 합니다.