YAML'de yük testi yapılandırma

YAML kullanarak Azure Yük Testi'nde yük testinizi yapılandırmayı öğrenin. Sürekli tümleştirme ve sürekli teslim (CI/CD) iş akışınızdan yük testleri oluşturmak ve çalıştırmak için test yapılandırması YAML dosyasını kullanırsınız.

Yük testi YAML söz dizimi

Yük testi yapılandırması aşağıdaki anahtarları kullanır:

Tuş Tür Zorunlu Varsayılan değer Açıklama
version Dize Y Yük testi belirtimi sürümü. Desteklenen tek değerdir v0.1.
testId Dize Y Yük testinin benzersiz tanımlayıcısı. Değer 2 ile 50 karakter arasında olmalıdır ([a-z0-9_-]). Mevcut bir test için testId azure portalındaki test ayrıntıları sayfasından alabilirsiniz.
testName Dize N Kullanımdan kaldırıldı. Yük testinin benzersiz tanımlayıcısı. Bu ayar ile testIddeğiştirilir. Alanıyla mevcut testleri çalıştırmaya testName devam edebilirsiniz.
displayName Dize N Testin görünen adı. Bu değer, Azure portalındaki test listesinde gösterilir. Sağlanmadıysa, testId görünen ad olarak kullanılır.
description Dize N Testin kısa açıklaması. Değerin uzunluğu en fazla 100 karakterdir.
testType Dize Y Test türü. Olası değerler:
  • URL: URL tabanlı yük testi
  • JMX: JMeter tabanlı yük testi
testPlan Dize Y Test planı dosyasına başvuru.
  • If testType: JMX: JMeter test betiğinin göreli yolu.
  • if testType: URL: requests JSON dosyasının göreli yolu.
engineInstances integer Y Test planını çalıştırmak için paralel test altyapısı örneklerinin sayısı. Yüksek ölçekli yük yapılandırma hakkında daha fazla bilgi edinin.
configurationFiles dize dizisi N Test betiği için gerekli olan dış dosyaların listesi. Örneğin, CSV veri dosyaları, görüntüler veya başka bir veri dosyası.
Azure Load Testing, test betiğiyle aynı klasördeki tüm dosyaları karşıya yükler. JMeter betiğinde yalnızca dosya adını kullanarak dış dosyalara başvurun ve dosya yolu bilgilerini kaldırın.
failureCriteria nesne N Yük testi başarısız ölçütlerinin listesi. Daha fazla bilgi için bkz . failureCriteria .
autoStop dize veya nesne N Hata yüzdesi bir değeri aştığında yük testini otomatik olarak durdurun.
Olası değerler:
- disable: yük testlerini otomatik olarak durdurmayın.
- object: Daha fazla ayrıntı için bkz . otomatik durdurma yapılandırması.
properties nesne N JMeter kullanıcı özelliği dosya başvuruları. Daha fazla ayrıntı için özelliklere bakın.
zipArtifacts dize dizisi N Zip yapıt dosyalarının listesini belirtir. JMeter betikleri ve kullanıcı özellikleri dışındaki dosyalar için, dosya boyutu 50 MB'ı aşarsa, bunları zip dosyasına sıkıştırın. ZIP dosyasının boyutunun 50 MB'ın altında kaldığından emin olun. Her birinde en fazla 1000 dosya ve sıkıştırılmamış boyutu 1 GB olan yalnızca 5 ZIP yapıtına izin verilir. Yalnızca olduğunda testType: JMXgeçerlidir.
splitAllCSVs boolean N False Giriş CSV dosyalarını tüm test altyapısı örnekleri arasında eşit olarak bölün. Daha fazla bilgi için bkz . Yük testlerinde CSV dosyasını okuma.
secrets nesne N Apache JMeter betiğinin başvurduğunu gizli dizilerin listesi. Daha fazla ayrıntı için gizli dizilere bakın.
env nesne N Apache JMeter betiğinin başvurduğunu ortam değişkenlerinin listesi. Daha fazla ayrıntı için ortam değişkenlerine bakın.
certificates nesne N JMeter betiğinde uygulama uç noktalarıyla kimlik doğrulaması için istemci sertifikalarının listesi. Daha fazla ayrıntı için bkz . sertifikalar .
keyVaultReferenceIdentity Dize N Azure Key Vault'unuzdan gizli dizilere erişmek için kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliği. Sistem tarafından yönetilen bir kimlik kullanıyorsanız bu bilgiler gerekli değildir. Bu kullanıcı tarafından atanan kimliğe Azure anahtar kasanıza erişim izni verin. Azure Yük Testi'nde yönetilen kimlikler hakkında daha fazla bilgi edinin.
subnetId Dize N Özel olarak barındırılan uç noktaları test için sanal ağ alt ağının kaynak kimliği. Bu alt ağ, eklenen test altyapısı VM'lerini barındırıyor. Daha fazla bilgi için bkz . Test özel olarak barındırılan uç noktaları yükleme.
publicIPDisabled boolean N Özel uç noktayı test ederken genel IP adresi, yük dengeleyici ve ağ güvenlik grubu dağıtımını devre dışı bırakın. Daha fazla bilgi için bkz . Test özel olarak barındırılan uç noktaları yükleme.

Yük testi yapılandırma örneği

Aşağıdaki YAML kod parçacığı örnek bir yük testi yapılandırması içerir.

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 yapılandırması

Test başarısız ölçütleri, yük testi çalıştırmanın başarılı olup olmadığını belirlemek için koşulları tanımlamanızı sağlar. Bir veya daha fazla başarısız ölçüt karşılanırsa, test başarısız bir test sonucu alır. Yük testi başarısız ölçütlerini kullanma hakkında daha fazla bilgi edinin.

Yük testinin tamamına uygulanan veya belirli bir istek için geçerli olan hata ölçütlerini tanımlayabilirsiniz. Başarısız ölçütler aşağıdaki yapıya sahiptir:

  • Yük testi düzeyinde test ölçütleri: Aggregate_function (client_metric) condition threshold.
  • Belirli JMeter isteklerine uygulanan test ölçütleri: Request: Aggregate_function (client_metric) condition threshold.

Desteklenen istemci ölçümleri

Azure Load Testing aşağıdaki istemci ölçümlerini destekler:

Metric Toplama işlevi Threshold Koşul Açıklama
response_time_ms avg (ortalama)
min (minimum)
max (maksimum)
pxx (yüzdebirlik), xx 50, 90, 95, 99 olabilir
Milisaniye (ms) sayısını temsil eden tamsayı değeri. > (büyüktür)
< (küçüktür)
Yanıt süresi veya geçen süre (milisaniye cinsinden). Geçen süre hakkında daha fazla bilgiyi Apache JMeter belgelerinde bulabilirsiniz.
latency avg (ortalama)
min (minimum)
max (maksimum)
pxx (yüzdebirlik), xx 50, 90, 95, 99 olabilir
Milisaniye (ms) sayısını temsil eden tamsayı değeri. > (büyüktür)
< (küçüktür)
Milisaniye cinsinden gecikme süresi. Apache JMeter belgelerinde gecikme süresi hakkında daha fazla bilgi edinin.
error percentage Yüzdeyi temsil eden 0-100 aralığındaki sayısal değer. > (büyüktür) Başarısız isteklerin yüzdesi.
requests_per_sec avg (ortalama) İki ondalık basameğe kadar olan sayısal değer. > (büyüktür)
< (küçüktür)
Saniye başına istek sayısı.
requests count Tamsayı değeri. > (büyüktür)
< (küçüktür)
Toplam istek sayısı.

Başarısız ölçüt yapılandırma örneği

Aşağıdaki kod parçacığında üç yük testi başarısızlık ölçütüne sahip bir yük testi yapılandırması gösterilmektedir.

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 yapılandırması

Yük testi otomatik durdurma işlevi, belirli bir zaman penceresi sırasında hata yüzdesi belirli bir eşiği aştığında yük testini otomatik olarak durdurmanızı sağlar. Yük testi otomatik durdurma işlevi hakkında daha fazla bilgi edinin.

Tuş Tür Default value Açıklama
errorPercentage integer 90 sırasında hata yüzdesi eşiği timeWindow. Herhangi bir zaman penceresinde hata yüzdesi bu yüzdeyi aşarsa, test çalıştırması otomatik olarak durdurulur.
timeWindow integer 60 hesaplama errorPercentageiçin saniye olarak zaman penceresi.

Otomatik durdurma yapılandırma örneği

Aşağıdaki kod parçacığında üç yük testi başarısızlık ölçütüne sahip bir yük testi yapılandırması gösterilmektedir.

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 yapılandırması

Yük testiniz için bir JMeter kullanıcı özellikleri dosyası belirtebilirsiniz. Kullanıcı özellikleri dosyası, test planı ve diğer dosyalar ile birlikte karşıya yüklenir. Azure Yük Testi'nde JMeter kullanıcı özelliklerini kullanma hakkında daha fazla bilgi edinin.

Tuş Tür Default value Açıklama
userPropertyFile Dize Apache JMeter kullanıcı özellikleri dosyası olarak kullanılacak dosya. Dosya, JMeter test betiği ve diğer yapılandırma dosyalarının yanı sıra Azure Yük Testi kaynağına yüklenir. Dosya yerel makinenizdeki bir alt klasördeyse, test betiğinin konumuna göre bir yol kullanın.

Kullanıcı özellik dosyası yapılandırma örneği

Aşağıdaki kod parçacığı, kullanıcı özellikleri dosyasını belirten bir yük testi yapılandırması gösterir.

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 yapılandırması

Gizli dizi değerlerini Azure Key Vault'ta depolayabilir ve test planınızda bunlara başvurabilirsiniz. Azure Load Testing ile gizli dizileri kullanma hakkında daha fazla bilgi edinin.

Tuş Tür Default value Açıklama
name Dize Gizli dizinin adı. Bu ad, test planı isteklerinde kullandığınız gizli dizi adıyla eşleşmelidir.
value Dize Azure Key Vault gizli dizisi için URI (gizli dizi tanımlayıcısı).

Gizli dizi yapılandırma örneği

Aşağıdaki kod parçacığında, Azure Key Vault'taki bir gizli diziye my-secret başvuran bir yük testi yapılandırması gösterilmektedir.

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 yapılandırması

Ortam değişkenlerini belirtebilir ve test planınızda bunlara başvurabilirsiniz. Azure Yük Testi ile ortam değişkenlerini kullanma hakkında daha fazla bilgi edinin.

Tuş Tür Default value Açıklama
name Dize Ortam değişkeninin adı. Bu ad, test planı isteklerinde kullandığınız değişken adıyla eşleşmelidir.
value Dize Ortam değişkeninin değeri.

Ortam değişkeni yapılandırma örneği

Aşağıdaki kod parçacığı, bir ortam değişkeni my-variable ve değerini my-valuebelirten bir yük testi yapılandırması gösterir.

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 yapılandırması

İstemci sertifikalarını yük testinize geçirebilirsiniz. Sertifika Azure Key Vault'ta depolanır. Azure Yük Testi ile istemci sertifikalarını kullanma hakkında daha fazla bilgi edinin.

Tuş Tür Default value Açıklama
name Dize Sertifikanın adı.
value Dize Azure Key Vault'taki sertifika için URI (gizli dizi tanımlayıcısı).

Sertifika yapılandırma örneği

Aşağıdaki kod parçacığı, Azure Key Vault'taki bir istemci sertifikasına başvuran bir yük testi yapılandırmasını gösterir.

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

İstekler JSON dosyası

URL tabanlı bir test kullanıyorsanız, JMeter test betiği kullanmak yerine JSON dosyasında HTTP isteklerini belirtebilirsiniz. test yapılandırması YAML dosyasında öğesini olarak ayarladığınızdan testTypeURL emin olun ve istekler JSON dosyasına başvurun.

HTTP istekleri

requests JSON dosyası, özelliğinde requests istekleri tanımlamak için aşağıdaki özellikleri kullanır:

Özellik Türü Veri Akışı Açıklaması
requestName Dize Benzersiz istek adı. Test başarısız ölçütlerini yapılandırırken istek adına başvurabilirsiniz.
responseVariables dizi Yanıt değişkenlerinin listesi. İstekten bir değer ayıklamak ve sonraki bir istekte buna başvurmak için yanıt değişkenlerini kullanın. Yanıt değişkenleri hakkında daha fazla bilgi edinin.
responseVariables.extractorType Dize Yanıt çıkışından bir değer ayıklama mekanizması. Desteklenen değerler , JSONExtractorve RegularExpressiondeğerleridirXPathExtractor.
responseVariables.expression Dize Yanıt çıkışını almak için ifade. İfade ayıklayıcı türü değerine bağlıdır.
responseVariables.variableName Dize Benzersiz yanıt değişkeni adı. Söz dizimini kullanarak sonraki bir istekte bu değişkene {$variable-name} başvurabilirsiniz.
queryParameters dizi Uç noktaya geçirecek sorgu dizesi parametrelerinin listesi.
queryParameters.key Dize Sorgu dizesi parametre adı.
queryParameters.value Dize Sorgu dizesi parametre değeri.
requestType Dize İstek türü. Desteklenen değerler şunlardır: URL veya CURL.
endpoint Dize Test etmek için uygulama uç noktasının URL'si.
headers dizi Uygulama uç noktasına geçirecek HTTP üst bilgilerinin listesi. Her üst bilgi için bir anahtar-değer çifti belirtin.
body Dize HTTP isteği için gövde metni. gövde içeriğinin biçimini belirtmek için öğesini kullanabilirsiniz requestBodyFormat .
requestBodyFormat Dize Gövde içeriğinin biçimi. Desteklenen değerler şunlardır: Text, JSON, JavaScript, HTMLve XML.
method Dize Uç noktayı çağırmak için HTTP yöntemi. Desteklenen değerler şunlardır: GET, POST, PUT, DELETE, PATCH, , HEADve OPTIONS.
curlCommand Dize cURL komutunu çalıştırın. öğesinin olması requestTypeCURLgerekir.

Aşağıdaki JSON parçacığı bir örnek istek JSON dosyası içerir:

{
    "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
        }
    ]
}

Yapılandırmayı yükleme

requests JSON dosyası, özelliğinde testSetup yük yapılandırmasını tanımlamak için aşağıdaki özellikleri kullanır:

Özellik Türü Yükleme türü Açıklama
loadType Dize Yük deseni türü. Desteklenen değerler şunlardır: linear, stepve spike.
scenario Dize özelliğinde belirtilen istek grubuna başvuru scenarios .
virtualUsersPerEngine integer Tümünü Test altyapısı örneği başına sanal kullanıcı sayısı.
durationInSeconds integer Tümünü Yük testinin saniye cinsinden toplam süresi.
rampUpTimeInSeconds integer Doğrusal, Adım Hedef sanal kullanıcı sayısına yükselmek için saniye cinsinden süre.
rampUpSteps integer Adımlar Hedef sanal kullanıcı sayısına ulaşma adımlarının sayısı.
spikeMultiplier integer Spike Ani artış süresi boyunca hedef kullanıcı sayısını çarpma faktörü.
spikeHoldTimeInSeconds integer Spike Ani yükü korumak için saniye cinsinden toplam süre.