öğ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
- Etkin aboneliği olan bir Azure hesabı. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- bir Azure DevOps organizasyonu ve projesi. Azure DevOps kuruluşunuz yoksa, ücretsiz olarak bir tane oluşturabilirsiniz. Azure Pipelines kullanmaya başlarken yardıma ihtiyacınız varsa, bkz. ilk işlem hattınızı oluşturma.
- bir depo oluşturabileceğiniz GitHub hesabı. Microsoft hesabınız yoksa ücretsiz olarak oluşturabilirsiniz.
- Mevcut bir Azure Yük testi kaynağı. Yük testi kaynağı oluşturmak için, bkz. Yük testi oluşturma ve çalıştırma.
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.
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.
örnek uygulama deposunu GitHub hesabınıza çatalla eklemek için çatalı seçin.
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.
Örnek uygulama deponuzda, düzenlenecek SampleApp. JMX ' i açın.
<stringProp name="HTTPSampler.domain">arayın.Dosyada üç örnek görürsünüz
<stringProp name="HTTPSampler.domain">.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
httpshttpÖrnek uygulamanın URL 'sini eklemeyin.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.
Azure DevOps kuruluşunuzda () oturum açın
https://dev.azure.com/<yourorganization>.Project ayarları > hizmeti bağlantıları' nı seçin.
+ 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.
Hizmet sorumlusu (otomatik) kimlik doğrulama yöntemini seçin ve ardından İleri' yi seçin.
Abonelik kapsamı düzeyini seçin ve ardından Azure Yük testi kaynağını içeren Azure aboneliğinizi seçin.
İşlem hattını yapılandırmak için daha sonraki bir adımda hizmet bağlantısının adını kullanacaksınız.
Bağlantıyı oluşturmak için Kaydet ' i seçin.
Listeden hizmet bağlantısını seçin ve ardından hizmet sorumlusunu Yönet' i seçin.
Azure portal hizmet sorumlusunun ayrıntılarını görürsünüz. Hizmet sorumlusu uygulaması (istemci) kimliğini aklınızda edin.
Ş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.
Azure DevOps marketi 'nden Azure yük testi görev uzantısını yükleyin.
Azure DevOps projenizde Pipelines' i seçin ve ardından işlem hattı oluştur' u seçin.
Bağlan sekmesinde GitHub' i seçin.
Azure Pipelines, iş akışlarını tetikleyerek GitHub hesabınıza erişmesine izin vermek için yetkilendir AzurePipelines ' ı seçin.
Seç sekmesinde, örnek uygulamanın ele aldığı depoyu seçin.
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.
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.
Kaydet ve Çalıştır' ı seçin, bir COMMIT iletisi girin ve ardından Kaydet ve Çalıştır' ı seçin.
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.
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.
Azure DevOps projenizde Pipelines' i seçin ve ardından listeden işlem hattı tanımınızı seçin.
Çalıştırma özetini görüntülemek için işlem hattı çalıştırmasını seçin.
İşlem hattı günlüklerini görüntülemek için işler bölümünde Yük testi ' ni seçin.
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.
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.
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.
GitHub deponuzdaki sampleapp. yıml dosyasını düzenleyin.
Dosyanın sonuna aşağıdaki kod parçacığını ekleyin.
failureCriteria: - avg(response_time_ms) > 100 - percentage(error) > 20Artı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.
Değişiklikleri işleyin ve deponun ana dalına gönderin.
bu değişiklikler Azure Pipelines cı/CD iş akışını tetikler.
İş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.
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.
SampleApp. yıml dosyasını düzenleyin ve test hatası ölçütlerini değiştirin.
failureCriteria: - avg(response_time_ms) > 5000 - percentage(error) > 20Azure Pipelines cı/CD iş akışını tetiklemek için değişiklikleri işleyin.
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.
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: 1SampleApp_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.Değişiklikleri YAML dosyasına işleyin.
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 }Değişiklikleri config. JSON dosyasına kaydedin.
SampleApp_Secrets. JMX dosyasını düzenleyin.
<stringProp name="HTTPSampler.domain">arayın.Dosyada üç örnek görürsünüz
<stringProp name="HTTPSampler.domain">.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
httpshttpÖrnek uygulamanın URL 'sini eklemeyin.Apache JMeter betiğini kaydedin ve işleyin.
Pipelines sayfasına gidin, işlem hattı tanımınızı seçin ve ardından düzenle' yi seçin.
Değişkenler' i seçin ve ardından Yeni değişken' i seçin.
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.
Tamam' ı seçin ve ardından yeni değişkeni kaydetmek için Kaydet ' i seçin.
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)" } ]İş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:
Sol üst köşedeki menü düğmesini ve ardından Kaynak grupları'ı seçin.
Listeden oluşturduğunuz kaynak grubunu seçin.
Kaynak grubunu sil'i seçin.

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.
- Yükleme testlerini Parametreleştirme hakkında daha fazla bilgi için bkz. bir yük testini Parametreleştirme.
- Test geçişi/başarısızlık ölçütlerini tanımlama hakkında daha fazla bilgi için bkz. test ölçütlerini tanımlama.