CI/CD 파이프라인을 만들어 Azure Load Testing에서 부하 테스트를 자동화할 수 있습니다. 이 문서에서는 Azure Load Testing에서 기존 테스트를 호출하도록 GitHub Actions, Azure Pipelines 또는 기타 CI 도구를 수동으로 구성하는 방법을 알아봅니다. 부하 테스트를 자동화하여 부하 상태에서 애플리케이션 성능 및 안정성의 유효성을 지속적으로 검사합니다.
CI/CD 파이프라인에 기존 부하 테스트를 추가하려면 다음을 수행합니다.
- CI 도구가 Azure 부하 테스트 리소스에 연결할 수 있도록 서비스 인증을 구성합니다.
- JMeter 테스트 스크립트 및 부하 테스트 YAML 구성과 같은 부하 테스트 입력 파일을 리포지토리에 추가합니다.
- AZURE Load Testing을 호출하도록 CI/CD 파이프라인 정의를 업데이트합니다.
필수 조건
- 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 Portal이 별도의 브라우저 탭에서 열리고 서비스 주체 세부 정보를 표시합니다.
Azure Portal에서 표시 이름 값을 복사합니다.
이 값은 다음 단계에서 부하 테스트를 실행할 수 있는 권한을 서비스 주체에게 부여하는 데 사용됩니다.
Azure Load Testing에 대한 액세스 권한 부여
Azure Load Testing은 Azure RBAC를 사용하여 부하 테스트 리소스에 특정 작업을 수행하기 위한 권한을 부여합니다. CI/CD 파이프라인에서 부하 테스트를 실행하려면 부하 테스트 기여자 역할을 서비스 주체에 부여합니다.
Azure Portal에서 Azure Load Testing 리소스로 이동합니다.
액세스 제어(IAM)>추가>역할 할당 추가를 선택합니다.
역할 탭의 작업 함수 역할 목록에서 부하 테스트 기여자를 선택합니다.
구성원 탭에서 구성원 선택을 선택한 다음 이전에 복사한 표시 이름을 사용하여 서비스 주체를 검색합니다.
서비스 주체를 선택한 다음 선택을 선택합니다.
검토 + 할당 탭에서 검토 + 할당을 선택하여 역할 할당을 추가합니다.
이제 Azure Pipelines 워크플로 정의에서 서비스 연결을 사용하여 Azure 부하 테스트 리소스에 액세스할 수 있습니다.
GitHub Actions 워크플로에서 Azure Load Testing 리소스에 액세스하려면 먼저 Microsoft Entra 서비스 주체를 만듭니다. 이 서비스 주체는 Microsoft Entra ID의 GitHub Actions 워크플로를 나타냅니다.
다음으로, 이 서비스 주체에게 Azure Load Testing 리소스를 사용하여 부하 테스트를 만들고 실행할 수 있는 권한을 부여합니다.
서비스 주체 만들기
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/"
}
출력 JSON 개체를 클립보드에 복사합니다.
다음 단계에서는 서비스 주체 정보를 GitHub Actions 비밀로 저장합니다.
GitHub Actions 비밀에 Azure 자격 증명 저장
GitHub Actions 비밀을 만들어 서비스 주체 정보를 안전하게 저장합니다. 워크플로 정의에서 이 비밀을 사용하여 Azure로 인증하고 Azure 부하 테스트 리소스에 액세스하기 위해 연결합니다.
GitHub Actions 비밀을 만들려면 다음을 수행합니다.
GitHub에서 리포지토리로 이동합니다.
설정>비밀 및 변수>작업을 선택합니다.
새 리포지토리 비밀을 선택하고 비밀 정보를 입력한 다음 비밀 추가를 선택하여 새 비밀을 만듭니다.
필드 |
값 |
이름 |
AZURE_CREDENTIALS |
비밀 |
이전에 복사한 서비스 주체 만들기 명령의 JSON 출력을 붙여넣습니다. |
이제 저장된 자격 증명을 사용하여 GitHub Actions 워크플로에서 Azure 구독에 액세스하고 리소스를 로드할 수 있습니다.
다른 CI/CD 도구를 사용하는 경우 Azure CLI를 사용하여 Azure 리소스와 상호 작용합니다. 다음 단계를 수행하여 부하 테스트 리소스에 대한 CI 도구 액세스 권한을 부여합니다.
- Azure 구독에 연결하고 Azure 부하 테스트 리소스에 액세스할 Microsoft Entra 서비스 주체를 만듭니다.
- 부하 테스트 참가자 역할을 할당하여 부하 테스트를 만들고 실행할 수 있는 권한을 서비스 주체에게 부여합니다.
- 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 Load Testing을 사용하여 부하 테스트를 실행하려면 소스 제어 리포지토리에 모든 부하 테스트 입력 파일을 추가해야 합니다.
기존 부하 테스트가 없는 경우 소스 코드 리포지토리에 다음 파일을 추가합니다.
- 테스트 구성 YAML 파일을 로드합니다.
부하 테스트 구성 YAML 파일을 만드는 방법을 알아봅니다.
- 테스트 계획 파일입니다. JMeter 기반 테스트의 경우 JMeter 테스트 스크립트(
JMX
파일)를 추가합니다. URL 기반 테스트의 경우 요청 JSON 파일을 추가합니다.
- 모든 JMeter 사용자 속성 파일입니다.
- 테스트 계획에서 사용하는 모든 입력 데이터 파일입니다. CSV 데이터 파일을 예로 들 수 있습니다.
기존 부하 테스트가 있는 경우 Azure Portal에서 직접 구성 설정 및 모든 입력 파일을 다운로드할 수 있습니다. Azure Portal에서 기존 부하 테스트에 대한 입력 파일을 다운로드하려면 다음 단계를 수행합니다.
Azure Portal에서 Azure Load Testing 리소스로 이동합니다.
왼쪽 창에서 테스트를 선택하여 부하 테스트 목록을 확인한 다음, 테스트를 선택합니다.
작업 중인 테스트 실행 옆에 있는 줄임표(...)를 선택한 다음 입력 파일 다운로드를 선택합니다.
브라우저가 부하 테스트 입력 파일이 포함된 압축 폴더를 다운로드합니다.
Zip 도구를 사용하여 입력 파일을 추출합니다.
이 폴더에는 다음 파일이 포함되어 있습니다.
-
config.yaml
: 부하 테스트 YAML 구성 파일입니다. CI/CD 워크플로 정의에서 이 파일을 참조합니다.
-
.jmx
: JMeter 테스트 스크립트
- 부하 테스트를 실행하는 데 필요한 CSV 파일 또는 사용자 속성 파일과 같은 추가 입력 파일입니다.
추출된 모든 입력 파일을 소스 제어 리포지토리에 커밋합니다.
CI/CD 파이프라인을 구성하는 소스 코드 리포지토리를 사용합니다.
CI/CD 워크플로 정의 업데이트
Azure Load Testing은 GitHub Actions와 Azure Pipelines의 부하 테스트 실행을 모두 지원합니다.
Azure DevOps용 Azure Load Testing 확장 설치
부하 테스트를 만들고 실행하기 위해 Azure Pipelines 워크플로 정의는 Azure DevOps Marketplace의 Azure Load Testing 작업 확장을 사용합니다.
Azure DevOps Marketplace의 Azure Load Testing 작업 확장을 열고 무료 다운로드를 선택합니다.
Azure DevOps 조직을 선택한 다음, 설치를 선택하여 확장을 설치합니다.
선택한 Azure DevOps 조직에 대한 관리자 권한이 없는 경우 요청을 선택하여 관리자에게 확장을 설치하도록 요청합니다.
Azure Pipelines 워크플로 업데이트
Azure Load Testing 리소스에 대한 부하 테스트를 실행하도록 Azure Pipelines 워크플로를 업데이트합니다.
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 워크플로 업데이트
Azure 부하 테스트 리소스에 대한 부하 테스트를 실행하도록 GitHub Actions 워크플로를 업데이트합니다.
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
Azure CLI를 사용하여 Azure 부하 테스트 리소스에 대한 부하 테스트를 실행하도록 CI 워크플로를 업데이트합니다. CI 도구의 세부 정보를 사용하여 CI 워크플로에 다음 명령을 추가합니다.
서비스 주체를 사용하여 Azure 구독에 로그인합니다.
이전에 저장한 clientId
, clientSecret
및 tenantId
값을 사용합니다.
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>
텍스트 자리 표시자를 프로젝트 식별자로 바꿉니다.
새 파이프라인을 만든 경우:
파이프라인을 선택하고 파이프라인을 선택합니다.
줄임표를 선택한 다음, 삭제를 선택합니다.
파이프라인 이름을 입력한 다음 삭제를 선택하여 파이프라인을 삭제합니다.
기존 워크플로 정의를 수정한 경우 부하 테스트를 실행하기 위한 수정 내용을 실행 취소하고 워크플로를 저장합니다.
서비스 연결 제거:
-
프로젝트 설정>서비스 연결을 선택한 다음, 원하는 서비스 연결을 선택합니다.
-
편집>삭제를 선택하여 서비스 연결을 제거합니다.
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)
다음 단계
다음 문서로 이동하여 테스트 실패 조건을 정의하고 테스트 실행을 비교하여 성능 저하를 식별하는 방법을 알아봅니다.