مشاركة عبر


قراءة البيانات من ملف CSV في JMeter باستخدام Azure Load Testing

في هذه المقالة، ستتعلم كيفية قراءة البيانات من ملف قيمة مفصولة بفواصل (CSV) في البرنامج النصي للاختبار باستخدام Azure Load Testing. استخدم البيانات من ملف CSV خارجي لجعل البرنامج النصي لاختبار JMeter أو Locust قابلا للتكوين. على سبيل المثال، يمكنك التكرار على جميع العملاء في ملف CSV لتمرير تفاصيل العميل إلى طلب واجهة برمجة التطبيقات.

في JMeter، يمكنك استخدام عنصر تكوين مجموعة بيانات CSV في البرنامج النصي للاختبار لقراءة البيانات من ملف CSV. في Locust، يمكنك فتح ملف CSV في البرنامج النصي للاختبار الخاص بك، وقراءة البيانات المطلوبة، وتمريرها إلى الطلبات.

لقراءة البيانات من ملف خارجي في Azure Load Testing، يجب عليك تحميل الملف الخارجي جنبا إلى جنب مع البرنامج النصي للاختبار في اختبار التحميل. إذا قمت بتوسيع نطاق الاختبار عبر مثيلات محرك اختبار متوازية متعددة، فيمكنك اختيار تقسيم بيانات الإدخال بالتساوي عبر هذه المثيلات.

ابدأ باستنساخ مشروع العينات أو تنزيله من GitHub.

Prerequisites

  • حساب Azure مع اشتراك نشط. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
  • مورد اختبار تحميل Azure. لإنشاء مورد اختبار تحميل، راجع إنشاء اختبار تحميل وتشغيله.
  • برنامج نصي لاختبار Apache JMeter (JMX) أو برنامج نصي للجراد.
  • (اختياري) واجهة المستخدم الرسومية Apache JMeter لتأليف البرنامج النصي للاختبار. لتثبيت Apache JMeter، راجع بدء استخدام Apache JMeter.

تحديث البرنامج النصي للاختبار لقراءة بيانات CSV

في هذا القسم، يمكنك تكوين البرنامج النصي للاختبار للإشارة إلى ملف CSV الخارجي. يمكنك استخدام عنصر تكوين مجموعة بيانات CSV لقراءة البيانات من ملف CSV.

هام

يقوم Azure Load Testing بتحميل ملف JMX وجميع الملفات ذات الصلة في مجلد واحد. عند الإشارة إلى ملف خارجي في البرنامج النصي JMeter الخاص بك ، تحقق من عدم وجود مراجع مسار ملف في البرنامج النصي للاختبار الخاص بك.

بالنسبة للاختبارات المستندة إلى JMeter، قم بتعديل البرنامج النصي JMeter باستخدام واجهة المستخدم الرسومية (GUI) ل Apache JMeter:

  1. حدد عنصر تكوين مجموعة بيانات CSV في البرنامج النصي للاختبار.

  2. قم بتحديث معلومات اسم الملف وإزالة أي مرجع لمسار الملف.

  3. اختياريا، أدخل أسماء حقول CSV في أسماء المتغيرات، عند تقسيم ملف CSV عبر محركات الاختبار.

    لا يحتفظ Azure Load Testing بصف الرأس عند تقسيم ملف CSV. قم بتوفير أسماء المتغيرات في عنصر تكوين مجموعة بيانات CSV بدلا من استخدام صف الرأس.

    لقطة شاشة تعرض واجهة مستخدم JMeter لتكوين عنصر تكوين مجموعة بيانات C SV.

  4. كرر الخطوات السابقة لكل عنصر تكوين مجموعة بيانات CSV في البرنامج النصي.

  5. احفظ البرنامج النصي JMeter وقم بتحميل البرنامج النصي إلى اختبار التحميل الخاص بك.

بالنسبة للاختبارات المستندة إلى الجراد، قم بتحديث البرنامج النصي للجراد عن طريق فتحه محررا من اختيارك.

  1. في القسم الذي تفتح فيه الملف، قم بتحديث معلومات اسم الملف وإزالة أي مرجع لمسار الملف.

  2. احفظ البرنامج النصي Locust وقم بتحميل البرنامج النصي إلى اختبار التحميل الخاص بك.

تحميل ملف CSV إلى اختبار التحميل الخاص بك

عند الرجوع إلى ملفات خارجية من البرنامج النصي للاختبار ، تأكد من تحميل جميع هذه الملفات جنبا إلى جنب مع البرنامج النصي للاختبار. عند بدء اختبار التحميل، يقوم Azure Load Testing بنسخ جميع الملفات إلى مجلد واحد في كل مثيل من مثيلات محركات الاختبار.

هام

لا يحتفظ Azure Load Testing بصف الرأس عند تقسيم ملف CSV. قبل إضافة ملف CSV إلى اختبار التحميل، قم بإزالة صف الرأس من الملف.

لإضافة ملف CSV إلى اختبار التحميل باستخدام مدخل Microsoft Azure:

  1. في مدخل Microsoft Azure، انتقل إلى مورد اختبار تحميل Azure.

  2. في الجزء الأيمن، حدد الاختبارات لعرض قائمة بالاختبارات.

  3. حدد الاختبار الخاص بك من القائمة عن طريق تحديد خانة الاختيار، ثم حدد تحرير.

    لقطة شاشة تعرض قائمة اختبارات التحميل وزر

  4. في علامة التبويب خطة الاختبار ، حدد ملف CSV من جهاز الكمبيوتر الخاص بك، ثم حدد تحميل لتحميل الملف إلى Azure.

    إذا كنت تستخدم اختبار تحميل يستند إلى عنوان URL، يمكنك إدخال أسماء المتغيرات كقائمة مفصولة بفواصل في عمود المتغيرات .

    لقطة شاشة لعلامة التبويب خطة الاختبار في جزء تحرير الاختبار.

    إذا كان حجم ملف CSV أكبر من 50 ميغابايت، فقم بضغط الملف. يجب أن يكون حجم الملف المضغوط أقل من 50 ميغابايت. يقوم Azure Load Testing تلقائيا بإلغاء ضغط الملف أثناء تشغيل الاختبار. يسمح فقط بخمسة أدوات مضغوطة بحد أقصى 1000 ملف في كل مضغوط وحجم إجمالي غير مضغوط يبلغ 1 غيغابايت.

  5. حدد تطبيق لتعديل الاختبار واستخدام التكوين الجديد عند إعادة تشغيله.

Tip

إذا كنت تستخدم اختبار تحميل يستند إلى عنوان URL، يمكنك الرجوع إلى القيم من ملف بيانات إدخال CSV في طلبات HTTP باستخدام بناء $(variable) الجملة.

تقسيم بيانات إدخال CSV عبر محركات الاختبار

بشكل افتراضي، يقوم Azure Load Testing بنسخ ملفات الإدخال الخاصة بك ومعالجتها دون تعديل عبر جميع مثيلات محرك الاختبار. بشكل افتراضي، يعالج كل محرك اختبار ملف CSV بالكامل. بدلا من ذلك، يمكنك Azure Load Testing من تقسيم بيانات إدخال CSV بالتساوي عبر جميع مثيلات المحرك. إذا كان لديك ملفات CSV متعددة، يتم تقسيم كل ملف بالتساوي.

على سبيل المثال، إذا كان لديك ملف إدخال CSV كبير للعميل، ويتم تشغيل اختبار التحميل على 10 محركات اختبار متوازية، فإن كل مثيل يعالج 1/10 من العملاء.

هام

لا يحتفظ Azure Load Testing بصف الرأس عند تقسيم ملف CSV.

  1. قم بتكوين البرنامج النصي للاختبار لاستخدام أسماء المتغيرات عند قراءة ملف CSV.
  2. قم بإزالة صف الرأس من ملف CSV قبل إضافته إلى اختبار التحميل.

لتكوين اختبار التحميل لتقسيم ملفات CSV الإدخالية:

  1. انتقل إلى علامة التبويب خطة الاختبار لاختبار التحميل الخاص بك.

  2. حدد تقسيم CSV بالتساوي بين محركات الاختبار.

    لقطة شاشة تعرض خانة الاختيار لتمكين تقسيم ملفات الإدخال C S V عند تكوين اختبار في مدخل Microsoft Azure.

  3. حدد تطبيق لتأكيد تغييرات التكوين.

    في المرة التالية التي تقوم فيها بتشغيل الاختبار، يقوم Azure Load Testing بتقسيم ملف CSV ومعالجته بالتساوي عبر محركات الاختبار.

استكشاف الأخطاء وإصلاحها

فشلت حالة الاختبار وسجل الاختبار يحتوي على File {my-filename} must exist and be readable

عند اكتمال اختبار التحميل بالحالة فشل، يمكنك تنزيل سجلات الاختبار.

عندما تتلقى رسالة File {my-filename} must exist and be readable خطأ في سجل الاختبار، تعذر العثور على ملف CSV الإدخال عند تشغيل البرنامج النصي للاختبار.

يخزن Azure Load Testing جميع ملفات الإدخال جنبا إلى جنب مع البرنامج النصي للاختبار. عند الرجوع إلى ملف CSV للإدخال في البرنامج النصي للاختبار، تأكد من عدم تضمين مسار الملف، ولكن استخدم اسم الملف فقط.

يعرض مقتطف التعليمات البرمجية التالي مقتطفا من ملف JMeter يستخدم عنصرا CSVDataSet لقراءة ملف الإدخال. لاحظ أن الملف filename لا يتضمن مسار الملف.

<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
    <stringProp name="filename">websites.csv</stringProp>
    <stringProp name="fileEncoding">UTF-8</stringProp>
    <stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
    <boolProp name="ignoreFirstLine">true</boolProp>
    <stringProp name="delimiter">,</stringProp>
    <boolProp name="quotedData">false</boolProp>
    <boolProp name="recycle">false</boolProp>
    <boolProp name="stopThread">true</boolProp>
    <stringProp name="shareMode">shareMode.all</stringProp>
    <stringProp name="TestPlan.comments">Read all records from the CSV file -  stop thread at end of file</stringProp>
</CSVDataSet>