Aracılığıyla paylaş


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:

  1. İ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.

  2. 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 UStemsil 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...