YAML에서 부하 테스트 구성
YAML을 사용하여 Azure Load Testing에서 부하 테스트를 구성하는 방법을 알아봅니다. 테스트 구성 YAML 파일을 사용하여 CI/CD(연속 통합 및 지속적인 제공) 워크플로에서 부하 테스트를 만들고 실행합니다.
부하 테스트 YAML 구문
부하 테스트 구성에서는 다음 키를 사용합니다.
키 | Type | Required | 기본값 | 설명 |
---|---|---|---|---|
version |
string | Y | 부하 테스트 사양 버전입니다. v0.1 값만 지원됩니다. |
|
testId |
string | Y | 부하 테스트의 고유 식별자입니다. 값은 2~50자여야 합니다([a-z0-9_-]). 기존 테스트의 경우 Azure Portal의 테스트 세부 정보 페이지에서 testId 를 가져올 수 있습니다. |
|
testName |
string | N | 더 이상 사용되지 않음 부하 테스트의 고유 식별자입니다. 이 설정은 .로 대체됩니다 testId . testName 필드를 사용하여 기존 테스트를 계속 실행할 수 있습니다. |
|
displayName |
string | N | 테스트의 표시 이름입니다. 이 값은 Azure Portal의 테스트 목록에 표시됩니다. 제공되지 않으면 testId 가 표시 이름으로 사용됩니다. |
|
description |
string | N | 테스트에 대한 간략한 설명입니다. 값의 최대 길이는 100자입니다. | |
testType |
string | Y | 테스트 형식입니다. 가능한 값:
|
|
testPlan |
string | Y | 테스트 계획 파일에 대한 참조입니다.
|
|
engineInstances |
정수 | Y | 테스트 계획을 실행하기 위한 병렬 테스트 엔진 인스턴스 수입니다. 대규모 부하를 구성하는 방법에 대해 자세히 알아봅니다. | |
configurationFiles |
문자열의 배열 | N | 테스트 스크립트에 필요한 외부 파일 목록입니다. 예를 들어, CSV 데이터 파일, 이미지 또는 기타 데이터 파일입니다. Azure Load Testing은 테스트 스크립트와 동일한 폴더에 있는 모든 파일을 업로드합니다. JMeter 스크립트 또는 Locust 스크립트에서 파일 이름을 사용하여 외부 파일만 참조하고 파일 경로 정보를 제거합니다. |
|
failureCriteria |
개체 | N | 부하 테스트 실패 기준 목록입니다. 자세한 내용은 failureCriteria를 참조하세요. | |
autoStop |
문자열 또는 개체 | N | 오류율이 특정 값을 초과하면 부하 테스트를 자동으로 중지합니다. 가능한 값: - disable : 부하 테스트를 자동으로 중지하지 마세요.- 개체: 자세한 내용은 autostop 구성을 참조하세요. |
|
properties |
개체 | N |
|
|
zipArtifacts |
문자열의 배열 | N | zip 아티팩트 파일 목록을 지정합니다. JMeter 기반 테스트에 대한 JMeter 스크립트 및 사용자 속성이 아닌 파일의 경우 Locust 기반 테스트의 Locust 스크립트 및 구성 파일의 경우 파일 크기가 50MB를 초과하는 경우 ZIP 파일로 압축합니다. ZIP 파일의 크기가 50MB 미만인지 확인합니다. ZIP 아티팩트 5개만 허용되며 각 파일은 최대 1,000개, 압축되지 않은 크기는 1GB입니다. 에만 testType: JMX 적용됩니다 testType: Locust . |
|
splitAllCSVs |
부울 값 | N | False | 모든 테스트 엔진 인스턴스에서 입력 CSV 파일을 균등하게 분할합니다. 자세한 내용은 부하 테스트에서 CSV 파일 읽기를 참조하세요. |
secrets |
개체 | N | Apache JMeter 또는 Locust 스크립트가 참조하는 비밀 목록입니다. 자세한 내용은 비밀을 참조하세요. | |
env |
개체 | N | Apache JMeter 스크립트 또는 Locust가 참조하는 환경 변수 목록입니다. 자세한 내용은 환경 변수를 참조하세요. | |
certificates |
개체 | N | JMeter 또는 Locust 스크립트에서 애플리케이션 엔드포인트를 사용하여 인증하기 위한 클라이언트 인증서 목록입니다. 자세한 내용은 인증서를 참조하세요. | |
keyVaultReferenceIdentity |
string | N | Azure Key Vault에서 비밀에 액세스하기 위한 사용자 할당 관리 ID의 리소스 ID입니다. 시스템 관리 ID를 사용하는 경우 이 정보가 필요하지 않습니다. 이 사용자 할당 ID에 Azure Key Vault에 대한 액세스 권한을 부여해야 합니다. Azure Load Testing의 관리 ID에 대해 자세히 알아봅니다. | |
subnetId |
string | N | 비공개로 호스트되는 엔드포인트를 테스트하기 위한 가상 네트워크 서브넷의 리소스 ID입니다. 이 서브넷은 삽입된 테스트 엔진 VM을 호스팅합니다. 자세한 내용은 프라이빗으로 호스트된 엔드포인트 부하 테스트 방법을 참조하세요. | |
publicIPDisabled |
부울 값 | N | 프라이빗 엔드포인트를 테스트하는 동안 공용 IP 주소, 부하 분산 장치 및 네트워크 보안 그룹의 배포를 사용하지 않도록 설정합니다. 자세한 내용은 프라이빗으로 호스트된 엔드포인트 부하 테스트 방법을 참조하세요. | |
regionalLoadTestConfig |
개체 | N | 여러 지역에서 사용자 트래픽을 시뮬레이션하기 위해 지역에 부하를 분산합니다. 자세한 내용은 지역 부하 테스트 구성을 참조하세요. |
부하 테스트 구성 샘플
다음 YAML 코드 조각에는 부하 테스트 구성 예가 포함되어 있습니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
- 'sampledata.csv'
zipArtifacts:
- bigdata.zip
splitAllCSVs: True
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop:
errorPercentage: 80
timeWindow: 60
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
failureCriteria
구성
테스트 실패 조건을 사용하면 부하 테스트 실행이 성공했는지 여부를 확인하는 조건을 정의할 수 있습니다. 하나 이상의 실패 조건이 충족되면 테스트가 실패한 테스트 결과를 가져옵니다. 부하 테스트 실패 조건 사용에 대해 자세히 알아봅니다.
전체 부하 테스트에 적용되거나 특정 요청에 적용되는 실패 조건을 정의할 수 있습니다. 실패 조건의 구조는 다음과 같습니다.
- 부하 테스트 수준의 테스트 조건:
Aggregate_function (client_metric) condition threshold
. - 특정 JMeter 요청에 적용되는 테스트 조건:
Request: Aggregate_function (client_metric) condition threshold
.
지원되는 클라이언트 메트릭
Azure Load Testing은 다음 클라이언트 메트릭을 지원합니다.
메트릭 | 집계 함수 | Threshold | 조건 | 설명 |
---|---|---|---|---|
response_time_ms |
avg (평균)min (최소)max (최대)pxx (백분위수), xx는 50, 75, 90, 95, 96, 97, 98, 99, 999 및 9999일 수 있음 |
밀리초(ms)를 나타내는 정수 값입니다. | > (보다 큼)< (보다 작음) |
응답 시간 또는 경과 시간(밀리초)입니다. Apache JMeter 설명서에서 경과 시간에 대해 자세히 알아봅니다. |
latency |
avg (평균)min (최소)max (최대)pxx (백분위수), xx는 50, 90, 95, 99일 수 있습니다. |
밀리초(ms)를 나타내는 정수 값입니다. | > (보다 큼)< (보다 작음) |
대기 시간(밀리초) Apache JMeter 설명서에서 대기 시간에 대해 자세히 알아봅니다. |
error |
percentage |
백분율을 나타내는 0~100 범위의 숫자 값입니다. | > (보다 큼) |
실패한 요청의 비율입니다. |
requests_per_sec |
avg (평균) |
소수점 이하 두 자리까지의 숫자 값입니다. | > (보다 큼) < (보다 작음) |
초당 요청 수 |
requests |
count |
정수 값입니다. | > (보다 큼) < (보다 작음) |
총 요청 수입니다. |
장애 조건 구성 샘플
다음 코드 조각은 부하 테스트 실패 조건이 세 가지인 부하 테스트 구성을 보여줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop
구성
부하 테스트 자동 중지 기능을 사용하면 지정된 기간 동안 오류 비율이 특정 임계값을 초과할 때 부하 테스트를 자동으로 중지할 수 있습니다. 부하 테스트 자동 스탑 기능에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
errorPercentage |
정수 | 90 | 오류 비율 timeWindow 에 대한 임계값입니다. 지정된 기간 동안 오류 비율이 이 백분율을 초과하면 테스트 실행이 자동으로 중지됩니다. |
timeWindow |
정수 | 60 | 를 계산하는 데 걸리는 시간(초)입니다 errorPercentage . |
자동 스탑 구성 샘플
다음 코드 조각은 부하 테스트 실패 조건이 세 가지인 부하 테스트 구성을 보여줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
errorPercentage: 80
timeWindow: 60
properties
구성
부하 테스트에 대한 JMeter 사용자 속성 파일을 지정할 수 있습니다. 사용자 속성 파일은 테스트 계획 및 기타 파일과 함께 업로드됩니다. Azure Load Testing에서 JMeter 사용자 속성을 사용하는 방법에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
userPropertyFile |
string | Apache JMeter 사용자 속성 파일 또는 Locust 구성 파일로 사용할 파일입니다. Locust의 경우 확장명은 .conf, .ini 및 .toml인 파일은 구성 파일로 지원됩니다. 이 파일은 테스트 스크립트 및 기타 구성 파일과 함께 Azure Load Testing 리소스에 업로드됩니다. 파일이 로컬 컴퓨터의 하위 폴더에 있는 경우 테스트 스크립트 위치에 상대적인 경로를 사용합니다. |
사용자 속성 파일 구성 샘플
다음 코드 조각은 사용자 속성 파일을 지정하는 부하 테스트 구성을 보여줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
userPropertyFile: 'user.properties'
다음 코드 조각은 Locust 구성 파일을 지정하는 부하 테스트 구성을 보여줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
userPropertyFile: 'locust.conf'
secrets
구성
Azure Key Vault에 비밀 값을 저장하고 테스트 계획에서 참조할 수 있습니다. Azure Load Testing에서 비밀을 사용하는 방법에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
name |
string | 비밀 이름입니다. 이 이름은 테스트 계획 요청에 사용하는 비밀 이름과 일치해야 합니다. | |
value |
string | Azure Key Vault 비밀에 대한 URI(비밀 식별자)입니다. |
비밀 구성 샘플
다음 코드 조각은 Azure Key Vault의 비밀을 my-secret
참조하는 부하 테스트 구성을 보여 줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
env
구성
환경 변수를 지정하고 테스트 계획에서 참조할 수 있습니다. Azure Load Testing에서 환경 변수를 사용하는 방법에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
name |
string | 환경 변수의 이름입니다. 이 이름은 테스트 계획 요청에 사용하는 변수 이름과 일치해야 합니다. | |
value |
string | 환경 변수의 값입니다. |
환경 변수 구성 샘플
다음 코드 조각은 환경 변수 my-variable
및 값을 my-value
지정하는 부하 테스트 구성을 보여 줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
- name: my-variable
value: my-value
certificates
구성
클라이언트 인증서를 부하 테스트에 전달할 수 있습니다. 인증서는 Azure Key Vault에 저장됩니다. Azure Load Testing에서 클라이언트 인증서를 사용하는 방법에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
name |
string | 인증서의 이름입니다. | |
value |
string | Azure Key Vault의 인증서에 대한 URI(비밀 식별자)입니다. |
인증서 구성 샘플
다음 코드 조각은 Azure Key Vault에서 클라이언트 인증서를 참조하는 부하 테스트 구성을 보여 줍니다.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
- name: my-certificate
value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345
JSON 파일 요청
URL 기반 테스트를 사용하는 경우 JMeter 테스트 스크립트를 사용하는 대신 JSON 파일에서 HTTP 요청을 지정할 수 있습니다. 테스트 구성 YAML 파일에서 이를 URL
설정하고 testType
요청 JSON 파일을 참조해야 합니다.
HTTP 요청
요청 JSON 파일은 속성에서 요청을 requests
정의하기 위해 다음 속성을 사용합니다.
속성 | Type | 설명 |
---|---|---|
requestName |
string | 고유한 요청 이름입니다. 테스트 실패 조건을 구성할 때 요청 이름을 참조할 수 있습니다. |
responseVariables |
배열 | 응답 변수 목록입니다. 응답 변수를 사용하여 요청에서 값을 추출하고 후속 요청에서 참조합니다. 응답 변수에 대해 자세히 알아봅니다. |
responseVariables.extractorType |
string | 응답 출력에서 값을 추출하는 메커니즘입니다. 지원되는 값은 XPathExtractor , JSONExtractor 및 RegularExpression 입니다. |
responseVariables.expression |
string | 응답 출력을 검색하는 식입니다. 식은 추출기 형식 값에 따라 달라집니다. |
responseVariables.variableName |
string | 고유 응답 변수 이름입니다. 구문을 사용하여 후속 요청에서 이 변수를 참조할 {$variable-name} 수 있습니다. |
queryParameters |
배열 | 엔드포인트에 전달할 쿼리 문자열 매개 변수 목록입니다. |
queryParameters.key |
string | 쿼리 문자열 매개 변수 이름입니다. |
queryParameters.value |
string | 쿼리 문자열 매개 변수 값입니다. |
requestType |
string | 요청 유형 지원되는 값은 다음과 URL CURL 같습니다. |
endpoint |
string | 테스트할 애플리케이션 엔드포인트의 URL입니다. |
headers |
배열 | 애플리케이션 엔드포인트에 전달할 HTTP 헤더 목록입니다. 각 헤더에 대한 키-값 쌍을 지정합니다. |
body |
string | HTTP 요청에 대한 본문 텍스트입니다. 본문 콘텐츠의 형식을 지정하는 데 사용할 requestBodyFormat 수 있습니다. |
requestBodyFormat |
string | 본문 내용의 형식입니다. 지원되는 값은 다음과 Text HTML JSON JavaScript XML 같습니다. |
method |
string | 엔드포인트를 호출하는 HTTP 메서드입니다. 지원되는 값은 다음과 POST HEAD OPTIONS PUT PATCH DELETE 같습니다. GET |
curlCommand |
string | 실행할 cURL 명령입니다. 가 필요합니다 requestType CURL . |
다음 JSON 코드 조각에는 JSON 파일을 요청하는 예제가 포함되어 있습니다.
{
"version": "1.0",
"scenarios": {
"requestGroup1": {
"requests": [
{
"requestName": "add",
"responseVariables": [],
"queryParameters": [
{
"key": "param1",
"value": "value1"
}
],
"requestType": "URL",
"endpoint": "https://www.contoso.com/orders",
"headers": {
"api-token": "my-token"
},
"body": "{\r\n \"customer\": \"Contoso\",\r\n \"items\": {\r\n\t \"product_id\": 321,\r\n\t \"count\": 50,\r\n\t \"amount\": 245.95\r\n }\r\n}",
"method": "POST",
"requestBodyFormat": "JSON"
},
{
"requestName": "get",
"responseVariables": [],
"requestType": "CURL",
"curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
},
],
"csvDataSetConfigList": []
}
},
"testSetup": [
{
"virtualUsersPerEngine": 1,
"durationInSeconds": 600,
"loadType": "Linear",
"scenario": "requestGroup1",
"rampUpTimeInSeconds": 30
}
]
}
구성 로드
요청 JSON 파일은 속성에서 부하 구성 testSetup
을 정의하기 위해 다음 속성을 사용합니다.
속성 | Type | 부하 형식 | 설명 |
---|---|---|---|
loadType |
string | 부하 패턴 유형입니다. 지원되는 값은 다음과 linear step spike 같습니다. |
|
scenario |
string | 속성에 지정된 요청 그룹에 대한 참조입니다 scenarios . |
|
virtualUsersPerEngine |
정수 | 모두 | 테스트 엔진 인스턴스당 가상 사용자 수입니다. |
durationInSeconds |
정수 | 모두 | 부하 테스트의 총 기간(초)입니다. |
rampUpTimeInSeconds |
정수 | 선형, 단계 | 가상 사용자의 대상 수까지 진입하는 기간(초)입니다. |
rampUpSteps |
정수 | Step | 가상 사용자의 대상 수에 도달하는 단계 수입니다. |
spikeMultiplier |
정수 | 스파이크 | 급증 기간 동안 대상 사용자 수를 곱하는 요소입니다. |
spikeHoldTimeInSeconds |
정수 | 스파이크 | 스파이크 부하를 유지하기 위한 총 기간(초)입니다. |
지역 부하 테스트 구성
지역 간에 부하를 분산하여 실제 트래픽 패턴을 더 잘 시뮬레이션할 수 있습니다. 부하를 생성하려는 지역과 각 지역에서 시뮬레이션하려는 부하 양을 지정할 수 있습니다. 지역 이름 및 해당 지역에서 원하는 엔진 인스턴스 수를 지정하여 이 작업을 수행할 수 있습니다. 여러 지역에서 부하를 생성하는 방법에 대해 자세히 알아봅니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
region |
string | Azure 지역의 이름입니다. | |
engineInstances |
정수 | 해당 Azure 지역의 엔진 인스턴스 수입니다. |
지역 부하 테스트 구성 샘플
다음 코드 조각은 두 개의 Azure 지역과 eastasia
각 지역에 eastus
대한 엔진 인스턴스 수를 지정하는 부하 테스트 구성을 보여 줍니다.
displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
engineInstances: 2
- region: eastasia
engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
errorPercentage: 90
timeWindow: 60
관련 콘텐츠
- CI/CD 워크플로에서 자동화된 회귀 테스트를 빌드하는 방법에 대해 알아봅니다.
- 비밀 및 환경 변수를 사용하여 부하 테스트를 매개 변수화하는 방법에 대해 알아봅니다.
- 보안 엔드포인트 부하 테스트 방법에 대해 알아봅니다.