Bagikan melalui


Pustaka klien Azure Load Testing untuk Python - versi 1.0.0

Azure Load Testing menyediakan pustaka klien di python kepada pengguna tempat mereka dapat berinteraksi secara asli dengan layanan Azure Load Testing. Azure Load Testing adalah layanan pengujian beban terkelola penuh yang memungkinkan Anda menghasilkan beban skala tinggi. Layanan ini mensimulasikan lalu lintas untuk aplikasi Anda, terlepas dari di mana mereka dihosting. Pengembang, penguji, dan teknisi jaminan kualitas (QA) dapat menggunakannya untuk mengoptimalkan performa, skalabilitas, atau kapasitas aplikasi.

Dokumentasi

Berbagai dokumentasi tersedia untuk membantu Anda memulai

Memulai

Menginstal paket

python -m pip install azure-developer-loadtesting

Prasyarat

  • Python 3.7 atau yang lebih baru diharuskan untuk menggunakan paket ini.
  • Anda memerlukan langganan Azure untuk menggunakan paket ini.
  • Instans Azure Developer LoadTesting yang sudah ada.

Membuat dengan Kredensial Azure Active Directory

Untuk menggunakan kredensial token Azure Active Directory (AAD), berikan instans jenis kredensial yang diinginkan yang diperoleh dari pustaka identitas azure .

Untuk mengautentikasi dengan AAD, Anda harus terlebih dahulu memasang pipazure-identity

Setelah penyiapan, Anda dapat memilih jenis kredensial mana dari azure.identity yang akan digunakan.

Sebagai contoh, masuk melalui perintah Azure CLI az login dan DefaultAzureCredential akan mengautentikasi sebagai pengguna tersebut.

Gunakan kredensial token yang dikembalikan untuk mengautentikasi klien.

Membuat klien

Azure Developer LoadTesting SDK memiliki 2 sub-klien klien utama (LoadTestingClient) untuk berinteraksi dengan layanan, 'administrasi' dan 'test_run'.

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> mengacu pada titik akhir/URL bidang data sumber daya.

Konsep utama

Pustaka klien Azure Load Test untuk python memungkinkan Anda berinteraksi dengan masing-masing komponen ini melalui penggunaan klien. Ada dua klien tingkat atas yang merupakan titik masuk utama untuk pustaka

  • LoadTestAdministrationClient (azure.developer.loadtesting.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.LoadTestRunClient)

Kedua klien ini juga memiliki rekan asinkron, yaitu

  • LoadTestAdministrationClient (azure.developer.loadtesting.aio.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.aio.LoadTestRunClient)

Memuat Klien Administrasi Pengujian

LoadTestAdministrationClient digunakan untuk mengelola dan mengonfigurasi pengujian beban, komponen aplikasi, dan metrik.

Uji

Pengujian menentukan skrip pengujian, dan pengaturan konfigurasi untuk menjalankan uji beban. Anda dapat membuat satu atau beberapa pengujian di sumber daya Azure Load Testing.

Komponen Aplikasi

Saat menjalankan uji beban untuk aplikasi yang dihosting Azure, Anda dapat memantau metrik sumber daya untuk berbagai komponen aplikasi Azure (metrik sisi server). Saat uji beban berjalan, dan setelah menyelesaikan pengujian, Anda dapat memantau dan menganalisis metrik sumber daya di dasbor Azure Load Testing.

Metrik

Selama pengujian beban, Azure Load Testing mengumpulkan metrik tentang eksekusi pengujian. Terdapat dua jenis metrik:

  1. Metrik sisi klien memberi Anda detail yang dilaporkan oleh mesin uji. Metrik ini mencakup jumlah pengguna virtual, waktu respons permintaan, jumlah permintaan yang gagal, atau jumlah permintaan per detik.

  2. Metrik sisi server tersedia untuk aplikasi yang dihosting Azure dan memberikan informasi tentang komponen aplikasi Azure Anda. Metrik dapat untuk jumlah pembacaan database, jenis respons HTTP, atau konsumsi sumber daya kontainer.

Uji Jalankan Klien

LoadTestRunClient digunakan untuk memulai dan menghentikan uji coba yang sesuai dengan uji beban. Uji coba mewakili satu eksekusi uji beban. Ini mengumpulkan log yang terkait dengan menjalankan skrip Apache JMeter, konfigurasi YAML uji beban, daftar komponen aplikasi untuk dipantau, dan hasil pengujian.

Titik Akhir Data-Plane

Bidang data sumber daya Azure Load Testing dapat diatasi menggunakan format URL berikut:

00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com

GUID 00000000-0000-0000-0000-000000000000 pertama adalah pengidentifikasi unik yang digunakan untuk mengakses sumber daya Azure Load Testing. Ini diikuti oleh aaa yang merupakan wilayah Azure dari sumber daya.

Titik akhir data-plane diperoleh dari API Sarana Kontrol.

Contoh:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

Dalam contoh di atas, eus mewakili wilayah East USAzure .

Contoh

Membuat uji beban

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()))

Mengunggah file .jmx ke Pengujian

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()))

Menjalankan Pengujian

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()))

Langkah berikutnya

Sampel lainnya dapat ditemukan di sini.

Berkontribusi

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.

Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Kode Etik atau kontak dengan pertanyaan atau komentar opencode@microsoft.com tambahan.

Pemecahan Masalah

Lebih lanjut tentang hal itu akan segera datang ...