Visual Studio 테스트 작업

Azure DevOps Services

Visual Studio Test Runner를 사용하여 단위 및 기능 테스트(Selenium, Appium, 코딩된 UI 테스트 등)를 실행하려면 이 작업을 사용합니다. MSTest 기반 테스트와 함께 xUnit, NUnit, Chutzpah와 같은 Visual Studio 테스트 어댑터가 있는 테스트 프레임워크도 실행할 수 있습니다.

.runsettings 파일에서 적절한 대상 프레임워크 값을 지정하여 대상 .NET Core 프레임워크를 실행할 수 있음을 테스트합니다.

테스트는 이 작업의 버전 2를 사용하여 여러 에이전트에 배포할 수 있습니다. 자세한 내용은 Visual Studio 테스트 작업을 사용하여 병렬로 테스트 실행을 참조하세요.

필수 구성 요소 확인

Windows 자체 호스팅 에이전트를 사용하는 경우 컴퓨터에 다음 필수 구성 요소가 설치되어 있는지 확인합니다.

요청

에이전트에는 다음과 같은 기능이 있어야 합니다.

vstest

vstest 수요는 다음 두 가지 방법으로 충족할 수 있습니다.

  1. Visual Studio가 에이전트 컴퓨터에 설치됩니다.

  2. 파이프라인 정의에서 Visual Studio 테스트 플랫폼 설치 관리자 작업을 사용하는 경우

YAML 코드 조각

# Visual Studio Test
# Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).
- task: VSTest@2
  inputs:
    #testSelector: 'testAssemblies' # Options: testAssemblies, testPlan, testRun
    #testAssemblyVer2: | # Required when testSelector == TestAssemblies
    #  **\*test*.dll
    #  !**\*TestAdapter.dll
    #  !**\obj\** 
    #testPlan: # Required when testSelector == TestPlan
    #testSuite: # Required when testSelector == TestPlan
    #testConfiguration: # Required when testSelector == TestPlan
    #tcmTestRun: '$(test.RunId)' # Optional
    #searchFolder: '$(System.DefaultWorkingDirectory)' 
    #testFiltercriteria: # Optional
    #runOnlyImpactedTests: False # Optional
    #runAllTestsAfterXBuilds: '50' # Optional
    #uiTests: false # Optional
    #vstestLocationMethod: 'version' # Optional. Options: version, location
    #vsTestVersion: 'latest' # Optional. Options: latest, 16.0, 15.0, 14.0, toolsInstaller
    #vstestLocation: # Optional
    #runSettingsFile: # Optional
    #overrideTestrunParameters: # Optional
    #pathtoCustomTestAdapters: # Optional
    #runInParallel: False # Optional
    #runTestsInIsolation: False # Optional
    #codeCoverageEnabled: False # Optional
    #otherConsoleOptions: # Optional
    #distributionBatchType: 'basedOnTestCases' # Optional. Options: basedOnTestCases, basedOnExecutionTime, basedOnAssembly
    #batchingBasedOnAgentsOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customBatchSize
    #customBatchSizeValue: '10' # Required when distributionBatchType == BasedOnTestCases && BatchingBasedOnAgentsOption == CustomBatchSize
    #batchingBasedOnExecutionTimeOption: 'autoBatchSize' # Optional. Options: autoBatchSize, customTimeBatchSize
    #customRunTimePerBatchValue: '60' # Required when distributionBatchType == BasedOnExecutionTime && BatchingBasedOnExecutionTimeOption == CustomTimeBatchSize
    #dontDistribute: False # Optional
    #testRunTitle: # Optional
    #platform: # Optional
    #configuration: # Optional
    #publishRunAttachments: true # Optional
    #failOnMinTestsNotRun: false # Optional
    #minimumExpectedTests: '1' # Optional
    #diagnosticsEnabled: false # Optional
    #collectDumpOn: 'onAbortOnly' # Optional. Options: onAbortOnly, always, never
    #rerunFailedTests: False # Optional
    #rerunType: 'basedOnTestFailurePercentage' # Optional. Options: basedOnTestFailurePercentage, basedOnTestFailureCount
    #rerunFailedThreshold: '30' # Optional
    #rerunFailedTestCasesMaxLimit: '5' # Optional
    #rerunMaxAttempts: '3' # Optional

인수

인수 Description
testSelector
를 사용하여 테스트 선택
(필수) 테스트 어셈블리: 테스트를 포함하는 하나 이상의 테스트 어셈블리를 지정하려면 이 옵션을 사용합니다. 필요에 따라 필터 조건을 지정하여 특정 테스트만 선택할 수 있습니다.
테스트 계획: 자동화된 테스트 메서드가 연결된 테스트 계획에서 테스트를 실행하려면 이 옵션을 사용합니다. 테스트를 테스트 사례 작업 항목과 연결하는 방법에 대한 자세한 내용은 자동화된 테스트를 테스트 사례와 연결합니다.
테스트 실행:테스트 계획에서 테스트를 실행하도록 환경을 설정할 때 이 옵션을 사용합니다. CI/CD(연속 통합/지속적인 배포) 파이프라인에서 테스트를 실행할 때는 이 옵션을 사용하면 안 됩니다.
기본값: testAssemblies
testAssemblyVer2
파일 테스트
(필수) 지정된 파일에서 테스트를 실행합니다. 순서가 지정된 테스트 및 웹 테스트는 각각 및 .webtest 파일을 지정하여 .orderedtest 실행할 수 있습니다. 실행 .webtest하려면 Visual Studio 2017 업데이트 4 이상이 필요합니다. 파일 경로는 검색 폴더를 기준으로 합니다. 여러 줄의 미니매치 패턴을 지원합니다. 추가 정보
기본값: **\\*test*.dll\n!**\\*TestAdapter.dll\n!**\\obj\\**
testPlan
테스트 계획
(필수) 자동화된 테스트 사례가 있는 테스트 도구 모음이 포함된 테스트 계획을 선택합니다.
testSuite
테스트 도구 모음
(필수) 자동화된 테스트 사례가 포함된 하나 이상의 테스트 도구 모음을 선택합니다. 테스트 사례 작업 항목은 자동화된 테스트 방법과 연결되어야 합니다. 자세히 알아봅니다.
testConfiguration
테스트 구성
(필수) 테스트 구성을 선택합니다.
tcmTestRun
테스트 실행
(선택 사항) 테스트 실행 기반 선택은 테스트 계획에서 자동화된 테스트 실행을 트리거할 때 사용됩니다. 이 옵션은 CI/CD 파이프라인에서 테스트를 실행하는 데 사용할 수 없습니다.
searchFolder
검색 폴더
(필수) 테스트 어셈블리를 검색할 폴더입니다.
testFiltercriteria
테스트 필터 조건
(선택 사항) 테스트 어셈블리에서 테스트를 필터링하는 추가 조건입니다.
예: Priority=1|Name=MyTestMethod. 자세한 정보
runOnlyImpactedTests
영향을 받은 테스트만 실행
(선택 사항) 코드 변경의 유효성을 검사하는 데 필요한 테스트만 자동으로 선택하고 실행합니다. 자세한 정보
runAllTestsAfterXBuilds
모든 테스트를 실행해야 하는 빌드 수
(선택 사항) 모든 테스트를 자동으로 실행할 빌드 수입니다. 테스트 영향 분석은 테스트 사례와 소스 코드 간의 매핑을 저장합니다. 모든 테스트를 정기적으로 실행하여 매핑을 다시 생성하는 것이 좋습니다.
uiTests
테스트 조합에 UI 테스트 포함
(선택 사항) UI 테스트를 실행하려면 에이전트가 자동 로그온을 사용하도록 설정된 대화형 모드에서 실행 되도록 설정되어 있는지 확인합니다. 에이전트를 대화형으로 실행하도록 설정하는 작업은 빌드/릴리스를 큐에 대기하기 전에 수행해야 합니다. 이 확인란을 선택하면 대화형 모드에서 에이전트가 자동으로 구성되지 않습니다. 작업에서 이 옵션은 오류를 방지하기 위해 에이전트를 적절하게 구성하는 미리 알림 역할을 하는 것입니다. VS 2015 및 2017 풀의 호스트된 Windows 에이전트를 사용하여 UI 테스트를 실행할 수 있습니다.
vstestLocationMethod
를 사용하여 테스트 플랫폼 선택
(선택 사항) 사용할 테스트 플랫폼을 지정합니다.
vsTestVersion
테스트 플랫폼 버전
(선택 사항) 사용할 Visual Studio 테스트의 버전입니다. 최신 버전을 지정하면 설치된 내용에 따라 Visual Studio 2017 또는 Visual Studio 2015를 선택합니다. Visual Studio 2013 지원되지 않습니다. 에이전트에서 Visual Studio를 사용하지 않고 테스트를 실행하려면 YAML의 Installed by tools installer UI 또는 toolsInstaller에서 이 옵션을 사용합니다. NuGet에서 테스트 플랫폼을 획득하려면 'Visual Studio 테스트 플랫폼 설치 관리자' 작업을 포함해야 합니다.
vstestLocation
vstest.console.exe 경로
(선택 사항) VSTest의 경로를 지정합니다.
runSettingsFile
설정 파일
(선택 사항) 테스트에 runsettings 사용할 경로 또는 testsettings 파일입니다. Visual Studio 15.7부터 모든 유형의 테스트에 runettings를 사용하는 것이 좋습니다. .testsettings 파일을 .runsettings 파일로 변환하는 방법에 대한 자세한 내용은 이 항목을 참조하세요.
overrideTestrunParameters
테스트 실행 매개 변수 재정의
(선택 사항) runsettings 파일의 TestRunParameters 섹션 또는 testsettings 파일의 속성 섹션에 정의된 매개 변수를 재정의합니다.
예: -key1 value1 -key2 value2. 메모: 파일에 지정된 속성은 testsettings Visual Studio 2017 업데이트 4 이상을 사용하여 TestContext를 통해 액세스할 수 있습니다.
pathtoCustomTestAdapters
사용자 지정 테스트 어댑터 경로
(선택 사항) 사용자 지정 테스트 어댑터에 대한 디렉터리 경로입니다. 테스트 어셈블리와 동일한 폴더에 있는 어댑터는 자동으로 검색됩니다.
runInParallel
다중 코어 컴퓨터에서 병렬로 테스트 실행
(선택 사항) 설정된 경우 테스트는 컴퓨터의 사용 가능한 코어를 활용하여 병렬로 실행됩니다. 이렇게 하면 runsettings 파일에 지정된 경우 MaxCpuCount가 재정의됩니다. 테스트를 병렬로 실행하는 방법에 대해 자세히 알아보려면 여기 를 클릭하세요.
runTestsInIsolation
격리된 테스트 실행
(선택 사항) 격리된 프로세스에서 테스트를 실행합니다. 이렇게 하면 vstest.console.exe 테스트의 오류에 대해 프로세스가 중지될 가능성이 적지만 테스트 실행 속도가 느려질 수 있습니다. 이 옵션은 현재 다중 에이전트 작업 설정으로 실행할 때 사용할 수 없습니다.
codeCoverageEnabled
코드 검사 사용
(선택 사항) 테스트 실행에서 코드 검사 정보를 수집합니다.
otherConsoleOptions
기타 콘솔 옵션
(선택 사항) 여기에 설명된 vstest.console.exe대로 전달할 수 있는 기타 콘솔 옵션입니다. 이러한 옵션은 지원되지 않으며 에이전트 작업의 다중 에이전트 병렬 설정을 사용하여 테스트를 실행하거나 테스트 계획 옵션을 사용하여 테스트를 실행할 때 무시됩니다. 대신 설정 파일을 사용하여 옵션을 지정할 수 있습니다.
distributionBatchType
Batch 테스트
(선택 사항) 일괄 처리는 테스트 그룹입니다. 테스트 일괄 처리는 동시에 테스트를 실행하고 일괄 처리에 대한 결과가 게시됩니다. 태스크가 실행되는 작업이 여러 에이전트를 사용하도록 설정된 경우 각 에이전트는 병렬로 실행할 테스트의 사용 가능한 일괄 처리를 선택합니다.
테스트 및 에이전트 수에 따라: 테스트 실행에 참여하는 테스트 및 에이전트 수를 기반으로 하는 간단한 일괄 처리입니다.
테스트의 과거 실행 시간을 기준으로: 이 일괄 처리는 과거 실행 시간을 고려하여 각 일괄 처리의 실행 시간이 거의 같도록 테스트 일괄 처리를 만듭니다.
테스트 어셈블리 기반: 어셈블리의 테스트는 함께 일괄 처리됩니다."
기본값: basedOnTestCases
batchingBasedOnAgentsOption
일괄 처리 옵션
(선택 사항) 테스트 실행에 참여하는 테스트 및 에이전트 수를 기반으로 하는 간단한 일괄 처리입니다. 일괄 처리 크기가 자동으로 결정되면 각 일괄 처리에 테스트가 포함됩니다 (total number of tests / number of agents) . 일괄 처리 크기를 지정하면 각 일괄 처리에 지정된 수의 테스트가 포함됩니다.
기본값: autoBatchSize
customBatchSizeValue
일괄 처리당 테스트 수
(필수) 일괄 처리 크기 지정
기본값: 10
batchingBasedOnExecutionTimeOption
일괄 처리 옵션
(선택 사항) 이 일괄 처리는 과거 실행 시간을 고려하여 각 일괄 처리의 실행 시간이 거의 같도록 테스트 일괄 처리를 만듭니다. 빠른 실행 테스트는 함께 일괄 처리되지만 더 오래 실행되는 테스트는 별도의 일괄 처리에 속할 수 있습니다. 이 옵션을 다중 에이전트 작업 설정과 함께 사용하면 총 테스트 시간이 최소로 줄어듭니다.
기본값: autoBatchSize
customRunTimePerBatchValue
일괄 처리당 실행 시간(초)
(필수) 일괄 처리당 실행 시간(초) 지정
기본값: 60
dontDistribute
작업에서 여러 에이전트를 사용할 때 배포하는 대신 테스트 복제
(선택 사항) 이 옵션을 선택하면 작업이 다중 에이전트 작업에서 실행될 때 에이전트 간에 테스트가 분산되지 않습니다.
선택한 각 테스트는 각 에이전트에서 반복됩니다.
에이전트 작업이 병렬 처리 없이 또는 다중 구성 옵션으로 실행되도록 구성된 경우에는 이 옵션을 적용할 수 없습니다.
기본값: False
testRunTitle
테스트 실행 제목
(선택 사항) 테스트 실행의 이름을 입력합니다.
platform
플랫폼 빌드
(선택 사항) 테스트를 보고해야 하는 플랫폼을 빌드합니다. 빌드 작업에서 플랫폼에 대한 변수를 정의한 경우 여기에서 사용합니다.
configuration
빌드 구성
(선택 사항) 테스트를 보고해야 하는 구성을 빌드합니다. 빌드 작업에서 구성에 대한 변수를 정의한 경우 여기에서 사용합니다.
publishRunAttachments
테스트 첨부 파일 업로드
(선택 사항) 실행 수준 첨부 파일 게시를 옵트인/옵트아웃합니다.
기본값: true
failOnMinTestsNotRun
최소 테스트 수가 실행되지 않는 경우 태스크 실패
(선택 사항) 최소 테스트 수가 실행되지 않는 경우 이 옵션을 사용하여 작업을 실패합니다. 이는 작업 입력 또는 기본 테스트 어댑터 종속성을 변경하면 원하는 테스트의 하위 집합만 찾게 되는 경우에 유용할 수 있습니다.
기본값: False
minimumExpectedTests
최소 테스트 수
(선택 사항) 태스크가 성공하기 위해 실행해야 하는 최소 테스트 수를 지정합니다. 총 테스트 실행은 통과, 실패 및 중단된 테스트의 합계로 계산됩니다.
기본값: 1
diagnosticsEnabled
치명적인 오류가 발생한 경우 고급 진단 수집
(선택 사항) 이 옵션을 사용하여 진단 데이터 수집을 설정하여 테스트 충돌과 같은 치명적인 오류를 해결합니다.
이 옵션을 선택하면 시퀀스 XML 파일이 생성되고 테스트 실행에 연결됩니다. 시퀀스 파일에는 잠재적으로 원인 테스트를 식별할 수 있도록 테스트가 실행된 시퀀스에 대한 정보가 포함되어 있습니다.
기본값: false
collectDumpOn
프로세스 덤프 수집 및 테스트 실행 보고서에 연결
(선택 사항) 이 옵션을 사용하여 추가 분석에 사용할 수 있는 미니 덤프를 수집합니다.
중단 시만: 미니 덤프는 테스트 실행이 중단된 경우에만 수집됩니다.
항상: 미니 덤프는 테스트 실행이 완료되었는지 여부에 관계없이 항상 수집됩니다.
Never: 테스트 실행이 완료되었는지 여부에 관계없이 미니 덤프가 수집되지 않습니다.
rerunFailedTests
실패한 테스트 다시 실행
(선택 사항) 이 옵션을 선택하면 실패한 테스트가 통과하거나 최대 시도 횟수에 도달할 때까지 다시 실행됩니다.
기본값: False
rerunType
테스트 실패가 지정된 임계값을 초과하는 경우 다시 실행하지 마세요.
(선택 사항) 실패율이 지정된 임계값을 초과할 때 테스트를 다시 실행하지 않도록 하려면 이 옵션을 사용합니다. 이는 환경 문제로 인해 대규모 오류가 발생하는 경우에 적용됩니다. basedOnTestFailureCount를 basedOnTestFailurePercentage 사용하여 실패한 테스트의 %오류 또는 #을 임계값으로 지정할 수 있습니다.
기본값: basedOnTestFailurePercentage
rerunFailedThreshold
% 오류
(선택 사항) 실패율이 지정된 임계값을 초과할 때 테스트를 다시 실행하지 않도록 하려면 이 옵션을 사용합니다. 이는 환경 문제로 인해 대규모 오류가 발생하는 경우에 적용됩니다.
기본값: 30
rerunFailedTestCasesMaxLimit
실패한 테스트 수
(선택 사항) 실패한 테스트 사례 수가 지정된 제한을 초과할 때 테스트를 다시 실행하지 않도록 하려면 이 옵션을 사용합니다. 이는 환경 문제로 인해 대규모 오류가 발생하며 rerunType이 rerunFailedTestCasesMaxLimit인 경우에 적용됩니다.
기본값: 5
rerunMaxAttempts
최대 시도 횟수
(선택 사항) 실패한 테스트를 다시 시도해야 하는 최대 횟수를 지정합니다. 최대 시도 횟수에 도달하기 전에 테스트가 통과하면 더 이상 다시 실행되지 않습니다.
기본값: 3

오픈 소스

이 작업은 GitHub에서 오픈 소스. 피드백과 기여를 환영합니다.

FAQ

TestCase를 데이터 원본으로 사용하는 테스트를 실행하려면 어떻게 해야 하나요?

TestCase를 데이터 원본으로 사용하는 자동화된 테스트를 실행하려면 다음이 필요합니다.

  1. 에이전트 컴퓨터에 Visual Studio 2017.6 이상이 있어야 합니다. Visual Studio 테스트 플랫폼 설치 관리자 작업은 TestCase를 데이터 원본으로 사용하는 테스트를 실행하는 데 사용할 수 없습니다.

  2. "작업 항목(전체)" 범위에 대한 권한이 있는 PAT 를 만듭니다.

  3. 이전 단계에서 만든 PAT로 설정된 값을 사용하여 Test.TestCaseAccessToken이라는 보안 빌드 또는 릴리스 변수를 추가합니다.

일부 작업 옵션으로 데이터 기반 xUnit 및 NUnit 테스트를 실행할 때 문제가 발생합니다. 알려진 제한 사항이 있나요?

xUnit 및 NUnit 테스트 프레임워크를 사용하는 데이터 기반 테스트에는 몇 가지 알려진 제한 사항이 있으며 다음 작업 옵션과 함께 사용할 수 없습니다.

  1. 실패한 테스트를 다시 실행합니다.

  2. 여러 에이전트에 테스트를 배포하고 옵션을 일괄 처리합니다.

  3. 테스트 영향 분석.

위의 제한 사항은 이러한 테스트 프레임워크의 어댑터가 데이터 기반 테스트를 검색하고 보고하는 방식 때문입니다.

VsTest 태스크는 한 번에 여러 대상 프레임워크를 대상으로 하는 테스트 실행을 지원하나요?

VsTest 작업은 vstest 플랫폼 쪽의 제한 사항이므로 한 번에 여러 대상 프레임워크를 대상으로 하는 테스트 실행을 지원하지 않습니다. 여러 대상 프레임워크에 속하는 테스트를 실행하려면 특정 프레임워크를 대상으로 하는 dll 집합당 하나씩 vstest 작업의 여러 인스턴스가 필요합니다.