使用測試影響分析來加速測試 (TIA)

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

持續整合(CI)是業界的重要做法。 整合經常發生,並使用執行回歸測試的自動化組建進行驗證,以儘快偵測整合錯誤。 不過,隨著程式代碼基底的成長和成熟,其回歸測試套件也傾向於成長,就執行完整回歸測試的範圍而言,可能需要數小時的時間。 這會減緩整合的頻率,最終會失敗持續整合的目的。 為了讓 CI 管線快速完成,某些小組會將長時間執行的測試執行延遲到管線中的個別階段。 不過,這隻會進一步擊敗持續整合。

相反地,在建置管線中使用Visual Studio測試工作時啟用測試影響分析 (TIA)。 TIA 會透過自動測試選取來執行累加式驗證。 它會自動選取驗證所認可程序代碼所需的測試子集。 針對輸入 CI/CD 管線的指定程式代碼認可,TIA 只會選取並執行驗證該認可所需的相關測試。 因此,該測試回合會更快速地完成,如果發生失敗,您很快就會知道它,而且因為它全都以相關性來限定範圍,分析也會更快。

使用 TIA 時的測試時間比較

測試影響分析具有:

  • 健全的測試選取機制。 其中包含現有的受影響的測試、先前失敗的測試,以及新加入的測試。
  • 保管庫後援。 對於 TIA 無法瞭解的認可和案例,它會回復為執行所有測試。 TIA 目前僅限於 Managed 程式代碼和單一電腦拓撲。 因此,例如,如果程式代碼認可包含 HTML 或 CSS 檔案的變更,則無法對其產生理由,而且會回復為執行所有測試。
  • 可設定的覆寫。 您可以在設定的週期性執行所有測試。

不過,在搭配 Visual Studio 2015 使用 TIA 時,請注意下列注意事項:

  • 平行執行測試。 在此情況下,測試將會以序列方式執行。
  • 執行已啟用程式代碼涵蓋範圍的測試。 在此情況下,將不會收集程式代碼涵蓋範圍數據。

測試影響分析支援的案例

目前支援 TIA:

  • TFS 2017 Update 1 和 Azure Pipelines
  • 組建管線中Visual Studio測試工作的2.*
  • 使用多個 VSTest 工作建置 vNext
  • VS2015 Update 3 和組建代理程式上的更新版本
  • 本機和裝載的組建代理程式
  • CI 和 PR 工作流程中的
  • Git、GitHub、其他 Git、TFVC 存放庫(包括部分對應的 TFVC 存放庫及因 應措施
  • IIS 互動(透過 REST、SOAP API),使用 HTTP/HTTPS 通訊協定
  • 自動化測試
  • 單一計算機拓撲。 測試和應用程式 (SUT) 必須在同一部電腦上執行。
  • Managed 程式代碼 (任何 .NET Framework 應用程式、任何 .NET 服務)

目前不支援 TIA

  • 多機器拓撲(測試正在執行部署至不同電腦的應用程式)
  • 數據驅動測試
  • 測試配接器特定的平行測試執行
  • .NET Core
  • UWP

TIA 範圍和應用程式的詳細資訊

啟用測試影響分析

TIA 可透過Visual Studio測試工作的2.*版支援。 如果您的應用程式是單一層應用程式,您只需要檢查 在工作 UI 中只執行受影響的測試 。 測試影響數據收集器會自動設定。 不需要其他步驟。

在 VS 測試工作 UI 中啟用 TIA

如果您的應用程式與 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 會整合到摘要和詳細數據層級的現有測試報告,包括通知電子郵件。

報告摘要包含 TIA 整合

[報告測試] 頁面包含 TIA 整合

TIA 和 Azure Pipelines 整合的詳細資訊

管理測試影響分析行為

您可以在測試回合期間影響包含或忽略測試的方式:

  • 透過 VSTest 工作 UI。 TIA 可以設定為在設定的週期性執行所有測試。 建議使用此選項,而且是規範測試選取的方法。
  • 藉由設定組建變數。 即使在 VSTest 工作中啟用 TIA 之後,也可以藉由將變數 DisableTestImpactAnalysis 設定為 true 來停用特定組建。 此覆寫會強制 TIA 執行該組建的所有測試。 在後續的組建中,TIA 會回到優化的測試選取範圍。

當 TIA 開啟認可並看到未知的文件類型時,它會回復為執行所有測試。 雖然從安全觀點而言,這很好,但在某些情況下,調整此行為可能很有用。 例如:

  • TI_IncludePathFilters 變數設定為特定路徑,以便只將這些路徑包含在您要套用 TIA 的存放庫中。 當小組使用共用存放庫時,這非常有用。 設定此變數會停用設定中未包含之所有其他路徑的 TIA。
  • 設定TIA_IncludePathFilters變數,以指定不會影響測試結果的檔類型,以及應該忽略哪些變更。 例如,忽略 .csproj 檔案的變更,請將變數設定為值 !**\*.csproj

設定變數時, 請使用迷你 模式,並以分號分隔多個專案。

若要評估 TIA 是否選取適當的測試:

  • 手動驗證選取範圍。 瞭解 SUT 和測試架構如何建構的開發人員,可以使用 TIA 報告功能手動驗證測試選取專案。
  • 執行 TIA 選取的測試,然後依序執行所有測試。 在組建管線中,使用兩個測試工作 - 一個只執行受影響的測試 (T1) 和一個執行所有測試 (T2) 的測試。 如果 T1 通過,請檢查 T2 是否也通過。 如果 T1 中有失敗的測試,請檢查 T2 報告相同的失敗集。

TIA 進階設定的詳細資訊

提供自定義相依性對應

TIA 使用下列格式的相依性對應。

TestMethod1
  dependency1
  dependency2
TestMethod2
  dependency1
  dependency3

TIA 可以針對 Managed 程式代碼執行產生這類相依性對應。 這類相依性位於.cs.vb檔案中,TIA 可以自動監看這類檔案的認可,然後在其相依性清單中執行具有這些來源檔案的測試。

您可以藉由明確提供相依性對應做為 XML 檔案來擴充 TIA 的範圍。 例如,您可能想要支援其他語言的程式代碼,例如 JavaScript 或 C++,或支援在不同電腦上執行測試和產品代碼的案例。 對應甚至可以是近似值,而且您想要執行的測試集可以在測試案例篩選條件中指定,例如,您通常會在 VSTest 工作參數中提供。

XML 檔案應該簽入您的存放庫,通常是在根層級。 然後設定組建變數 TIA。UserMapFile 指向它。 例如,如果檔案名為 TIAmap.xml,請將變數設定為 $(System.DefaultWorkingDirectory)/TIAmap.xml

如需 XML 檔格式的範例,請參閱 TIA 自定義相依性對應

另請參閱

說明與支援