Share via


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 테스트 유형입니다. 가능한 값:
  • URL: URL 기반 부하 테스트
  • JMX: JMeter 기반 부하 테스트
testPlan string Y 테스트 계획 파일에 대한 참조입니다.
  • If testType: JMX: JMeter 테스트 스크립트에 대한 상대 경로입니다.
  • If testType: URL: 요청 JSON 파일에 대한 상대 경로입니다.
engineInstances 정수 Y 테스트 계획을 실행하기 위한 병렬 테스트 엔진 인스턴스 수입니다. 대규모 부하를 구성하는 방법에 대해 자세히 알아봅니다.
configurationFiles 문자열의 배열 N 테스트 스크립트에 필요한 외부 파일 목록입니다. 예를 들어 CSV 데이터 파일, 이미지 또는 기타 데이터 파일입니다.
Azure Load Testing은 테스트 스크립트와 동일한 폴더에 있는 모든 파일을 업로드합니다. JMeter 스크립트에서 파일 이름을 사용하여 외부 파일만 참조하고 파일 경로 정보를 제거합니다.
failureCriteria 개체 N 부하 테스트 실패 조건 목록입니다. 자세한 내용은 failureCriteria를 참조하세요.
autoStop 문자열 또는 개체 N 오류 비율이 값을 초과하면 부하 테스트를 자동으로 중지합니다.
가능한 값:
- disable: 부하 테스트를 자동으로 중지하지 마세요.
- 개체: 자세한 내용은 autostop 구성을 참조하세요.
properties 개체 N JMeter 사용자 속성 파일 참조입니다. 자세한 내용은 속성을 참조하세요.
zipArtifacts 문자열의 배열 N zip 아티팩트 파일 목록을 지정합니다. JMeter 스크립트 및 사용자 속성 이외의 파일의 경우 파일 크기가 50MB를 초과하는 경우 ZIP 파일로 압축합니다. ZIP 파일 크기가 50MB 미만인지 기본 확인합니다. ZIP 아티팩트 5개만 허용되며 각 파일은 최대 1,000개, 압축되지 않은 크기는 1GB입니다. 에만 적용됩니다.testType: JMX
splitAllCSVs 부울 값 N False 모든 테스트 엔진 인스턴스에서 입력 CSV 파일을 균등하게 분할합니다. 자세한 내용은 부하 테스트에서 CSV 파일 읽기를 참조하세요.
secrets 개체 N Apache JMeter 스크립트가 참조하는 비밀 목록입니다. 자세한 내용은 비밀을 참조하세요.
env 개체 N Apache JMeter 스크립트가 참조하는 환경 변수 목록입니다. 자세한 내용은 환경 변수를 참조하세요.
certificates 개체 N JMeter 스크립트에서 애플리케이션 엔드포인트로 인증하기 위한 클라이언트 인증서 목록입니다. 자세한 내용은 인증서를 참조하세요.
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 주소, 부하 분산 장치 및 네트워크 보안 그룹의 배포를 사용하지 않도록 설정합니다. 자세한 내용은 프라이빗으로 호스트된 엔드포인트 부하 테스트 방법을 참조하세요.

부하 테스트 구성 샘플

다음 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, 90, 95, 99일 수 있습니다.
밀리초(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 사용자 속성 파일로 사용할 파일입니다. 파일은 JMeter 테스트 스크립트 및 기타 구성 파일과 함께 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'

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 Description
requestName string 고유한 요청 이름입니다. 테스트 실패 조건을 구성할 때 요청 이름을 참조할 수 있습니다.
responseVariables 배열 응답 변수 목록입니다. 응답 변수를 사용하여 요청에서 값을 추출하고 후속 요청에서 참조합니다. 응답 변수에 대해 자세히 알아봅니다.
responseVariables.extractorType string 응답 출력에서 값을 추출하는 메커니즘입니다. 지원되는 값은 XPathExtractor, JSONExtractorRegularExpression입니다.
responseVariables.expression string 응답 출력을 검색하는 식입니다. 식은 추출기 형식 값에 따라 달라집니다.
responseVariables.variableName string 고유 응답 변수 이름입니다. 구문을 사용하여 후속 요청에서 이 변수를 참조할 {$variable-name} 수 있습니다.
queryParameters 배열 엔드포인트에 전달할 쿼리 문자열 매개 변수 목록입니다.
queryParameters.key string 쿼리 문자열 매개 변수 이름입니다.
queryParameters.value string 쿼리 문자열 매개 변수 값입니다.
requestType string 요청 유형 지원되는 값은 다음과 URLCURL같습니다.
endpoint string 테스트할 애플리케이션 엔드포인트의 URL입니다.
headers 배열 애플리케이션 엔드포인트에 전달할 HTTP 헤더 목록입니다. 각 헤더에 대한 키-값 쌍을 지정합니다.
body string HTTP 요청에 대한 본문 텍스트입니다. 본문 콘텐츠의 형식을 지정하는 데 사용할 requestBodyFormat 수 있습니다.
requestBodyFormat string 본문 내용의 형식입니다. 지원되는 값은 다음과 TextHTMLJSONJavaScriptXML같습니다.
method string 엔드포인트를 호출하는 HTTP 메서드입니다. 지원되는 값은 다음과 POSTHEADOPTIONSPUTPATCHDELETE같습니다. GET
curlCommand string 실행할 cURL 명령입니다. 가 필요합니다 requestTypeCURL.

다음 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 부하 패턴 유형입니다. 지원되는 값은 다음과 linearstepspike같습니다.
scenario string 속성에 지정된 요청 그룹에 대한 참조입니다 scenarios .
virtualUsersPerEngine 정수 모두 테스트 엔진 인스턴스당 가상 사용자 수입니다.
durationInSeconds 정수 모두 부하 테스트의 총 기간(초)입니다.
rampUpTimeInSeconds 정수 선형, 단계 가상 사용자의 대상 수까지 진입하는 기간(초)입니다.
rampUpSteps 정수 단계 가상 사용자의 대상 수에 도달하는 단계 수입니다.
spikeMultiplier 정수 스파이크 급증 기간 동안 대상 사용자 수를 곱하는 요소입니다.
spikeHoldTimeInSeconds 정수 스파이크 스파이크 부하를 기본 총 기간(초)입니다.