تكوين اختبار تحميل في 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 نوع الاختبار. القيم الممكنة:
  • URL: اختبار التحميل المستند إلى عنوان URL
  • JMX: اختبار التحميل المستند إلى JMeter
testPlan سلسلة Y مرجع إلى ملف خطة الاختبار.
  • إذا : testType: JMXمسار نسبي إلى البرنامج النصي لاختبار JMeter.
  • إذا : testType: URLمسار نسبي إلى ملف JSON للطلبات.
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 عام وموازن تحميل ومجموعة أمان الشبكة أثناء اختبار نقطة نهاية خاصة. لمزيد من المعلومات، راجع كيفية تحميل نقاط النهاية المستضافة بشكل خاص.

تحميل نموذج تكوين الاختبار

يحتوي مقتطف 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وJSONJavaScriptHTML.XML
method سلسلة أسلوب HTTP لاستدعاء نقطة النهاية. القيم المدعومة هي: GETو POSTPUTو DELETEوPATCHHEAD.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 تصاعد إجمالي المدة بالثوان للحفاظ على حمل الارتفاع.