本文內容
您可以藉由建立 CI/CD 管線,在 Azure 負載測試中自動化負載測試。 在本文中,您將瞭解如何手動設定 GitHub Actions、Azure Pipelines 或其他 CI 工具,以叫用 Azure 負載測試中的現有測試。 自動化負載測試,以持續驗證負載下的應用程式效能和穩定性。
若要將現有的負載測試新增至 CI/CD 管線:
設定服務驗證,以允許 CI 工具連線到您的 Azure 負載測試資源。
將負載測試輸入檔案新增至您的存放庫,例如 JMeter 測試腳本和負載測試 YAML 組態。
更新 CI/CD 管線定義以叫用 Azure 負載測試。
必要條件
Azure DevOps 組織和專案。 如果您沒有 Azure DevOps 組織,您可以 免費 建立一個。 如果您需要開始使用 Azure Pipelines 的協助,請參閱 建立您的第一個管線 。
GitHub 帳戶。 如果您沒有 GitHub 帳戶,您可以 免費 建立一個帳戶。
用來儲存負載測試輸入檔案並建立 GitHub Actions 工作流程的 GitHub 存放庫。 若要建立一個存放庫,請參閱 建立新的存放庫 。
建立或修改 CI 管線的許可權。
儲存負載測試輸入檔案的原始程式碼存放庫。
若要在 CI/CD 工作流程中執行負載測試,您必須授與 CI/CD 工作流程的許可權,才能存取負載測試資源。 建立 CI/CD 工作流程的服務主體,並指派負載測試參與者 Azure RBAC 角色。
在 Azure Pipelines 中建立服務連線
在 Azure Pipelines 中,您會在 Azure DevOps 專案中建立 服務連線 ,以存取 Azure 訂用帳戶中的資源。 當您建立服務連線時,Azure DevOps 會建立 Microsoft Entra 服務主體物件。
登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>
),然後選取您的專案。
將 <your-organization>
文字佔位元取代為您的項目標識碼。
選取 [項目設定 >服務連線> + 新增服務連線]。
在 [ 新增服務連線 ] 窗格中,選取 [Azure Resource Manager ],然後選取 [ 下一步 ]。
選取 [ 服務主體][自動] 驗證方法,然後選取 [ 下一步 ]。
輸入服務連線詳細數據,然後選取 [ 儲存 ] 以建立服務連線。
欄位
值
範圍層級
訂用帳戶 。
訂用帳戶
選取裝載負載測試資源的 Azure 訂用帳戶。
資源群組
選取包含負載測試資源的資源群組。
服務連線名稱
輸入服務連線的唯一名稱。
授與所有管線的訪問許可權
已核取。
從服務連線清單中,選取您稍早建立的連線,然後選取 [ 管理服務主體 ]。
Azure 入口網站 會在個別的瀏覽器索引標籤中開啟,並顯示服務主體詳細數據。
在 Azure 入口網站 中,複製 [顯示名稱] 值。
在下一個步驟中使用此值,將執行負載測試的許可權授與服務主體。
授與 Azure 負載測試的存取權
Azure 負載測試會使用 Azure RBAC 來授與在負載測試資源上執行特定活動的許可權。 若要從 CI/CD 管線執行負載測試,請將負載測試參與者角色授與服務主體。
在 Azure 入口網站 中,移至您的 Azure 負載測試資源。
選取 [訪問控制][IAM][ >新增> 角色指派]。
在 [角色] 索引標籤中,選取作業函式角色清單中的 [負載測試參與者 ]。
在 [ 成員] 索引標籤中,選取 [ 選取成員 ],然後使用您先前複製的顯示名稱來搜尋服務主體。
選取服務主體,然後選取 [ 選取 ]。
在 [ 檢閱 + 指派] 索引標籤 中,選取 [ 檢閱 + 指派 ] 以新增角色指派。
您現在可以在 Azure Pipelines 工作流程定義中使用服務連線來存取 Azure 負載測試資源。
若要從 GitHub Actions 工作流程存取 Azure 負載測試資源,請先建立 Microsoft Entra 服務主體 。 此服務主體代表 Microsoft Entra ID 中的 GitHub Actions 工作流程。
接下來,您會將許可權授與服務主體,以使用您的 Azure 負載測試資源建立和執行負載測試。
建立服務主體
在 Azure 訂用帳戶中建立服務主體,並指派負載測試參與者角色,讓您的 GitHub Actions 工作流程能夠存取您的 Azure 負載測試資源來執行負載測試。
建立服務主體並指派 Load Test Contributor
角色:
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
輸出是表示服務主體的 JSON 物件。 您可以使用這項資訊在 GitHub Actions 工作流程中向 Azure 進行驗證。
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
注意
當您執行此命令時,可能會收到 --sdk-auth
取代警告。 或者,您可以使用 OpenID 連線 (OIDC) 型驗證,向 Azure 驗證 GitHub。 瞭解如何搭配 OpenID 連線 使用 Azure 登入動作。
將輸出 JSON 物件複製到剪貼簿。
在下一個步驟中,您會將服務主體資訊儲存為 GitHub Actions 秘密。
將 Azure 認證儲存在 GitHub Actions 秘密中
建立 GitHub Actions 秘密,以安全地儲存服務主體資訊。 您可以在工作流程定義中使用此秘密來連線以向 Azure 進行驗證,並存取您的 Azure 負載測試資源。
注意
如果您使用 OpenID 連線 向 Azure 進行驗證,則不需要在 Azure 登入動作中傳遞服務主體物件。 瞭解如何搭配 OpenID 連線 使用 Azure 登入動作。
若要建立 GitHub Actions 秘密:
在 GitHub 中,流覽至您的存放庫。
選取 [設定 > Secrets & variables >Actions]。
選取 [新增存放庫密碼 ],輸入秘密資訊,然後選取 [ 新增秘密 ] 以建立新的秘密。
欄位
值
名稱
AZURE_CREDENTIALS
秘密
貼上您稍早複製之服務主體建立命令的 JSON 輸出。
您現在可以使用預存認證,從 GitHub Actions 工作流程存取 Azure 訂用帳戶和負載測試資源。
如果您使用另一個 CI/CD 工具,您可以使用 Azure CLI 與 Azure 資源互動。 執行下列步驟,以授權 CI 工具存取負載測試資源:
建立 Microsoft Entra 服務主體 ,以連線到您的 Azure 訂用帳戶並存取您的 Azure 負載測試資源。
指派負載測試參與者角色,授與服務主體建立和執行負載測試的許可權。
安全地將 Azure 認證儲存在 CI 工具中。
執行下列步驟來設定 CI 工具的服務授權:
建立服務主體並指派負載測試參與者角色:
<resource-group-name>
取代和 <load-testing-resource-name>
文字佔位元。
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
輸出是表示服務主體的 JSON 物件。
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
clientId
複製、 clientSecret
和 tenantId
值,並將其安全地儲存為 CI 工具中的秘密。
您可以使用這些值,使用 Azure CLI az login
命令登入您的 Azure 訂用帳戶。
在存放庫中新增負載測試檔案
若要在 CI/CD 工作流程中使用 Azure 負載測試執行負載測試,您必須在原始檔控制存放庫中新增所有負載測試輸入檔。
如果您沒有現有的負載測試,請將下列檔案新增至原始程式碼存放庫:
如果您有現有的負載測試,您可以直接從 Azure 入口網站 下載組態設定和所有輸入檔。 執行下列步驟,以下載 Azure 入口網站 中現有負載測試的輸入檔:
在 Azure 入口網站 中,移至您的 Azure 負載測試資源。
在左窗格中,選取 [測試 ] 以檢視負載測試清單,然後選取您的測試。
選取您正在使用的測試回合旁的省略號 (... ),然後選取 [ 下載輸入檔 ]。
瀏覽器會下載包含負載測試輸入檔案的壓縮資料夾。
使用任何 zip 工具來擷取輸入檔案。
資料夾包含下列檔案:
config.yaml
:負載測試 YAML 組態檔。 您會在 CI/CD 工作流程定義中參考此檔案。
.jmx
:JMeter 測試腳本
任何其他輸入檔案,例如執行負載測試所需的 CSV 檔案或使用者屬性檔案。
將所有擷取的輸入檔案認可至原始檔控制存放庫。
使用您在其中設定 CI/CD 管線的原始碼存放庫。
更新 CI/CD 工作流程定義
Azure 負載測試同時支援 GitHub Actions 和 Azure Pipelines 來執行負載測試。
安裝適用於 Azure DevOps 的 Azure 負載測試延伸模組
若要建立和執行負載測試,Azure Pipelines 工作流程定義會使用 Azure DevOps Marketplace 中的 Azure 負載測試工作 延伸模組。
在 Azure DevOps Marketplace 中開啟 Azure 負載測試工作延伸模組 ,然後選取 [ 免費 取得]。
選取您的 Azure DevOps 組織,然後選取 [ 安裝 ] 以安裝擴充功能。
如果您沒有所選 Azure DevOps 組織的系統管理員許可權,請選取 [要求 ] 以要求系統管理員安裝擴充功能。
更新 Azure Pipelines 工作流程
更新您的 Azure Pipelines 工作流程,以執行 Azure 負載測試資源的負載測試。
登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>
),然後選取您的專案。
在 左側導覽中選取 [管線 ],選取您的管線,然後選取 [ 編輯 ] 以編輯您的工作流程定義。
或者,選取 [建立管線] 以在 Azure Pipelines 中建立新的管線。
使用工作 AzureLoadTest
來執行負載測試。
指定您稍早在屬性中導出的 loadTestConfigFile
負載測試組態檔。
將 <load-testing-resource>
和 <load-testing-resource-group>
文字佔位元取代為您的 Azure 負載測試資源和資源群組的名稱。
- task: AzureLoadTest@1
inputs:
azureSubscription: $(serviceConnection)
loadTestConfigFile: 'config.yaml'
loadTestResource: <load-testing-resource>
resourceGroup: <load-testing-resource-group>
您可以選擇性地使用 env
或 secrets
屬性,將參數或秘密傳遞至負載測試。
使用工作將 publish
測試結果發佈為 Azure Pipelines 工作流程執行中的成品。
- publish: $(System.DefaultWorkingDirectory)/loadTest
artifact: loadTestResults
更新 GitHub Actions 工作流程
更新 GitHub Actions 工作流程,以執行 Azure 負載測試資源的負載測試。
在 GitHub 中,流覽至您的存放庫。
編輯 GitHub Actions 工作流程,或在 GitHub 存放庫中建立新的工作流程 。
actions/checkout
使用 動作來取出含有負載測試輸入檔案的存放庫。
- name: Checkout
uses: actions/checkout@v3
azure/login
使用動作來使用預存認證向 Azure 進行驗證。
在工作流程定義中貼上下列 YAML 內容:
- name: Login to Azure
uses: azure/login@v1
continue-on-error: false
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
azure/load-testing
使用 動作來執行負載測試。
指定您稍早在屬性中導出的 loadTestConfigFile
負載測試組態檔。
將 <load-testing-resource>
和 <load-testing-resource-group>
文字佔位元取代為您的 Azure 負載測試資源和資源群組的名稱。
- name: 'Azure Load Testing'
uses: azure/load-testing@v1
with:
loadTestConfigFile: 'config.yaml'
loadTestResource: <load-testing-resource>
resourceGroup: <load-testing-resource-group>
您可以選擇性地使用 env
或 secrets
屬性,將參數或秘密傳遞至負載測試。
使用 動作將 actions/upload-artifact
測試結果發佈為 GitHub Actions 工作流程中的成品。
- uses: actions/upload-artifact@v2
with:
name: loadTestResults
path: ${{ github.workspace }}/loadTest
更新 CI 工作流程,以使用 Azure CLI 執行 Azure 負載測試資源的負載測試。 使用 CI 工具的詳細資料,將下列命令新增至 CI 工作流程:
使用服務主體登入 Azure 訂用帳戶。
使用您先前儲存的 clientId
、 clientSecret
和 tenandId
值。
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
az account set -s $AZURE_SUBSCRIPTION_ID
使用負載測試組態 YAML 檔案建立負載測試。
將 <load-testing-resource>
、 <load-testing-resource-group>
和 <load-test-config-yaml>
文字佔位元取代為負載測試資源的名稱、資源組名,以及您先前新增至存放庫之負載測試組態 YAML 檔案的檔名。
az load test create --load-test-resource <load-testing-resource> --resource-group <load-testing-resource-group> --test-id sample-test-id --load-test-config-file <load-test-config-yaml>
執行負載測試。
testRunId="run_"`date +"%Y%m%d%_H%M%S"`
displayName="Run"`date +"%Y/%m/%d_%H:%M:%S"`
az load test-run create --load-test-resource <load-testing-resource> --test-id sample-test-id --test-run-id $testRunId --display-name $displayName --description "Test run from CLI"
擷取並顯示負載測試回合的用戶端計量。
az load test-run metrics list --load-test-resource <load-testing-resource> --test-run-id $testRunId --metric-namespace LoadTestRunMetrics
檢視負載測試結果
當您從 CI/CD 管線執行負載測試時,可以直接在 CI/CD 輸出記錄中檢視摘要結果。 如果您將測試結果發佈為管線成品,您也可以下載 CSV 檔案以供進一步報告。
清除資源
如果您不打算使用您所建立的任何資源,請將其刪除,以免產生任何進一步的費用。
移除 Azure Pipelines 變更:
登入您的 Azure DevOps 組織 (https://dev.azure.com/<your-organization>
),然後選取您的專案。
將 <your-organization>
文字佔位元取代為您的項目標識碼。
如果您已建立新的管線“:
選取 [Pipelines],然後選取管線。
選取省略號,然後選取 [ 刪除 ]。
輸入管線名稱,然後選取 [ 刪除 ] 以刪除管線。
如果您修改了現有的工作流程定義,請復原執行負載測試的修改,並儲存工作流程。
移除服務連線:
選取 [項目設定 >服務連線 ],然後選取您的服務連線。
選取 [編輯 >刪除] 以移除服務連線。
拿掉 GitHub Actions 變更:
在 GitHub 中,流覽至您的存放庫。
如果您已建立新的工作流程定義,請刪除資料夾中的 .github/workflows
工作流程 YAML 檔案。
如果您修改了現有的工作流程定義,請復原執行負載測試的修改,並儲存工作流程。
移除服務主體:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
復原 CI 工作流程中的變更。
移除服務主體:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
下一步
請前進到下一篇文章,瞭解如何藉由定義測試失敗準則和比較測試回合來識別效能回歸。