مثال على الربط في LoadRunner مع web_reg_save_param
⚡ ملخص ذكي
تقوم خاصية الارتباط في LoadRunner بالتقاط قيمة خادم ديناميكية، مثل معرف الجلسة، وإعادة إدخالها في الطلبات اللاحقة بحيث يتم إعادة تشغيل برنامج VuGen المسجل بنجاح بدلاً من الفشل بسبب البيانات القديمة.
ما هو الارتباط؟
الارتباط، كما يوحي اسمه، هو آلية لتحديد العلاقة بين متغيرين أو كيانين. ويُعرّفه أحد القواميس بأنه "علاقة إحصائية بين متغيرين أو أكثر بحيث تصاحب التغيرات المنتظمة في المتغير الآخر تغيرات منتظمة في قيمة أحد المتغيرات".
ملاحظة العلامة التجارية: تم شحن هذه الأداة تحت اسم HP ثم Micro Focus LoadRunner، وهو الآن OpenText هندسة الأداء المهنيجميع دوال الارتباط أدناه لم تتغير، ويذكر البائع اسم مولد النصوص البرمجية. VuGen.
لماذا نحتاج إلى الارتباط؟
دعونا نفهم العلاقة من خلال السيناريو التالي.
لنفترض أنك تقوم بتسجيل نص باستخدام بي..
تتم عملية الاتصال بين العميل والخادم أثناء التسجيل على النحو التالي، ويلخص الرسم التخطيطي ذلك:
- أثناء التسجيل، يرسل العميل طلبًا إلى الخادم لبدء جلسة
- يتلقى الخادم الطلب ويخصص معرف الجلسة الجديد ABC
- يقوم العميل بتخزين معرف الجلسة ABC في البرنامج النصي.
- يبدأ العميل الجلسة باستخدام المعرف ABC ويرسل طلبًا إلى الخادم للسماح له بالتسجيل
- يتعرف الخادم على معرف ABC ويسمح للعميل بتسجيل البرنامج النصي
والآن، دعونا ندرس عملية الاتصال بين العميل والخادم أثناء إعادة التشغيل، كما هو موضح بعد هذه الخطوات:
- أثناء إعادة التشغيل، يرسل العميل طلبًا إلى الخادم لبدء الجلسة
- يتلقى الخادم الطلب ويخصص معرف الجلسة الجديد XYZ
- يبدأ العميل الجلسة باستخدام معرّف الجلسة المسجل مسبقًا ABC ويرسل طلبًا إلى الخادم للسماح له بالتسجيل
- الخادم غير قادر على التعرف على معرف ABC لأنه كان يتوقع معرف XYZ الذي خصصه وفشلت الجلسة.
نحتاج إلى حلٍّ قادر على التقاط وتحليل القيمة الديناميكية المُرسلة أثناء التشغيل، ثم إعادتها إلى الخادم. إليك كيف سيبدو اتصال العميل بالخادم مع هذا الحل، كما هو موضح في الرسم البياني أدناه:
- أثناء إعادة التشغيل، يرسل العميل طلبًا إلى الخادم لبدء الجلسة
- يتلقى الخادم الطلب، ويخصص معرف الجلسة الجديد ZZZ
- يقوم العميل بتوزيع معرف الجلسة الجديد ZZZ من الطلب.
- يرسل العميل طلبًا لبدء الجلسة بمعرف ZZZ
- يتعرف الخادم على معرف ZZZ ويسمح للعميل بإعادة تشغيل البرنامج النصي
هذا ليس سوى ارتباط.
يشرح الفيديو القصير أدناه نفس مشكلة التسجيل وإعادة التشغيل.
انقر اضغط هنا إذا لم يكن من الممكن الوصول إلى الفيديو
في حالة VuGen، فإن الارتباط هو علاقة ملزمة بين الاستجابة وأي طلب سابق.
توجد حالات عديدة يُبنى فيها الطلب على استجابة مُستلمة مسبقًا من الخادم، مثل مُعرّف الجلسة، أو تاريخ ووقت الخادم المُستجلب منه. تختلف هذه القيم في كل مرة تُشغّل فيها تطبيقًا أو تُسجّل نصًا برمجيًا. من البديهي أنه إذا كان تنفيذ النص البرمجي يعتمد على قيمة مُعادة من الخادم، فهذا يعني ضرورة إيجاد آلية "لالتقاط" استجابة الخادم وربطها بالطلبات التي يتوقعها الخادم. يُطلق على هذه العملية عادةً اسم "الربط" في LoadRunner.
وبكلمات بسيطة، الحل باستخدام الارتباط هو:
- التقاط قيمة الإخراج من خطوة
- استخدم القيمة الملتقطة أعلاه لتكون بمثابة مدخلات لجميع الخطوات اللاحقة
يتم تصنيف الارتباط إلى فئتين في VuGen/LoadRunner:
- الارتباط التلقائي
- الارتباط اليدوي
الارتباط التلقائي
يوفر LoadRunner آلية لإجراء الارتباط بسهولة بطريقة تلقائية.
سيتطلب منك برنامج VuGen تشغيل نص برمجي مسجل مرتين على الأقل حتى يتمكن من مقارنة القيم المختلفة في استجابة الخادم داخليًا.
يمكن تصنيف الارتباط التلقائي إلى ثلاث فئات:
- الكشف التلقائي عن الارتباط
- الارتباط القائم على القواعد
- ربط جميع البيانات
| اسم القاعدة | متى يجب استخدام |
| الكشف التلقائي عن الارتباط | اكتشاف البيانات الديناميكية وربطها لخوادم التطبيقات التي يدعمها LoadRunner |
| على أساس القواعد | يُستخدم عند العمل مع خادم تطبيق غير مدعوم والذي يُعرف سياقه. |
| ربط الكل | يساعد على ربط جميع البيانات الديناميكية بطريقة عمياء. |
على الرغم من أن الارتباط التلقائي يبدو أبسط، إلا أنه قد يكون عرضة للخطأ ويعمل في ما لا يزيد عن 5% من الحالات. يُنصح دائمًا باستخدام الارتباط اليدوي.
لتكوين الارتباط التلقائي في وقت التسجيل، قم بإجراء التكوين أدناه في إعداد وقت التسجيل بعد تسجيل البرنامج النصي.
انقر على تسجيل => خيارات التسجيل (أو اضغط على Ctrl + F7)، كما هو موضح في القائمة أدناه،
سيتم فتح النافذة أدناه:
انقر على الارتباط =>التكوين - سيتم فتح النافذة أدناه.
هنا، تحتاج إلى وضع علامة "محدد" مقابل كافة التطبيقات (ASPNET) وما إلى ذلك، والتي يتم استخدامها في التطبيق الموضوع الخاص بك. على الجانب الأيمن، يمكنك رؤية القواعد التي ستكتشف المرشحين المحتملين للارتباط، على سبيل المثال _VIEWSTATE. يمكنك أيضًا إضافة المزيد من التطبيقات أو القواعد المخصصة من خلال النقر على زر قاعدة جديدة.
يمكنك أيضًا النقر على "القواعد"، وسيظهر لك ما يلي:
لكي تعمل خاصية الربط التلقائي، يجب التأكد من تحديد خيار "فحص القواعد". إذا نقرت على "ربط القيم التي تم العثور عليها تلقائيًا"، فلن يطلب منك VuGen اختيار القيمة المناسبة بعد العثور على قيمة مرشحة للربط، بل سيقوم ببساطة بربطها.
سنتعرف على واجهة برمجة التطبيقات المستخدمة للارتباط لاحقًا. ومع ذلك، يُنصح باستخدام مقارنة HTML بدلاً من مقارنة النص.
بمجرد تحديد أي قواعد، انقر فوق زر موافق لإغلاق النوافذ.
انقر على زر شريط الأدوات الموضح هنا من القائمة، سيقوم VuGen بإعادة إنشاء البرنامج النصي (دون الحاجة إلى التسجيل) بالإعدادات الجديدة. سيضيف VuGen تلقائيًا جزءًا من التعليمات البرمجية اللازمة للتعامل مع الربط. سنتناول المثال بمزيد من التفصيل في قسم الربط اليدوي.
يرجى ملاحظة أنه إذا قمت بإجراء الارتباط يدويًا أو استخدام الارتباط التلقائي، فسوف يحتوي جزء التعليمات البرمجية على نفس البنية والوظيفة تمامًا.
خطوات الارتباط التلقائي للبرنامج النصي:
- سجل البرنامج النصي
- إعادة تشغيل البرنامج النصي
- تحديد القيم التي سيتم ربطها
- حدد القيم وانقر فوق زر الارتباط التلقائي
- تحقق من البرنامج النصي عن طريق التشغيل مرة أخرى. التشغيل الناجح يعني الارتباط الناجح.
تلميح:
- يساعد الارتباط في تشغيل البرنامج النصي الخاص بك بقيم مختلفة
- يؤدي الارتباط أيضًا إلى تقليل حجم البرنامج النصي الخاص بك
الارتباط اليدوي
الارتباط اليدوي يدور حول كتابة التعليمات البرمجية مباشرة في البرنامج النصي الخاص بك لتلبية القيم المتغيرة باستمرار. يمكننا تقسيمها إلى الخطوات التالية:
- تحديد القيمة المراد التقاطها
- ابحث عن حدود النص اليمنى واليسرى للقيمة المراد التقاطها (WEB)
- اكتشف أي تكرار لحدود النص يجب استخدامه
- أضف وظيفة web_reg_save_param إلى البرنامج النصي، أعلى جزء التعليمات البرمجية الذي يطلب الصفحة التي تحتوي على القيمة المراد التقاطها
- أضف اسم المعلمة والحد الأيسر والحد الأيمن والتواجد للدالة
- قم بتحديد القيمة الديناميكية في البرنامج النصي في كل مرة تحدث فيها
- التحقق من التنفيذ الصحيح
web_reg_save_param (" OracleAppJSESSIONID3", "LB/IC=JSESSIONID=", "RB/IC=;", "Ord=l", "Search=headers", "RelFrameId=l", LAST); web_reg_save_param("Siebel_Analytic_ViewState2", "LB/IC=ViewState\" value=\"", "RB/IC=\"", "Ord=1", "Search=Body", "RelFrameId=l", LAST);
Code ملاحظة: يظهر كلا المقتطفين تمامًا كما نُشرا. انتبه للترتيبات: Ord=l و RelFrameId=l استخدم حرف L صغير، وسيتوقع برنامج VuGen الرقم 1.
يمكن إجراء الارتباط اليدوي عن طريق مقارنة VUser. يمكن تقسيم الخطوات في طريقة مقارنة VUser للارتباط على النحو التالي:
- تحديد القيم الديناميكية التي تحتاج إلى الارتباط
- ابحث عن استجابة الخادم التي تحتوي على القيمة الديناميكية
- التقاط القيمة الديناميكية في المعلمة
- استبدل كل تكرار للقيمة الديناميكية بالمعلمة
- التحقق من التغييرات
فهم وظيفة web_reg_save_param
يوفر VuGen وظائف أو واجهات برمجة تطبيقات متعددة لربط المرشحين، بما في ذلك:
- web_reg_save_param
- web_reg_save_param_ex
- web_reg_save_param_regexp
- web_reg_save_param_xpath
ملاحظة حول الإصدار: الإصدارات الحالية من VuGen web_reg_save_param_ex باعتبارها الوظيفة التي خلفت الوظيفة الأصلية، و web_reg_save_param_regexp كما هو الحال عند تغيير الحدود نفسها. المثال الأصلي لا يزال يعمل.
بينما نقدم هنا مقدمة موجزة، لفهمٍ مفصلٍ للوظائف ومعاملاتها، افتح برنامج VuGen، واكتب دالة (أو استخدم صندوق أدوات الخطوات)، وحرّك المؤشر فوق الدالة واضغط على F1 – تعرّف على مساعدة VuGen واجعلها عادة. ستضطر إلى التعامل معها كثيراً عند العمل في هذا المجال.
وهنا نذهب مع تفاصيل الوظيفة:
web_reg_save_param (اسم المعلمة، الحد الأيسر، الحد الأيمن)
قائمة السمات
يجمع الجدول أدناه كل سمة تقبلها الدالة، وما إذا كانت إلزامية، وما الذي تتحكم فيه.
| السمة | مطلوب؟ | ماذا يفعل |
| تحويل | اختياري | HTML_TO_URL يحوّل البيانات المشفرة بتنسيق HTML إلى URLتنسيق البيانات المشفرة. تقوم الدالة HTML_TO_TEXT بتحويل البيانات المشفرة بتنسيق HTML إلى تنسيق نص عادي. |
| تجاهل عمليات إعادة التوجيه | اختياري، القيمة الافتراضية هي "تجاهل عمليات إعادة التوجيه = لا" | عند ضبط الخيار على "نعم" وكانت استجابة الخادم عبارة عن معلومات إعادة توجيه (رمز حالة HTTP 300-303، 307)، فلن يتم البحث في هذه الاستجابة. ينتقل طلب GET إلى الموقع المُعاد توجيهه، ويتم البحث في الاستجابة الواردة من هناك. |
| LB | مطلوب: | الحد الأيسر للمعامل أو البيانات الديناميكية. إذا لم تحدد قيمة للحد الأيسر، فسيتم استخدام جميع الأحرف من بداية البيانات كحد. معاملات الحد حساسة لحالة الأحرف. لمزيد من تخصيص نص البحث، استخدم علامة نصية واحدة أو أكثر. |
| غير معثور عليه | اختياري، القيمة الافتراضية "خطأ" | معالجة حالة عدم العثور على حد فاصل وإنشاء سلسلة نصية فارغة. يؤدي الخيار "Not found=error" إلى ظهور خطأ. أما الخيار "Not found=warning" (أو "Not found=empty" في الإصدارات السابقة) فيُعيّن قيمة عداد المعلمات إلى 0 ويستمر، وهو مثالي عند الرغبة في التحقق من العثور على السلسلة النصية دون إيقاف البرنامج النصي. عند تفعيل خيار "Continue on Error"، يستمر البرنامج النصي حتى في حالة "error"، ولكن يتم تسجيل ذلك في سجل الأحداث الموسّع. |
| ORD | اختياري، القيمة الافتراضية 1 | يشير هذا إلى الترتيب أو النسخة من المطابقة. إذا حددت "الكل"، فسيتم حفظ قيم المعلمات في مصفوفة. يُدعم استخدام "النسخة" بدلاً من "الترتيب" للتوافق مع الإصدارات السابقة، ولكنه أصبح الآن غير مُستحسن. |
| RB | مطلوب: | الحد الأيمن للمعامل أو البيانات الديناميكية. إذا لم تحدد قيمة RB، فسيتم استخدام جميع الأحرف حتى نهاية البيانات كحد فاصل. معاملات الحد حساسة لحالة الأحرف. لمزيد من تخصيص نص البحث، استخدم علامة نصية واحدة أو أكثر. |
| RelFrameID | اختياري | مستوى التسلسل الهرمي لصفحة HTML بالنسبة إلى المطلوب URLالقيم الممكنة هي الكل أو رقم. لا يدعم RelFrameID في البرامج النصية على مستوى واجهة المستخدم الرسومية. |
| SaveLen | اختياري، القيمة الافتراضية -1 | طول سلسلة فرعية من القيمة التي تم العثور عليها، بدءًا من الإزاحة المحددة، ليتم حفظها في المعامل. القيمة الافتراضية تحفظ في نهاية السلسلة. |
| SaveOffset | اختياري، القيمة الافتراضية 0 | إزاحة سلسلة فرعية من القيمة التي تم العثور عليها، لحفظها في المعامل. يجب أن تكون قيمة الإزاحة غير سالبة. |
| البحث | اختياري، الافتراضي الكل | نطاق البحث - مكان البحث عن البيانات المحددة. القيم الممكنة هي: العناوين (البحث في العناوين فقط)، والجسم (البحث في بيانات الجسم فقط، وليس العناوين)، ولا يوجد مورد (البحث في جسم HTML فقط، باستثناء جميع العناوين والموارد)، أو الكل (البحث في الجسم والعناوين والموارد). |
بمجرد إعادة تشغيل البرنامج النصي بسلاسة، أضف تحديد المعلمات والمعاملات وإعدادات وقت التشغيلقم بتشغيله من مراقبواقرأ النتيجة في تحليل الأداء كجزء من نطاق أوسع اختبار أداء و اختبار الحمل.







