öğretici: Azure Pipelines ve Azure yük testi önizlemesi ile performans gerilemeleri tanımla

Bu öğreticide, Azure Yük testi önizleme ve Azure Pipelines performans gerileme testini otomatikleştirmeyi öğreneceksiniz. bir Azure Pipelines cı/CD iş akışını, örnek bir web uygulaması için yük testi çalıştıracak şekilde yapılandıracaksınız ve sonra performans gerilemeleri belirlemek için sonuçları kullanmaktır.

cı/CD iş akışlarınız için GitHub eylemleri kullanıyorsanız, ilgili GitHub eylemleri öğreticisinebakın.

Şunları öğrenirsiniz:

  • Yük testi için gereken dosyalarla deponuzu ayarlayın.
  • Azure yük testi ile tümleştirilecek Azure Pipelines ayarlayın.
  • Yük testini çalıştırın ve sonuçları işlem hattı günlüklerinde görüntüleyin.
  • Yük testi için geçiş/başarısızlık ölçütlerini tanımlayın.
  • İşlem hattı değişkenlerini kullanarak yük testini parametreleştirin.

Önemli

Azure Yük testi Şu anda ÖNIZLEME aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Not

Azure Pipelines, özel projeler için Microsoft tarafından barındırılan aracılarda çalışan işlerde 60 dakikalık bir zaman aşımıyla sahiptir. Yük testiniz 60 dakikadan uzun bir süre boyunca çalışıyorsa, ek kapasiteiçin ödeme yapmanız gerekir. Aksi takdirde, işlem hattı test sonuçlarını beklemeden zaman aşımına uğrar. Yük testi durumunu Azure portal görüntüleyebilirsiniz.

Önkoşullar

Deponuzu ayarlama

başlamak için öncelikle örnek web uygulamasıyla bir GitHub deposuna ihtiyacınız vardır. daha sonra bu depoyu, yük testini çalıştırmak için bir Azure Pipelines iş akışı yapılandırmak üzere kullanacaksınız.

  1. bir tarayıcı açın ve örnek uygulamanın kaynak GitHub deposuna gidin:https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git

    örnek uygulama, bir Azure App Service web bileşeninden ve bir Cosmos DB veritabanından oluşan Node.js uygulamasıdır.

  2. örnek uygulama deposunu GitHub hesabınıza çatalla eklemek için çatalı seçin.

    örnek uygulama GitHub deposunun çatalını gösteren ekran görüntüsü.

Apache JMeter betiğini yapılandırma

Örnek uygulamanın kaynak deposu, SampleApp. JMX adlı bir Apache JMeter betiği içerir. Bu betik, her test yinelemesinde üç API çağrısı gerçekleştirir:

  • add-webapp üzerindeki ziyaretçi sayısı için Cosmos DB veri ekleme işlemi gerçekleştirir.
  • get-sayıyı almak için Cosmos DB bir alma işlemi gerçekleştirir.
  • lasttimestamp -Son Kullanıcı Web sitesine başladıktan sonra zaman damgasını güncelleştirir.

Bu bölümde, Apache JMeter betiğini örnek Web uygulamanızın URL 'siyle güncelleştireceksiniz.

  1. Örnek uygulama deponuzda, düzenlenecek SampleApp. JMX ' i açın.

    Apache JMeter test betiğinin nasıl düzenleneceğini gösteren ekran görüntüsü.

  2. <stringProp name="HTTPSampler.domain"> arayın.

    Dosyada üç örnek görürsünüz <stringProp name="HTTPSampler.domain"> .

  3. Değeri, her üç örnekteki örnek uygulamanızın App Service URL 'siyle değiştirin.

    <stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>
    

    sonraki adımlarda Azure Pipelines kullanarak örnek uygulamayı bir Azure App Service web uygulamasına dağıtırsınız. Şimdilik {your-app-name} önceki ÖNCEKI XML parçacığındaki yer tutucu metnini, App Service Web uygulamasına sağlamak istediğiniz benzersiz bir adla değiştirin. Daha sonra, bu adı Web uygulamasını oluşturmak için kullanacaksınız.

    Önemli

    https http Örnek uygulamanın URL 'sini eklemeyin.

  4. Değişikliklerinizi Ana dala uygulayın.

Azure için Azure Pipelines erişim izinleri ayarlama

bu bölümde, Azure DevOps projenizi Azure yük testi kaynağına erişim izinleri olacak şekilde yapılandıracaksınız.

Azure kaynaklarına erişmek için, Azure DevOps ' de bir hizmet bağlantısı oluşturacak ve gerekli izinleri atamak için rol tabanlı erişim denetimi kullanacaksınız.

  1. Azure DevOps kuruluşunuzda () oturum açın https://dev.azure.com/<yourorganization> .

  2. Project ayarları > hizmeti bağlantıları' nı seçin.

  3. + Yeni hizmet bağlantısı' nı seçin, Azure Resource Manager hizmet bağlantısı ' nı seçin ve ardından İleri' yi seçin.

  4. Hizmet sorumlusu (otomatik) kimlik doğrulama yöntemini seçin ve ardından İleri' yi seçin.

  5. Abonelik kapsamı düzeyini seçin ve ardından Azure Yük testi kaynağını içeren Azure aboneliğinizi seçin.

    Yeni bir hizmet bağlantısının nasıl oluşturulacağını gösteren ekran görüntüsü.

    İşlem hattını yapılandırmak için daha sonraki bir adımda hizmet bağlantısının adını kullanacaksınız.

  6. Bağlantıyı oluşturmak için Kaydet ' i seçin.

  7. Listeden hizmet bağlantısını seçin ve ardından hizmet sorumlusunu Yönet' i seçin.

    Hizmet sorumlusunu yönetmeyi gösteren ekran görüntüsü.

    Azure portal hizmet sorumlusunun ayrıntılarını görürsünüz. Hizmet sorumlusu uygulaması (istemci) kimliğini aklınızda edin.

    Hizmet bağlantısı uygulama KIMLIĞININ nasıl alınacağını gösteren ekran görüntüsü.

  8. Şimdi, Azure Yük testi hizmetine erişime izin vermek için hizmet sorumlusuna Yük testi katkıda bulunan rolünü atayın.

    İlk olarak, hizmet sorumlusu nesne KIMLIĞINI alın. Aşağıdaki Azure CLı komutundan ObjectID sonucunu seçin:

    az ad sp show --id "<application-client-id>"
    

    Yer tutucu metnini <sp-object-id> hizmet sorumlusu nesne kimliği ile değiştirin. Ayrıca, öğesini <subscription-name-or-id> Azure ABONELIK Kimliğinizle değiştirin.

    az role assignment create --assignee "<sp-object-id>" \
        --role "Load Test Contributor" \
        --subscription "<subscription-name-or-id>"
    

Azure Pipelines iş akışını bir yük testi çalıştıracak şekilde yapılandırma

bu bölümde, yük testini tetikleyen bir Azure Pipelines iş akışı ayarlayacaksınız.

ilk olarak, Azure DevOps marketi 'nden Azure yük testi uzantısını yükleyecek, yeni bir işlem hattı oluşturacaksınız ve ardından bunu örnek uygulamanın ele alınan deposuna bağlayacaksınız.

  1. Azure DevOps marketi 'nden Azure yük testi görev uzantısını yükleyin.

    uzantılar için Visual Studio marketi 'ne nasıl gözatakullanacağınızı gösteren ekran görüntüsü.

    Azure yük testi uzantısının Visual Studio marketi 'nden nasıl yükleneceğini gösteren ekran görüntüsü.

  2. Azure DevOps projenizde Pipelines' i seçin ve ardından işlem hattı oluştur' u seçin.

    Yeni bir Azure işlem hattının nasıl oluşturulacağını gösteren ekran görüntüsü.

  3. Bağlan sekmesinde GitHub' i seçin.

  4. Azure Pipelines, iş akışlarını tetikleyerek GitHub hesabınıza erişmesine izin vermek için yetkilendir AzurePipelines ' ı seçin.

  5. Seç sekmesinde, örnek uygulamanın ele aldığı depoyu seçin.

    örnek uygulamanın GitHub deposunun nasıl seçdiğinin gösterildiği ekran görüntüsü.

    Depo bir Azure-Pipeline. yıml işlem hattı tanım dosyası içeriyor. Şimdi bu tanımı Azure Yük testi hizmetinize bağlanacak şekilde değiştirirsiniz.

  6. Gözden geçir sekmesinde, YAML kodundaki aşağıdaki yer tutucu metinlerini değiştirin.

    Yer tutucu Değer
    <Name of your webapp> Azure App Service Web uygulaması adı. Bu ad, SampleApp. JMX test betiğinin ENDPOINT URL 'si için kullanılan adla eşleşmelidir.
    <Name of your webARM Service connection> Önceki bölümde oluşturduğunuz hizmet bağlantısının adı.
    <Azure subscriptionId> Azure abonelik kimliğiniz.
    <Name of your load test resource> Azure Yük testi kaynağınızın adı.
    <Name of your load test resource group> Azure Yük testi kaynağını içeren kaynak grubu adı.

    Önemli

    Azure Web uygulamasının adı, SampleApp. JMX test betiğinin ENDPOINT URL 'si için kullandığınız adla eşleşmelidir.

    işlem hattı oluştururken Azure Pipelines gözden geçirme sekmesini gösteren ekran görüntüsü.

  7. Kaydet ve Çalıştır' ı seçin, bir COMMIT iletisi girin ve ardından Kaydet ve Çalıştır' ı seçin.

    Yeni bir Azure işlem hattının nasıl kaydedileceğini ve çalıştırılacağını gösteren ekran görüntüsü.

    Azure Pipelines artık cı/CD iş akışını çalıştırıyor. İşlem hattı işini seçerek durum ve günlükleri izleyebilirsiniz.

    İşlem hattı iş ayrıntılarının nasıl görüntüleneceğini gösteren ekran görüntüsü.

Yük testi sonuçlarını görüntüle

Ana daldaki her güncelleştirme için Azure işlem hattı aşağıdaki adımları yürütür:

  • Örnek Node.js uygulamasını bir Azure Uygulama Hizmetleri Web uygulamasına dağıtın. Web uygulamasının adı, işlem hattı tanımında yapılandırılır.
  • Apache JMeter betiği ve depodaki test yapılandırması YAML dosyası temelinde yük testi oluşturmak ve çalıştırmak için Azure Yük testini tetikleyin.

Bu bölümde, yük testi sonuçlarını ardışık düzen günlüğü bilgilerinde görüntüleyebileceksiniz.

  1. Azure DevOps projenizde Pipelines' i seçin ve ardından listeden işlem hattı tanımınızı seçin.

  2. Çalıştırma özetini görüntülemek için işlem hattı çalıştırmasını seçin.

    İşlem hattı çalıştırma özetini gösteren ekran görüntüsü.

  3. İşlem hattı günlüklerini görüntülemek için işler bölümünde Yük testi ' ni seçin.

    Azure işlem hattı çalıştırma günlüğünü gösteren ekran görüntüsü.

    Yük testi tamamlandıktan sonra, işlem hattı günlüklerinde test özet bilgilerini ve istemci tarafı ölçümlerini görüntüleyebilirsiniz. Günlük Ayrıca, bu yük testi için Azure Yük testi panosuna gitmek üzere URL 'YI gösterir.

  4. Ardışık düzen günlüğü görünümünde Yük testi' ni seçin ve ardından yük testi sonuç dosyalarını indirmek için üretilen 1 yapıt ' ı seçin.

    Yük testi sonuçlarının nasıl indirileceği gösteren ekran görüntüsü.

Test geçişi/başarısızlık ölçütlerini tanımla

Bu bölümde, yük testinizin sonucunu belirlemekte hata ölçütleri ekleyeceksiniz. Hata ölçütlerinden en az biri true olarak değerlendirilirse, yük testi başarısız olur.

Bu ölçütleri test yapılandırması YAML dosyasında belirtebilirsiniz.

  1. GitHub deponuzdaki sampleapp. yıml dosyasını düzenleyin.

  2. Dosyanın sonuna aşağıdaki kod parçacığını ekleyin.

    failureCriteria: 
        - avg(response_time_ms) > 100
        - percentage(error) > 20
    

    Artık yük testiniz için hata ölçütlerini belirttiniz. Bu koşullardan en az biri karşılandığında test başarısız olur:

    • Toplam ortalama yanıt süresi 100 ms 'den büyük.
    • Hataların toplam yüzdesi %20 ' den fazla.
  3. Değişiklikleri işleyin ve deponun ana dalına gönderin.

    bu değişiklikler Azure Pipelines cı/CD iş akışını tetikler.

  4. İşlem hattı çalıştırmaları sayfasında, listeden en son girişi seçin.

    Yük testi tamamlandıktan sonra, ortalama yanıt süresi başarısızlık ölçütlerinde belirtenden daha yüksek olduğu için işlem hattının başarısız olduğunu fark edeceksiniz.

    Başarısız bir test kriterinden sonra işlem hattı günlüklerini gösteren ekran görüntüsü.

    Azure Yük Testi Hizmeti, test yürütmesi sırasında ölçütleri değerlendirir. Bu koşullardan herhangi biri başarısız olursa, Azure Yük testi hizmeti sıfır olmayan bir çıkış kodu döndürür. Bu kod, testin başarısız olduğu CI/CD iş akışını bilgilendirir.

  5. SampleApp. yıml dosyasını düzenleyin ve test hatası ölçütlerini değiştirin.

    failureCriteria: 
        - avg(response_time_ms) > 5000
        - percentage(error) > 20
    
  6. Azure Pipelines cı/CD iş akışını tetiklemek için değişiklikleri işleyin.

    Tüm test ölçütleri geçtikten sonra işlem hattı günlüklerini gösteren ekran görüntüsü.

    Yük testi artık başarılı oldu ve işlem hattı başarıyla bitiyor.

İşlem hattından yük testlerine parametreleri geçirme

Sonra, işlem hattı değişkenlerini kullanarak yük testinizi parametreleştirebilirsiniz. Bu değişkenler parola veya gizli olmayan parolalar gibi gizli dizi olabilir.

Bu öğreticide, örnek uygulamayı yalnızca güvenli istekleri kabul edecek şekilde yeniden yapılandıracaksınız. Güvenli bir istek göndermek için HTTP isteğinde gizli bir değer geçirmeniz gerekir.

  1. GitHub deponuzdaki sampleapp. yaml dosyasını düzenleyin.

    TestPlan yapılandırma ayarını SampleApp_Secrets. JMX dosyasını kullanacak şekilde güncelleştirin.

    version: v0.1
    testName: SampleApp
    testPlan: SampleApp_Secrets.jmx
    description: 'SampleApp Test with secrets'
    engineInstances: 1
    

    SampleApp_Secrets. JMX Apache JMeter betiği, özel işlevle gizli değeri alan Kullanıcı tanımlı bir değişken kullanır ${__GetSecret(secretName)} . Apache JMeter daha sonra bu gizli değeri örnek uygulama uç noktasına geçirir.

  2. Değişiklikleri YAML dosyasına işleyin.

  3. GitHub deponuzdaki config. json dosyasını düzenleyin.

    enableSecretsFeatureÖrnek uygulamayı yalnızca güvenli istekleri kabul edecek şekilde yeniden yapılandırmak için ayarı true olarak güncelleştirin.

    {
        "enableSecretsFeature": true
    }
    
  4. Değişiklikleri config. JSON dosyasına kaydedin.

  5. SampleApp_Secrets. JMX dosyasını düzenleyin.

  6. <stringProp name="HTTPSampler.domain"> arayın.

    Dosyada üç örnek görürsünüz <stringProp name="HTTPSampler.domain"> .

  7. Değeri, her üç örnekteki örnek uygulamanızın App Service URL 'siyle değiştirin.

    <stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>
    

    örnek uygulamayı GitHub eylemler iş akışını kullanarak bir Azure App Service web uygulamasına dağıtırsınız. Önceki XML kod parçacığında, yer tutucu metnini {your-app-name} App Service Web uygulamasının benzersiz adıyla değiştirin.

    Önemli

    https http Örnek uygulamanın URL 'sini eklemeyin.

  8. Apache JMeter betiğini kaydedin ve işleyin.

  9. Pipelines sayfasına gidin, işlem hattı tanımınızı seçin ve ardından düzenle' yi seçin.

    Bir işlem hattı tanımının nasıl düzenleneceğini gösteren ekran görüntüsü.

  10. Değişkenler' i seçin ve ardından Yeni değişken' i seçin.

  11. Ad (MySecret) ve değer (1797669089) bilgilerini girin ve sonra değişkeni güvenli bir şekilde depolamak için Bu değeri gizli tut kutusunu işaretleyin.

    Yeni bir işlem hattı değişkeninin nasıl oluşturulacağını gösteren ekran görüntüsü.

  12. Tamam' ı seçin ve ardından yeni değişkeni kaydetmek için Kaydet ' i seçin.

  13. Gizli anahtarı yük testine geçirmek için Azure-Pipeline. yıml dosyasını düzenleyin.

    Aşağıdaki YAML kod parçacığını ekleyerek Azure Yük testi görevini düzenleyin:

    secrets: |
      [
          {
          "name": "appToken",
          "value": "$(mySecret)"
          }
      ]
    
  14. İşlem hattını kaydedin ve çalıştırın.

    Azure Yük testi görevi, ardışık düzendeki gizli anahtarı test motoruna güvenli bir şekilde geçirir. Gizli parametresi yalnızca yük testi çalıştırılırken kullanılır ve değer bellekten atılır.

Sonraki bölümde Azure Yük testi görevine genel bakış konusuna göz atın.

Azure Yük testi görevi

Bu bölümde Azure Pipelines için Azure Yük testi görevi açıklanmaktadır. görev platformlar arası ve Windows, Linux veya Mac aracılarında çalışır.

Azure Yük testi görevini yapılandırmak için aşağıdaki parametreleri kullanabilirsiniz.

Parametre Açıklama
azureSubscription Gerekli Azure Resource Manager hizmeti bağlantısının adı.
loadTestConfigFile Gerekli Yük testi YAML yapılandırma dosyasının yolu. Yol, varsayılan çalışma dizinine tam veya göreli olarak belirlenir.
resourceGroup Gerekli Azure Yük testi kaynağını içeren kaynak grubunun adı.
loadTestResource Gerekli Mevcut bir Azure Yük testi kaynağının adı.
secrets Her gizli anahtar için ad ve değerden oluşan JSON nesneleri dizisi. Ad, Apache JMeter test komut dosyasında kullanılan gizli adla eşleşmelidir.
env Her ortam değişkeni için ad ve değerden oluşan JSON nesneleri dizisi. Ad, Apache JMeter test komut dosyasında kullanılan değişken adıyla eşleşmelidir.

aşağıdaki yaml kod parçacığı, görevin bir Azure Pipelines cı/CD iş akışında nasıl kullanılacağını açıklar.

- task: AzureLoadTest@1
  inputs:
    azureSubscription: '<Azure service connection>'
    loadTestConfigFile: '< YAML File path>'
    loadTestResource: '<name of the load test resource>'
    resourceGroup: '<name of the resource group of your load test resource>' 
    secrets: |
      [
          {
          "name": "<Name of the secret>",
          "value": "$(mySecret1)",
          },
          {
          "name": "<Name of the secret>",
          "value": "$(mySecret1)",
          }
      ]
    env: |
      [
          {
          "name": "<Name of the variable>",
          "value": "<Value of the variable>",
          },
          {
          "name": "<Name of the variable>",
          "value": "<Value of the variable>",
          }
      ]

Kaynakları temizleme

Önemli

Oluşturduğunuz kaynakları diğer Azure Load Testing öğreticileri ve nasıl oluşturulduğunda makalelerde önkoşul olarak kullanabilirsiniz.

Oluşturduğunuz kaynaklardan herhangi birini kullanmayı planlasanız, ek ücret ödemeden bunları silin.

  • Azure portalında:

    1. Sol üst köşedeki menü düğmesini ve ardından Kaynak grupları'ı seçin.

    2. Listeden oluşturduğunuz kaynak grubunu seçin.

    3. Kaynak grubunu sil'i seçin.

      Azure portalda kaynak grubu silmek için yapılan seçimlerin ekran görüntüsü.

    4. Kaynak grubu adını girin. Ardından Sil’i seçin.

  • Alternatif olarak, Azure CLI'sini kullanabilirsiniz.

    az group delete --name <yourresourcegroup>
    

    Kaynak grubunun silinmesinin içindeki tüm kaynakların silinecek olduğunu unutmayın.

Sonraki adımlar

artık yük testlerini otomatik olarak çalıştırmak için Azure yük testi kullanan bir Azure Pipelines cı/CD iş akışı oluşturdunuz. Pass/Fail ölçütlerini kullanarak CI/CD iş akışının durumunu belirleyebilirsiniz. Parametrelerle, yük testi yürütmesini yapılandırılabilir hale getirebilirsiniz.