Visual Studio 測試代理程式部署工作

Azure DevOps Services |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和舊版本中,組建和發行管線稱為定義執行稱為組建服務連接稱為服務端點階段稱為環境,以及作業稱為階段

這項工作已在 Azure Pipelines 和 TFS 2018 和更新版本中淘汰。 使用2.x 版或更高版本的Visual Studio 測試工作與作業,以在通用代理程式上執行單元和功能測試。 如需詳細資訊,請參閱 使用整合代理程式和作業進行測試

TFS 2017 及更早版本

您可以使用此工作來部署和設定測試代理程式,以在一組電腦上執行測試。 這項工作所部署的測試代理程式可以使用Visual Studio 測試工作來收集資料或執行分散式測試。

需求和必要條件

此工作需要目的電腦具有:

  • Windows 7 Service pack 1 或 Windows 2008 R2 service pack 2 或更新版本
  • .NET 4.5 或更高版本
  • >enable-psremoting 藉由執行 >enable-psremoting PowerShell 腳本來啟用

Windows 遠端管理 (WinRM)

這項工作會使用Windows 遠端管理 (WinRM) 來存取內部部署實體電腦,或是已加入網域或已加入工作組的虛擬電腦。

設定內部部署實體電腦或虛擬機器的 WinRM

遵循加入網域的步驟中所述的步驟

若要為 Microsoft Azure 設定 WinRM 虛擬機器

Azure 虛擬機器要求 WinRM 使用 HTTPS 通訊協定。 您可以使用自我簽署的測試憑證。 在此情況下,自動化代理程式將不會驗證憑證的真實性是否由受信任的憑證授權單位單位所發行。

  • Azure 傳統虛擬機器。 當您從 Azure 入口網站建立傳統虛擬機器時,虛擬機器已針對 WinRM over HTTPS 進行設定,並已在防火牆中開啟預設埠5986,並在電腦上安裝自我簽署憑證。 您可以存取這些虛擬機器,而不需要進一步設定。 您也可以使用 Azure 資源群組部署 工作來選取現有的傳統虛擬機器。

  • Azure 資源群組。 如果您有 Azure 資源群組

已在 Azure 入口網站中定義,您必須將它設定為使用 WinRM HTTPS 通訊協定。 您必須在防火牆中開啟埠5986,並安裝自我簽署憑證。

若要動態部署包含虛擬機器的 Azure 資源群組,請使用 Azure 資源群組部署 工作。 這項工作有一個名為 [ 啟用部署必要條件] 的核取方塊。 選取此項可在虛擬機器上自動設定 WinRM HTTPS 通訊協定、在防火牆中開啟埠5986,以及安裝測試憑證。 然後虛擬機器就可以在部署工作中使用。

YAML 程式碼片段

# Visual Studio test agent deployment
# Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests
- task: DeployVisualStudioTestAgent@2
  inputs:
    testMachines: 
    adminUserName: 
    adminPassword: 
    #winRmProtocol: 'Http' # Options: http, https
    #testCertificate: true # Optional
    machineUserName: 
    machinePassword: 
    #runAsProcess: false # Optional
    #isDataCollectionOnly: false # Optional
    #testPlatform: '14.0' # Optional. Options: 15.0, 14.0
    #agentLocation: # Optional
    #updateTestAgent: false # Optional

引數

引數 描述
機器 以逗號分隔的電腦 Fqdn 或 IP 位址清單,可選擇性地包含埠號碼。 最大值為32電腦 (或32代理程式) 。 可為以下項目:
- Azure 資源群組的名稱。
-以逗號分隔的電腦名稱稱清單。 範例: dbserver.fabrikam.com,dbserver_int.fabrikam.com:5986,192.168.34:5986
-先前工作的輸出變數。
系統管理員登入 目標主機上網域或本機系統管理帳戶的使用者名稱) (s。 搭配電腦的清單使用時,需要此參數。 指定電腦群組時,它是選擇性的,如果指定的話,會覆寫為電腦群組定義的認證設定。
-支援 username、 usernamemachine-name\username.\username 等格式。
-不支援 UPN 格式 username@domain.com ,例如和內建系統帳戶(例如 NT Authority\System )。
密碼 以上指定之系統管理帳戶的密碼。 搭配電腦的清單使用時,需要此參數。 指定電腦群組時,它是選擇性的,如果指定的話,會覆寫為電腦群組定義的認證設定。 請考慮使用組建或發行管線的全域秘密變數來隱藏密碼。 範例: $(passwordVariable)
通訊協定 將用來連接到目標主機的通訊協定( HTTPHTTPS)。
代理程式設定-使用者名稱 必要。 測試代理程式將使用的使用者名稱。 必須是具有系統管理許可權之測試電腦上的帳戶。
-支援 username、 usernamemachine-name\username.\username 等格式。
-不支援 UPN 格式 username@domain.com ,例如和內建系統帳戶(例如 NT Authority\System )。
代理程式設定-密碼 必要。 測試代理程式之使用者 名稱 的密碼。 若要保護密碼,請建立 變數 ,並使用「掛鎖」圖示將它隱藏。
代理程式設定-執行 UI 測試 當設定時,測試代理程式將會以互動式進程的形式執行。 當您在測試期間與 UI 元素互動或啟動應用程式時,這是必要的。 例如,在完全精確的瀏覽器上執行的自動程式碼 UI 或 Selenium 測試將需要設定此選項。
代理程式設定-僅啟用資料收集 當設定時,測試代理程式將會傳回先前收集的資料,而不會重新執行測試。 這項功能目前僅適用于程式碼涵蓋範圍。 另請參閱下方的常見問題一節。
Advanced-Test agent 版本 要使用之測試代理程式的版本。
Advanced-Test agent 位置 選擇性。 測試代理程式的路徑 (vstf_testagent.exe) (如果與預設路徑不同的話)。
-如果您使用位於本機電腦或網路上的測試代理程式複本,請指定該實例的路徑。
:組建代理程式 (必須使用在) 或測試代理程式 (上執行的身分識別來存取該位置,) 。
-對於 Azure 測試電腦,可以使用 web 位置。
Advanced-Update 測試代理程式 如果設定,而且測試代理程式已經安裝在測試電腦上,則工作會檢查是否有新版本的測試代理程式。
控制項選項 請參閱 控制項選項

工作最多可支援32部電腦/代理程式。

支援的案例

將此工作用於:

  • 針對內部部署標準環境執行自動化測試
  • 針對現有的 Azure 環境執行自動化測試
  • 針對新布建的 Azure 環境執行自動化測試

這些案例支援的選項如下:

  • TFS
    • 內部部署和 Azure Pipelines

  • 組建和發行代理程式
    • 支援託管和內部部署代理程式。
    • 代理程式必須能夠與所有測試電腦通訊。 如果測試電腦位於防火牆後方的內部部署,則無法使用 Azure Pipelines Microsoft 裝載的代理程式,因為它將無法與測試電腦通訊。
    • 代理程式必須能夠存取網際網路,才能下載測試代理程式。 如果不是這種情況,則必須手動下載測試代理程式、上傳至代理程式可存取的網路位置,以及用來指定位置的 測試代理程式位置 參數。 使用者必須手動檢查代理程式的新版本,並更新測試電腦。

  • 持續整合/持續部署工作流程
    • 組建/部署/測試工作在組建和發行工作流程中都受到支援。

  • 電腦群組設定
    • 在組建/部署/測試工作的機器群組內,僅支援以 Windows 為基礎的機器。 電腦群組內不支援 Linux、macOS 或其他平臺。
    • 不支援在任何測試電腦上安裝任何版本的 Visual Studio。
    • 不支援在任何測試電腦上安裝任何舊版的測試代理程式。

  • 測試機器拓撲
    • 完全支援以 Azure 為基礎的測試機器,包括現有的測試電腦和新布建的測試電腦。
    • 已安裝測試代理程式的電腦必須具有使用中的 TFS 實例的網路存取權。 不支援網路隔離的測試機器。
    • 支援已加入網域的測試電腦。
    • 已加入工作組的測試電腦必須使用在建立電腦群組期間設定的 HTTPS 驗證。

  • 使用錯誤狀況
    • 在不同的電腦群組之間使用相同的測試電腦,並以任何組建/部署/測試工作來執行組建 (,) 與這些電腦群組平行執行的作業不受支援。
    • 不支援取消包含任何組建/部署/測試工作的進行中組建或發行。 如果您取消,後續組建的行為可能無法預期。
    • 不支援取消透過組建/部署/測試工作排入佇列的進行中測試回合。
    • 不支援將測試代理程式設定為非系統管理員或使用服務帳戶來執行測試。
    • 不支援執行通用 Windows 平臺應用程式的測試。 使用Visual Studio 測試工作來執行這些測試。

範例

詳細資訊

開放原始碼

這項工作開放原始碼在 GitHub 上。 歡迎您提供意見反應和投稿。

常見問題集

何時會使用 [僅啟用資料收集] 選項?

例如,在用戶端-伺服器應用程式模型中,您可以在伺服器上部署測試代理程式,並使用另一項工作將測試代理程式部署到測試電腦。 這可讓您從伺服器和用戶端電腦收集資料,而不會觸發伺服器機器上的測試執行。

如何? 建立 Azure 資源群組進行測試?

請參閱使用 azure 入口網站來管理您的 azure 資源azure Resource Manager 建立資源群組和 VNET

是否需要代理程式?

您至少需要一個 代理程式 來執行您的組建或發行。

我遇到問題。 如何進行疑難排解?

請參閱 疑難排解組建和發行

我無法選取預設的代理程式組件區,也無法將組建或發行排在佇列中。 我要如何修正此問題?

請參閱 代理程式集區。

我的 NuGet 推送工作失敗,發生下列錯誤:「錯誤:無法取得本機簽發者憑證」。 我該怎麼辦?

您可以藉由新增受信任的根憑證來修正此問題。 您可以將環境變數新增 NODE_EXTRA_CA_CERTS=file 至組建代理程式,也可以在管線中新增工作 NODE.EXTRA.CA.CERTS=file 變數。 如需此變數的詳細資訊,請參閱 Node.js 檔 。 如需在管線中設定變數的指示,請參閱在 管線中設定變數

我使用 TFS 內部部署,而且沒有看到其中一些功能。 為什麼不用?

其中有些功能僅適用于Azure Pipelines ,但尚未在內部部署使用。 如果您已 升級至最新版本的 TFS,某些功能可在內部部署使用。

說明及支援