تكوين اختبار تحميل في YAML
تعرف على كيفية تكوين اختبار التحميل في Azure Load Testing باستخدام YAML. يمكنك استخدام ملف YAML لتكوين الاختبار لإنشاء اختبارات التحميل وتشغيلها من سير عمل التكامل المستمر والتسليم المستمر (CI/CD).
بناء جملة اختبار التحميل YAML
يستخدم تكوين اختبار التحميل المفاتيح التالية:
المفتاح | النوع | مطلوب | القيمة الافتراضية | الوصف |
---|---|---|---|---|
version |
سلسلة | Y | تحميل إصدار مواصفات الاختبار. القيمة الوحيدة المدعومة هي v0.1 . |
|
testId |
سلسلة | Y | معرف فريد لاختبار التحميل. يجب أن تتراوح القيمة بين حرفين و50 حرفا ([a-z0-9_-]). بالنسبة لاختبار موجود، يمكنك الحصول على testId من صفحة تفاصيل الاختبار في مدخل Microsoft Azure. |
|
testName |
سلسلة | N | مهمل. معرف فريد لاختبار التحميل. يتم استبدال هذا الإعداد ب testId . لا يزال بإمكانك تشغيل الاختبارات الموجودة مع testName الحقل . |
|
displayName |
سلسلة | N | عرض اسم الاختبار. تظهر هذه القيمة في قائمة الاختبارات في مدخل Microsoft Azure. إذا لم يتم توفيره، testId يتم استخدامه كاسم العرض. |
|
description |
سلسلة | N | وصف مختصر للاختبار. يبلغ الحد الأقصى لطول القيمة 100 حرف. | |
testType |
سلسلة | Y | نوع الاختبار. القيم الممكنة:
|
|
testPlan |
سلسلة | Y | مرجع إلى ملف خطة الاختبار.
|
|
engineInstances |
integer | Y | عدد مثيلات محرك الاختبار المتوازي لتشغيل خطة الاختبار. تعرف على المزيد حول تكوين التحميل على نطاق واسع. | |
configurationFiles |
صفيف سلسلة | N | قائمة الملفات الخارجية، المطلوبة من قبل البرنامج النصي للاختبار. على سبيل المثال، ملفات بيانات CSV أو الصور أو أي ملف بيانات آخر. يقوم Azure Load Testing بتحميل جميع الملفات في نفس المجلد مثل البرنامج النصي للاختبار. في البرنامج النصي JMeter، ارجع فقط إلى الملفات الخارجية باستخدام اسم الملف، وقم بإزالة أي معلومات مسار الملف. |
|
failureCriteria |
كائن | N | قائمة معايير فشل اختبار التحميل. راجع failureCriteria لمزيد من التفاصيل. | |
autoStop |
سلسلة أو عنصر | N | أوقف اختبار التحميل تلقائيا عندما تتجاوز نسبة الخطأ قيمة. القيم الممكنة: - disable : لا توقف اختبار التحميل تلقائيا.- الكائن: راجع تكوين الضبط التلقائي لمزيد من التفاصيل. |
|
properties |
كائن | N | مراجع ملف خاصية مستخدم JMeter. راجع الخصائص لمزيد من التفاصيل. | |
zipArtifacts |
صفيف سلسلة | N | تحديد قائمة ملفات البيانات الاصطناعية المضغوطة. بالنسبة للملفات الأخرى غير البرامج النصية JMeter وخصائص المستخدم، إذا تجاوز حجم الملف 50 ميغابايت، فضغطها في ملف ZIP. تأكد من أن حجم ملف ZIP أقل من 50 ميغابايت. يسمح فقط ب 5 أدوات ZIP بحد أقصى 1000 ملف في كل منها وحجم غير مضغوط يبلغ 1 غيغابايت. ينطبق فقط عندما testType: JMX . |
|
splitAllCSVs |
boolean | N | خطأ | تقسيم ملفات الإدخال CSV بالتساوي عبر جميع مثيلات محرك الاختبار. لمزيد من المعلومات، راجع قراءة ملف CSV في اختبارات التحميل. |
secrets |
كائن | N | قائمة الأسرار التي يشير إليها البرنامج النصي Apache JMeter. راجع البيانات السرية لمزيد من التفاصيل. | |
env |
كائن | N | قائمة متغيرات البيئة التي يشير إليها البرنامج النصي Apache JMeter. راجع متغيرات البيئة لمزيد من التفاصيل. | |
certificates |
كائن | N | قائمة شهادات العميل للمصادقة مع نقاط نهاية التطبيق في البرنامج النصي JMeter. راجع الشهادات لمزيد من التفاصيل. | |
keyVaultReferenceIdentity |
سلسلة | N | معرف المورد للهوية المدارة المعينة من قبل المستخدم للوصول إلى الأسرار من Azure Key Vault. إذا كنت تستخدم هوية مدارة من قبل النظام، فلن تكون هذه المعلومات مطلوبة. تأكد من منح هذا الوصول إلى الهوية المعينة من قبل المستخدم إلى مخزن مفاتيح Azure. تعرف على المزيد حول الهويات المدارة في Azure Load Testing. | |
subnetId |
سلسلة | N | معرف المورد للشبكة الفرعية للشبكة الظاهرية لاختبار نقاط النهاية المستضافة بشكل خاص. تستضيف هذه الشبكة الفرعية الأجهزة الظاهرية لمحرك الاختبار الذي تم إدخاله. لمزيد من المعلومات، راجع كيفية تحميل نقاط النهاية المستضافة بشكل خاص. | |
publicIPDisabled |
boolean | N | تعطيل نشر عنوان IP عام وموازن تحميل ومجموعة أمان الشبكة أثناء اختبار نقطة نهاية خاصة. لمزيد من المعلومات، راجع كيفية تحميل نقاط النهاية المستضافة بشكل خاص. | |
regionalLoadTestConfig |
كائن | N | توزيع التحميل عبر المناطق لمحاكاة نسبة استخدام الشبكة للمستخدم من مناطق متعددة. لمزيد من المعلومات، راجع تكوين اختبار التحميل الإقليمي لمزيد من التفاصيل. |
تحميل نموذج تكوين الاختبار
يحتوي مقتطف YAML التالي على مثال لتكوين اختبار التحميل.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
- 'sampledata.csv'
zipArtifacts:
- bigdata.zip
splitAllCSVs: True
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop:
errorPercentage: 80
timeWindow: 60
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
failureCriteria
تكوين
تمكنك معايير فشل الاختبار من تحديد الشروط لتحديد ما إذا كان تشغيل اختبار التحميل ناجحا أم لا. إذا تم استيفاء معيار فشل واحد أو أكثر، يحصل الاختبار على نتيجة اختبار فاشلة. تعرف على المزيد حول استخدام معايير فشل اختبار التحميل.
يمكنك تحديد معايير الفشل التي تنطبق على اختبار التحميل بأكمله، أو التي تنطبق على طلب معين. معايير الفشل لها البنية التالية:
- معايير الاختبار على مستوى اختبار التحميل:
Aggregate_function (client_metric) condition threshold
. - معايير الاختبار المطبقة على طلبات JMeter معينة:
Request: Aggregate_function (client_metric) condition threshold
.
مقاييس العميل المدعومة
يدعم اختبار تحميل Azure مقاييس العميل التالية:
Metric | الدالة التجميعية | الحد | شرط | الوصف |
---|---|---|---|---|
response_time_ms |
avg (متوسط)min (الحد الأدنى)max (الحد الأقصى)pxx (القيمة المئوية)، يمكن أن تكون xx 50 و75 و90 و95 و96 و97 و98 و99 و999 و999 |
قيمة عدد صحيح، تمثل عدد المللي ثانية (مللي ثانية). | > (أكثر من)< (أصغر من) |
وقت الاستجابة أو الوقت المنقضي، بالمللي ثانية. تعرف على المزيد حول الوقت المنقضي في وثائق Apache JMeter. |
latency |
avg (متوسط)min (الحد الأدنى)max (الحد الأقصى)pxx (القيمة المئوية)، يمكن أن تكون xx 50، 90، 95، 99 |
قيمة عدد صحيح، تمثل عدد المللي ثانية (مللي ثانية). | > (أكثر من)< (أصغر من) |
زمن الانتقال، بالمللي ثانية. تعرف على المزيد حول زمن الانتقال في وثائق Apache JMeter. |
error |
percentage |
قيمة رقمية في النطاق 0-100، تمثل نسبة مئوية. | > (أكثر من) |
النسبة المئوية للطلبات الفاشلة. |
requests_per_sec |
avg (متوسط) |
قيمة رقمية مع ما يصل إلى منزلتين عشريتين. | > (أكبر من) < (أصغر من) |
عدد الطلبات في الثانية. |
requests |
count |
قيمة عدد صحيح. | > (أكبر من) < (أصغر من) |
إجمالي عدد الطلبات. |
نموذج تكوين معايير الفشل
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار التحميل، والذي يحتوي على ثلاثة معايير فشل اختبار التحميل.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop
تكوين
تمكنك وظيفة التوقف التلقائي لاختبار التحميل من إيقاف اختبار التحميل تلقائيا عندما تتجاوز نسبة الخطأ حدا معينا خلال نافذة زمنية معينة. تعرف على المزيد حول وظيفة التحمل التلقائي لاختبار التحميل.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
errorPercentage |
integer | 90 | حد النسبة المئوية للخطأ، أثناء timeWindow . إذا تجاوزت نسبة الخطأ هذه النسبة المئوية خلال أي نافذة زمنية معينة، يتوقف تشغيل الاختبار تلقائيا. |
timeWindow |
integer | 60 | النافذة الزمنية بالثوان لحساب errorPercentage . |
عينة تكوين Autostop
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار التحميل، والذي يحتوي على ثلاثة معايير فشل اختبار التحميل.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
errorPercentage: 80
timeWindow: 60
properties
تكوين
يمكنك تحديد ملف خصائص مستخدم JMeter لاختبار التحميل الخاص بك. يتم تحميل ملف خصائص المستخدم جنبا إلى جنب مع خطة الاختبار والملفات الأخرى. تعرف على المزيد حول استخدام خصائص مستخدم JMeter في اختبار تحميل Azure.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
userPropertyFile |
سلسلة | ملف لاستخدامه كملف خصائص مستخدم Apache JMeter. يتم تحميل الملف إلى مورد Azure Load Testing جنبا إلى جنب مع البرنامج النصي لاختبار JMeter وملفات التكوين الأخرى. إذا كان الملف في مجلد فرعي على جهازك المحلي، فاستخدم مسارا يتعلق بموقع البرنامج النصي للاختبار. |
نموذج تكوين ملف خاصية المستخدم
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار التحميل، والذي يحدد ملف خصائص المستخدم.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
userPropertyFile: 'user.properties'
secrets
تكوين
يمكنك تخزين القيم السرية في Azure Key Vault والإشارة إليها في خطة الاختبار الخاصة بك. تعرف على المزيد حول استخدام الأسرار مع اختبار تحميل Azure.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
name |
سلسلة | اسم السر. يجب أن يتطابق هذا الاسم مع الاسم السري الذي تستخدمه في طلبات خطة الاختبار. | |
value |
سلسلة | URI (معرف سري) للبيانات السرية ل Azure Key Vault. |
عينة تكوين البيانات السرية
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار التحميل، والذي يشير إلى سر my-secret
في Azure Key Vault.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
env
تكوين
يمكنك تحديد متغيرات البيئة والإشارة إليها في خطة الاختبار الخاصة بك. تعرف على المزيد حول استخدام متغيرات البيئة مع Azure Load Testing.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
name |
سلسلة | اسم متغير البيئة. يجب أن يتطابق هذا الاسم مع اسم المتغير الذي تستخدمه في طلبات خطة الاختبار. | |
value |
سلسلة | قيمة متغير البيئة. |
نموذج تكوين متغير البيئة
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار تحميل، والذي يحدد متغير my-variable
بيئة وقيمة my-value
.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
- name: my-variable
value: my-value
certificates
تكوين
يمكنك تمرير شهادات العميل إلى اختبار التحميل الخاص بك. يتم تخزين الشهادة في Azure Key Vault. تعرف على المزيد حول استخدام شهادات العميل مع Azure Load Testing.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
name |
سلسلة | اسم الشهادة. | |
value |
سلسلة | URI (المعرف السري) للشهادة في Azure Key Vault. |
نموذج تكوين الشهادة
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار تحميل، والذي يشير إلى شهادة عميل في Azure Key Vault.
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
- name: my-certificate
value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345
طلب ملف JSON
إذا كنت تستخدم اختبارا يستند إلى عنوان URL، يمكنك تحديد طلبات HTTP في ملف JSON بدلا من استخدام برنامج نصي لاختبار JMeter. تأكد من تعيين testType
إلى URL
في ملف YAML لتكوين الاختبار والإشارة إلى ملف JSON للطلبات.
طلبات HTTP
يستخدم ملف JSON الطلبات الخصائص التالية لتعريف الطلبات في الخاصية requests
:
الخاصية | نوع | الوصف |
---|---|---|
requestName |
سلسلة | اسم الطلب الفريد. يمكنك الرجوع إلى اسم الطلب عند تكوين معايير فشل الاختبار. |
responseVariables |
صفيف | قائمة متغيرات الاستجابة. استخدم متغيرات الاستجابة لاستخراج قيمة من الطلب والإشارة إليها في طلب لاحق. تعرف على المزيد حول متغيرات الاستجابة. |
responseVariables.extractorType |
سلسلة | آلية استخراج قيمة من إخراج الاستجابة. القيم المعتمدة هي XPathExtractor و JSONExtractor و RegularExpression . |
responseVariables.expression |
سلسلة | تعبير لاسترداد إخراج الاستجابة. يعتمد التعبير على قيمة نوع المستخرج. |
responseVariables.variableName |
سلسلة | اسم متغير الاستجابة الفريد. يمكنك الرجوع إلى هذا المتغير في طلب لاحق باستخدام بناء الجملة {$variable-name} . |
queryParameters |
صفيف | قائمة معلمات سلسلة الاستعلام لتمريرها إلى نقطة النهاية. |
queryParameters.key |
سلسلة | اسم معلمة سلسلة الاستعلام. |
queryParameters.value |
سلسلة | قيمة معلمة سلسلة الاستعلام. |
requestType |
سلسلة | نوع الطلب. القيم المدعومة هي: URL أو CURL . |
endpoint |
سلسلة | عنوان URL لنقطة نهاية التطبيق للاختبار. |
headers |
صفيف | قائمة رؤوس HTTP لتمريرها إلى نقطة نهاية التطبيق. حدد زوجا من قيم المفاتيح لكل رأس. |
body |
سلسلة | نص أساسي لطلب HTTP. يمكنك استخدام requestBodyFormat لتحديد تنسيق محتوى النص الأساسي. |
requestBodyFormat |
سلسلة | تنسيق محتوى النص الأساسي. القيم المدعومة هي: Text وJSON JavaScript HTML .XML |
method |
سلسلة | أسلوب HTTP لاستدعاء نقطة النهاية. القيم المدعومة هي: GET و POST PUT و DELETE وPATCH HEAD .OPTIONS |
curlCommand |
سلسلة | الأمر cURL للتشغيل. يتطلب أن requestType يكون هو CURL . |
تحتوي القصاصة البرمجية JSON التالية على مثال لطلبات ملف JSON:
{
"version": "1.0",
"scenarios": {
"requestGroup1": {
"requests": [
{
"requestName": "add",
"responseVariables": [],
"queryParameters": [
{
"key": "param1",
"value": "value1"
}
],
"requestType": "URL",
"endpoint": "https://www.contoso.com/orders",
"headers": {
"api-token": "my-token"
},
"body": "{\r\n \"customer\": \"Contoso\",\r\n \"items\": {\r\n\t \"product_id\": 321,\r\n\t \"count\": 50,\r\n\t \"amount\": 245.95\r\n }\r\n}",
"method": "POST",
"requestBodyFormat": "JSON"
},
{
"requestName": "get",
"responseVariables": [],
"requestType": "CURL",
"curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
},
],
"csvDataSetConfigList": []
}
},
"testSetup": [
{
"virtualUsersPerEngine": 1,
"durationInSeconds": 600,
"loadType": "Linear",
"scenario": "requestGroup1",
"rampUpTimeInSeconds": 30
}
]
}
تحميل التكوين
يستخدم ملف JSON الطلبات الخصائص التالية لتعريف تكوين التحميل في الخاصية testSetup
:
الخاصية | نوع | نوع التحميل | الوصف |
---|---|---|---|
loadType |
سلسلة | نوع نمط التحميل. القيم المدعومة هي: linear و step و.spike |
|
scenario |
سلسلة | مرجع إلى مجموعة الطلبات، المحددة في الخاصية scenarios . |
|
virtualUsersPerEngine |
integer | الكل | عدد المستخدمين الظاهريين لكل مثيل محرك اختبار. |
durationInSeconds |
integer | الكل | إجمالي مدة اختبار التحميل بالثوان. |
rampUpTimeInSeconds |
integer | خطي، خطوة | المدة بالثوان لزيادة العدد المستهدف للمستخدمين الظاهريين. |
rampUpSteps |
integer | الخطوة | عدد الخطوات للوصول إلى العدد المستهدف للمستخدمين الظاهريين. |
spikeMultiplier |
integer | تصاعد | عامل ضرب عدد المستخدمين المستهدفين أثناء مدة الارتفاع. |
spikeHoldTimeInSeconds |
integer | تصاعد | إجمالي المدة بالثوان للحفاظ على حمل الارتفاع. |
تكوين اختبار التحميل الإقليمي
يمكنك توزيع الحمل عبر المناطق لمحاكاة أنماط حركة مرور الحياة الحقيقية بشكل أفضل. يمكنك تحديد المناطق التي تريد إنشاء الحمل منها ومقدار الحمل الذي تريد محاكاته من كل منطقة. يمكنك القيام بذلك عن طريق تحديد اسم المنطقة وعدد مثيلات المحرك التي تريدها في تلك المنطقة. تعرف على المزيد حول إنشاء التحميل من مناطق متعددة.
المفتاح | النوع | القيمة الافتراضية | الوصف |
---|---|---|---|
region |
سلسلة | اسم منطقة Azure. | |
engineInstances |
integer | عدد مثيلات المحرك لمنطقة Azure هذه. |
عينة تكوين اختبار التحميل الإقليمي
يظهر مقتطف التعليمات البرمجية التالي تكوين اختبار التحميل، والذي يحدد منطقتين eastus
eastasia
من مناطق Azure وعدد مثيلات المحرك لكل منطقة.
displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
engineInstances: 2
- region: eastasia
engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
errorPercentage: 90
timeWindow: 60
المحتوى ذو الصلة
- تعرف على كيفية إنشاء اختبار التراجع التلقائي في سير عمل CI/CD.
- تعرف على كيفية تحديد معلمات اختبارات التحميل باستخدام البيانات السرية ومتغيرات البيئة.
- تعرف على كيفية تحميل نقاط النهاية الآمنة للاختبار.