TIA(테스트 영향 분석)를 사용하여 테스트 속도 향상

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

참고 항목

TFS 2017 업데이트 1 이상 및 Visual Studio 2015 업데이트 3 이상에만 적용됩니다.

CI(연속 통합)는 업계의 핵심 사례입니다. 통합은 자주 수행되며, 가능한 한 빨리 통합 오류를 감지하기 위해 회귀 테스트를 실행하는 자동화된 빌드로 확인됩니다. 그러나 코드베이스가 성장하고 성숙함에 따라 회귀 테스트 제품군도 증가하는 경향이 있습니다. 전체 회귀 테스트를 실행하려면 몇 시간이 필요할 수 있습니다. 이렇게 하면 통합 빈도가 느려지고 궁극적으로 연속 통합의 목적이 무너집니다. CI 파이프라인이 빠르게 완료되도록 하기 위해 일부 팀은 더 오래 실행되는 테스트 실행을 파이프라인의 별도 단계로 연기합니다. 그러나 이는 연속 통합을 더욱 무찌를 뿐입니다.

대신 빌드 파이프라인에서 Visual Studio 테스트 작업을 사용할 때 TIA(테스트 영향 분석)를 사용하도록 설정합니다. TIA는 자동 테스트 선택을 통해 증분 유효성 검사를 수행합니다. 커밋되는 코드의 유효성을 검사하는 데 필요한 테스트 하위 집합만 자동으로 선택됩니다. CI/CD 파이프라인을 입력하는 지정된 코드 커밋의 경우 TIA는 해당 커밋의 유효성을 검사하는 데 필요한 관련 테스트만 선택하고 실행합니다. 따라서 테스트 실행이 더 빨리 완료되고, 오류가 발생하면 더 빨리 알게 되고, 모든 범위가 관련성에 따라 범위가 지정되므로 분석도 더 빨라집니다.

Comparison of test times when using TIA

테스트 영향 분석에는 다음이 있습니다.

  • 강력한 테스트 선택 메커니즘입니다. 영향을 받은 기존 테스트, 이전에 실패한 테스트 및 새로 추가된 테스트가 포함됩니다.
  • 대체 금고. TIA가 이해할 수 없는 커밋 및 시나리오의 경우 모든 테스트 실행으로 대체됩니다. TIA는 현재 관리 코드 및 단일 컴퓨터 토폴로지로만 범위가 지정됩니다. 예를 들어 코드 커밋에 HTML 또는 CSS 파일에 대한 변경 내용이 포함된 경우 이에 대해 추론할 수 없으며 모든 테스트 실행으로 대체됩니다.
  • 구성 가능한 재정의입니다. 구성된 주기로 모든 테스트를 실행할 수 있습니다.

그러나 Visual Studio 2015에서 TIA를 사용하는 경우 다음과 같은 주의 사항에 유의하세요.

  • 병렬로 테스트 실행 이 경우 테스트가 직렬로 실행됩니다.
  • 코드 검사를 사용하도록 설정된 테스트를 실행합니다. 이 경우 코드 검사 데이터는 수집되지 않습니다.

참고 항목

Microsoft Visual Studio Team Foundation Server 2018 및 이전 버전에는 다음과 같은 이름 지정 차이점이 있습니다.

  • 빌드 및 릴리스용 파이프라인을 정의라고 합니다.
  • 실행을 빌드라고 합니다.
  • 서비스 연결을 서비스 엔드포인트라고 합니다.
  • 스테이지 를 환경이라고 합니다 .
  • 작업을 단계라고 합니다.

테스트 영향 분석 지원 시나리오

현재 TIA는 다음을 지원합니다.

  • TFS 2017 업데이트 1 이상 및 Azure Pipelines
  • 빌드 파이프라인의 Visual Studio 테스트 태스크 버전 2.*
  • 여러 VSTest 작업을 사용하여 vNext 빌드
  • 빌드 에이전트의 VS2015 업데이트 3 이상
  • 로컬 및 호스트된 빌드 에이전트
  • CI 및 PR 워크플로
  • Git, GitHub, 기타 Git, TFVC 리포지토리(해결 방법을 사용하여 부분적으로 매핑된 TFVC 리포지토리 포함)
  • HTTP/HTTPS 프로토콜을 사용하는 IIS 상호 작용(REST, SOAP API를 통해)
  • 자동화된 테스트
  • 단일 컴퓨터 토폴로지. 테스트 및 앱(SUT)은 동일한 컴퓨터에서 실행되어야 합니다.
  • 관리 코드(모든 .NET Framework 앱, 모든 .NET 서비스)

현재 TIA는 다음을 지원하지 않습니다 .

  • 다중 머신 토폴로지(테스트가 다른 컴퓨터에 배포된 앱을 행사하는 경우)
  • 데이터 기반 테스트
  • 어댑터별 병렬 테스트 실행 테스트
  • .NET Core
  • UWP

TIA 범위 및 애플리케이션에 대한 자세한 정보

테스트 영향 분석 사용

TIA는 Visual Studio 테스트 작업의 버전 2.*를 통해 지원됩니다. 앱이 단일 계층 애플리케이션인 경우 작업 UI에서 영향을 받은 테스트만 실행할 검사 해야 합니다. 테스트 영향 데이터 수집기가 자동으로 구성됩니다. 추가 단계는 필요하지 않습니다.

Enable TIA in the VS Test task UI

애플리케이션이 IIS 컨텍스트에서 서비스와 상호 작용하는 경우 .runsettings 파일을 사용하여 IIS 컨텍스트에서 실행되도록 테스트 영향 데이터 수집기도 구성해야 합니다. 이 구성을 만드는 샘플은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- This is the TestImpact data collector.-->
      <DataCollector uri="datacollector://microsoft/TestImpact/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TestImpactDataCollector, Microsoft.VisualStudio.TraceCollector, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Test Impact">
        <Configuration>
          <!-- enable IIS data collection-->
          <InstrumentIIS>True</InstrumentIIS>
          <!-- file level data collection -->
          <ImpactLevel>file</ImpactLevel>
          <!-- any job agent related executable or any other service that the test is using needs to be profiled. -->
          <ServicesToInstrument>
            <Name>TeamFoundationSshService</Name>
          </ServicesToInstrument>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

테스트 영향 분석 결과 보기

TIA는 알림 이메일을 포함하여 요약 및 세부 정보 수준 모두에서 기존 테스트 보고에 통합됩니다.

Reporting Summary includes TIA integration

Reporting Tests page includes TIA integration

TIA 및 Azure Pipelines 통합에 대한 자세한 정보

테스트 영향 분석 동작 관리

테스트 실행 중에 테스트가 포함되거나 무시되는 방식에 영향을 줄 수 있습니다.

  • VSTest 작업 UI를 통해 구성된 주기로 모든 테스트를 실행하도록 TIA를 조건화할 수 있습니다. 이 옵션을 설정하는 것이 권장되며 테스트 선택을 규제하는 수단입니다.
  • 빌드 변수를 설정합니다. VSTest 작업에서 TIA를 사용하도록 설정한 후에도 DisableTestImpactAnalysis변수를 true로 설정하여 특정 빌드에 대해 사용하지 않도록 설정할 수 있습니다. 이 재정의는 TIA가 해당 빌드에 대한 모든 테스트를 실행하도록 강제합니다. 후속 빌드에서 TIA는 최적화된 테스트 선택으로 돌아갑니다.

TIA가 커밋을 열고 알 수 없는 파일 형식이 표시되는 경우 모든 테스트 실행으로 대체됩니다. 안전 측면에서는 좋지만 이 동작을 튜닝하는 것이 유용할 수 있습니다. 예시:

  • TIA를 적용하려는 리포지토리에 이러한 경로만 포함하도록 TI_IncludePathFilters 변수를 특정 경로로 설정합니다. 이는 팀이 공유 리포지토리를 사용하는 경우에 유용합니다. 이 변수를 설정하면 설정에 포함되지 않은 다른 모든 경로에 대해 TIA가 비활성화됩니다.
  • TIA_IncludePathFilters 변수를 설정하여 테스트 결과에 영향을 미치지 않고 변경 내용을 무시해야 하는 파일 형식을 지정합니다. 예를 들어 .csproj 파일에 대한 변경 내용을 무시하려면 변수를 !**\*.csproj으로 설정합니다.

변수를 설정할 때 미니매치 패턴을 사용하고 여러 항목을 세미콜론으로 구분합니다.

TIA가 적절한 테스트를 선택하는지 여부를 평가하려면 다음을 수행합니다.

  • 선택 영역의 유효성을 수동으로 검사합니다. SUT 및 테스트를 설계하는 방법을 알고 있는 개발자는 TIA 보고 기능을 사용하여 테스트 선택의 유효성을 수동으로 검사할 수 있습니다.
  • TIA 선택한 테스트를 실행한 다음 모든 테스트를 순서대로 실행합니다. 빌드 파이프라인에서 영향을 받은 테스트(T1)만 실행하는 작업과 모든 테스트(T2)를 실행하는 테스트 작업 두 가지를 사용합니다. T1이 통과하면 해당 T2도 검사. T1에서 실패한 테스트가 있는 경우 T2가 동일한 오류 집합을 보고하도록 검사.

TIA 고급 구성에 대한 자세한 정보

사용자 지정 종속성 매핑 제공

TIA는 다음 형식의 종속성 맵을 사용합니다.

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

TIA는 관리 코드 실행에 대한 이러한 종속성 맵을 생성할 수 있습니다. 이러한 종속성이 .cs.vb 파일에 있는 경우 TIA는 해당 파일에 대한 커밋을 자동으로 감시한 다음 해당 종속성 목록에 이러한 원본 파일이 있는 테스트를 실행할 수 있습니다.

종속성 맵을 XML 파일로 명시적으로 제공하여 TIA의 범위를 확장할 수 있습니다. 예를 들어 JavaScript 또는 C++와 같은 다른 언어의 코드를 지원하거나 다른 컴퓨터에서 테스트 및 제품 코드가 실행되는 시나리오를 지원할 수 있습니다. 매핑은 대략적일 수도 있고, 일반적으로 VSTest 작업 매개 변수에서 제공하는 것처럼 테스트 사례 필터를 기준으로 실행하려는 테스트 집합을 지정할 수 있습니다.

XML 파일은 일반적으로 루트 수준에서 리포지토리에 검사 합니다. 그런 다음 빌드 변수 TIA를 설정합니다. 이를 가리키는 UserMapFile 입니다. 예를 들어 파일 이름이 TIAmap.xml 경우 변수를 $(System.DefaultWorkingDirectory)/TIAmap.xml 설정합니다.

XML 파일 형식의 예제는 TIA 사용자 지정 종속성 매핑을 참조 하세요.

참고 항목

도움말 및 지원