共用方式為


針對任何測試執行器平行執行測試

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

執行測試來驗證程式代碼變更是維護品質的關鍵。 若要讓持續整合做法成功,您必須擁有搭配每個組建執行的良好測試套件。 不過,隨著程式碼基底成長,迴歸測試套件通常也會成長,而且執行完整迴歸測試可能需要很長的時間。 有時候,測試本身可能長時間執行 ,這通常是當您撰寫端對端測試的情況。 這可減少客戶價值可傳遞的速度,因為管線無法快速處理組建。

平行執行測試是改善 CI/CD 管線效率的絕佳方式。 藉由採用雲端所提供的額外容量,即可輕鬆完成此作業。 本文討論如何使用多個代理程式來處理作業,以平行處理測試。

必要條件

熟悉代理程式和作業的概念。 每個代理程式一次只能執行一個作業。 若要平行執行多個作業,您必須設定多個代理程式。 您也需要足夠的 平行作業

設定平行作業

在 YAML 中指定「平行」策略,並指出應該分派多少個作業。 變數 System.JobPositionInPhaseSystem.TotalJobsInPhase 會新增至每個作業。

jobs:
- job: ParallelTesting
  strategy:
    parallel: 2

提示

您可以指定最多 99 個代理程式,以相應增加大型測試套件的測試。

切割測試套件

若要平行執行測試,您必須先 (或分割區) 測試套件,讓每個配量可以獨立執行。 例如,您可以使用兩個代理程式,並在每個代理程式上平行執行 500 個測試,而不是在單一代理程式上執行大型套件 1000 個測試。 或者,您也可以使用 8 個代理程式並在每個代理程式上平行執行 125 個測試,進一步減少執行測試所花費的時間量。

在作業中執行測試的步驟必須知道應該執行哪一個測試配量。 System.JobPositionInPhaseSystem.TotalJobsInPhase 和 變數可用於此用途:

  • System.TotalJobsInPhase 表示您可以將其視為「totalSlices」 (配量總數)
  • System.JobPositionInPhase 識別特定配量 (您可以將它視為 「sliceNum」)

如果您將所有測試檔案表示為單一維度陣列,則每個作業都可以執行索引為 [sliceNum + totalSlices] 的測試檔案,直到所有測試檔案都執行為止。 例如,如果您有六個測試檔案和兩個平行作業,第一個作業 (slice0) 會執行編號為 0、2 和 4 的測試檔案,而第二個作業 (slice1) 會執行編號為 1、3 和 5 的測試檔案。

2 個配量中的 6 個測試

如果您改用三個平行作業,第一個作業 (slice0) 會執行編號為 0 和 3 的測試檔案,第二個作業 (slice1) 將會執行編號為 1 和 4 的測試檔案,而第三個工作 (slice2) 將會執行編號為 2 和 5 的測試檔案。

3 個配量中的 6 個測試

範例程式碼

這個 .NET Core 範例會使用 --list-tests--filter 參數 dotnet test 來配量測試。 測試是使用 NUnit 執行。 然後,測試工作所 DotNetCoreCLI@2 建立的測試結果會發佈至伺服器。 將此存放庫) ,將 (匯入 gitHub Azure Repos或Azure DevOps Server) 或分支 (:

https://github.com/idubnori/ParallelTestingSample-dotnet-core

此 Python 範例會使用 PowerShell 腳本來配量測試。 測試是使用 pytest 執行。 接著,pytest 所建立的 JUnit 樣式測試結果會發佈至伺服器。 將此存放庫) ,將 (匯入 gitHub Azure Repos或Azure DevOps Server) 或分支 (:

https://github.com/PBoraMSFT/ParallelTestingSample-Python

此 JavaScript 範例會使用 Bash 腳本來配量測試。 測試是使用 Mocha 執行器來執行。 接著,Mocha 所建立的 JUnit 樣式測試結果會發佈至伺服器。 將此存放庫) ,將 (匯入 gitHub Azure Repos或Azure DevOps Server) 或分支 (:

https://github.com/PBoraMSFT/ParallelTestingSample-Mocha

範例程式碼包含存放庫根目錄的檔案 azure-pipelines.yml ,可用來建立管線。 請遵循 建立您的第一個管線 中的所有指示來建立管線,並查看測試配量的運作情形。

結合平行處理原則以進行大量平行測試

在管線中使用平行作業時,管線會採用多部機器平行執行每個作業。 大部分的測試執行器都提供在單一電腦上平行執行測試的功能, (通常是藉由建立多個平行) 執行的處理常式或執行緒。 這兩種類型的平行處理原則可以結合以進行大量平行測試,讓管線中的測試變得非常有效率。

說明及支援