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:
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.
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 US
Azure .
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 ...
Azure SDK for Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk