Python için Azure Load Testing istemci kitaplığı - sürüm 1.0.0
Azure Load Testing, python'da kullanıcıya Azure Load Testing hizmetiyle yerel olarak etkileşim kurabileceği istemci kitaplığı sağlar. Azure Load Testing, yüksek ölçekli yük oluşturmanızı sağlayan tam olarak yönetilen bir yük testi hizmetidir. Hizmet, nerede barındırıldığına bakılmaksızın uygulamalarınız için trafiğin simülasyonunu oluşturur. Geliştiriciler, test ediciler ve kalite güvencesi (QA) mühendisleri bunu kullanarak uygulama performansını, ölçeklenebilirliğini veya kapasitesini iyileştirebilir.
Belgeler
Başlamanıza yardımcı olacak çeşitli belgeler mevcuttur
Başlarken
Paketi yükleme
python -m pip install azure-developer-loadtesting
Önkoşullar
- Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir.
- Bu paketi kullanmak için bir Azure aboneliğine ihtiyacınız vardır.
- Mevcut bir Azure Geliştirici LoadTesting örneği.
Azure Active Directory Kimlik Bilgileri ile oluşturma
Azure Active Directory (AAD) belirteci kimlik bilgilerini kullanmak için azure-identity kitaplığından elde edilen istenen kimlik bilgisi türünün bir örneğini sağlayın.
AAD ile kimlik doğrulaması yapmak için önce pip yüklemeniz gerekir azure-identity
Kurulumdan sonra azure.identity'den kullanılacak kimlik bilgisi türünü seçebilirsiniz.
Örneğin, Azure CLI az login
komutuyla oturum açın; DefaultAzureCredential bu kullanıcı olarak kimlik doğrulaması yapar.
İstemcinin kimliğini doğrulamak için döndürülen belirteç kimlik bilgilerini kullanın.
İstemci oluşturma
Azure Geliştirici LoadTesting SDK'sı, 'yönetim' ve 'test_run' hizmetiyle etkileşime geçmek için ana istemcinin (LoadTestingClient
) 2 alt istemcisine sahiptir.
from azure.developer.loadtesting import LoadTestAdministrationClient
# for managing authentication and authorization
# can be installed from pypi, follow: https://pypi.org/project/azure-identity/
# using DefaultAzureCredentials, read more at: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python
from azure.identity import DefaultAzureCredential
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
<endpoint>
kaynağın veri düzlemi uç noktasını/URL'sini ifade eder.
Önemli kavramlar
Python için Azure Load Test istemci kitaplığı, istemcileri kullanarak bu bileşenlerin her biriyle etkileşim kurmanızı sağlar. Kitaplığın ana giriş noktaları olan iki üst düzey istemci vardır
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
Bu iki istemcinin zaman uyumsuz karşılıkları da vardır.
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
Yük Testi Yönetim İstemcisi
LoadTestAdministrationClient
yük testlerini, uygulama bileşenlerini ve ölçümleri yönetmek ve yapılandırmak için kullanılır.
Test etme
Test, test betiğini ve yük testi çalıştırmaya yönelik yapılandırma ayarlarını belirtir. Azure Load Testing kaynağında bir veya daha fazla test oluşturabilirsiniz.
Uygulama Bileşeni
Azure tarafından barındırılan bir uygulama için yük testi çalıştırdığınızda, farklı Azure uygulama bileşenleri (sunucu tarafı ölçümleri) için kaynak ölçümlerini izleyebilirsiniz. Yük testi çalışırken ve test tamamlandıktan sonra Azure Load Testing panosunda kaynak ölçümlerini izleyebilir ve analiz edebilirsiniz.
Ölçümler
Yük testi sırasında Azure Load Testing, test yürütmesi hakkındaki ölçümleri toplar. İki tür ölçüm vardır:
İstemci tarafı ölçümleri, test altyapısı tarafından bildirilen ayrıntıları sağlar. Bu ölçümler sanal kullanıcı sayısını, istek yanıt süresini, başarısız isteklerin sayısını veya saniyedeki istek sayısını içerir.
Sunucu tarafı ölçümleri, Azure tarafından barındırılan uygulamalar için kullanılabilir ve Azure uygulama bileşenleriniz hakkında bilgi sağlar. Ölçümler veritabanı okuma sayısı, HTTP yanıtlarının türü veya kapsayıcı kaynak tüketimi için olabilir.
Test Çalıştırma İstemcisi
LoadTestRunClient
, bir yük testine karşılık gelen test çalıştırmalarını başlatmak ve durdurmak için kullanılır. Test çalıştırması, yük testinin bir yürütmesini temsil eder. Apache JMeter betiğini çalıştırmayla ilişkili günlükleri, yük testi YAML yapılandırmasını, izlenecek uygulama bileşenlerinin listesini ve testin sonuçlarını toplar.
Data-Plane Uç Noktası
Azure Load Testing kaynaklarının veri düzlemi şu URL biçimi kullanılarak adreslenebilir:
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
İlk GUID 00000000-0000-0000-0000-000000000000
, Azure Load Testing kaynağına erişmek için kullanılan benzersiz tanımlayıcıdır. Bunu kaynağın Azure bölgesi izler aaa
.
Veri düzlemi uç noktası Denetim Düzlemi API'lerinden alınır.
Örnek:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
Yukarıdaki örnekte Azure eus
bölgesini East US
temsil eder.
Örnekler
Yük testi oluşturma
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
import os
TEST_ID = "some-test-id"
DISPLAY_NAME = "my-load-test"
# set SUBSCRIPTION_ID as an environment variable
SUBSCRIPTION_ID = os.environ["SUBSCRIPTION_ID"]
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
result = client.create_or_update_test(
TEST_ID,
{
"description": "",
"displayName": "My New Load Test",
"loadTestConfig": {
"engineInstances": 1,
"splitAllCSVs": False,
},
"passFailCriteria": {
"passFailMetrics": {
"condition1": {
"clientmetric": "response_time_ms",
"aggregate": "avg",
"condition": ">",
"value": 300
},
"condition2": {
"clientmetric": "error",
"aggregate": "percentage",
"condition": ">",
"value": 50
},
"condition3": {
"clientmetric": "latency",
"aggregate": "avg",
"condition": ">",
"value": 200,
"requestName": "GetCustomerDetails"
}
}
},
"secrets": {
"secret1": {
"value": "https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret",
"type": "AKV_SECRET_URI"
}
},
"environmentVariables": {
"my-variable": "value"
}
}
)
print(result)
except HttpResponseError as e:
print('Service responded with error: {}'.format(e.response.json()))
Teste .jmx dosyası yükleme
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
FILE_NAME = "some-file-name.jmx"
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
# uploading .jmx file to a test
resultPoller = client.begin_upload_test_file(TEST_ID, FILE_NAME, open("sample.jmx", "rb"))
# getting result of LRO poller with timeout of 600 secs
validationResponse = resultPoller.result(600)
print(validationResponse)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
Test Çalıştırma
from azure.developer.loadtesting import LoadTestRunClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
TEST_RUN_ID = "some-testrun-id"
DISPLAY_NAME = "my-load-test-run"
client = LoadTestRunClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
testRunPoller = client.begin_test_run(
TEST_RUN_ID,
{
"testId": TEST_ID,
"displayName": "My New Load Test Run",
}
)
#waiting for test run status to be completed with timeout = 3600 seconds
result = testRunPoller.result(3600)
print(result)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
Sonraki adımlar
Daha fazla örneği burada bulabilirsiniz.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları hakkında SSS bölümüne bakın veya başka soru ya da görüşleriniz olursa opencode@microsoft.com ile iletişime geçin.
Sorun giderme
Bu konuda daha fazla bilgi yakında...
Azure SDK for Python