الارتباط في LoadRunner مع مثال Web_Reg_Save_Param

ما هو الارتباط؟

الارتباط، كما يوحي الاسم، هو آلية لتحديد العلاقة بين متغيرين أو كيانين. ويعرفها القاموس بأنها "علاقة إحصائية بين متغيرين أو أكثر بحيث تصاحب التغيرات المنهجية في الآخر تغيرات منهجية في قيمة متغير واحد".

لماذا نحتاج إلى الارتباط؟

دعونا نفهم العلاقة المشتركة مع فولوwing السيناريو.

ضع في اعتبارك أنك تقوم بتسجيل برنامج نصي باستخدام LoadRunner.

التواصل بين العميل والخادم

  1. أثناء التسجيل، يرسل العميل طلبًا إلى الخادم لبدء الجلسة
  2. يتلقى الخادم الطلب ويخصص معرف الجلسة الجديد ABC
  3. يقوم العميل بتخزين معرف الجلسة ABC في البرنامج النصي.
  4. يبدأ العميل الجلسة باستخدام معرف ABC ويرسل طلبًا إلى الخادم للسماح له بالتسجيل
  5. يتعرف الخادم على معرف ABC ويسمح للعميل بتسجيل البرنامج النصي

الارتباط أثناء التسجيل

  1. الآن، دعونا ندرس التواصل بين العميل والخادم أثناء إعادة التشغيل
  2. أثناء إعادة التشغيل، يرسل العميل طلبًا إلى الخادم لبدء الجلسة
  3. يتلقى الخادم الطلب ويخصص معرف الجلسة الجديد XYZ
  4. يبدأ العميل الجلسة بمعرف الجلسة المسجل مسبقًا ABC ويرسل طلبًا إلى الخادم للسماح له بالتسجيل
  5. الخادم غير قادر على التعرف على معرف ABC لأنه كان يتوقع معرف XYZ الذي خصصه وفشلت الجلسة.

الارتباط أثناء الإعادة

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

  1. أثناء إعادة التشغيل، يرسل العميل طلبًا إلى الخادم لبدء الجلسة
  2. يتلقى الخادم الطلب، ويخصص معرف الجلسة الجديد ZZZ
  3. يقوم العميل بتوزيع معرف الجلسة الجديد ZZZ من الطلب.
  4. يرسل العميل طلبًا لبدء الجلسة بمعرف ZZZ
  5. يتعرف الخادم على معرف ZZZ ويسمح للعميل بإعادة تشغيل البرنامج النصي

نحن بحاجة إلى الارتباط

هذا ليس سوى ارتباط.

انقر هنا إذا لم يكن من الممكن الوصول إلى الفيديو

في حالة VUGen، الارتباط هو علاقة ملزمة بين الاستجابة وأي طلب سابق.

هناك مواقف مختلفة عندما يعتمد الطلب على استجابة تم تلقيها مسبقًا من الخادم، مثل معرف الجلسة وتاريخ/وقت الخادم الذي يتم جلبه من الخادم. تختلف هذه القيم في كل مرة تقوم فيها بتشغيل تطبيق أو تسجيل برنامج نصي. من الواضح، إذا كان تنفيذ البرنامج النصي يعتمد على قيمة يتم إرجاعها بواسطة الخادم، فهذا يعني أنك بحاجة إلى العثور على آلية يمكنك من خلالها "التقاط" استجابة الخادم وإرفاق تلك الطلبات التي يتوقعها الخادم. يُطلق على هذا عادةً اسم الارتباط في LoadRunner.

وبكلمات بسيطة، الحل باستخدام الارتباط هو:

  1. التقاط قيمة الإخراج من خطوة
  2. استخدم القيمة الملتقطة أعلاه لتكون بمثابة مدخلات لجميع الخطوات اللاحقة

يتم تصنيف الارتباط إلى فئتين في VUGen/LoadRunner:

  • الارتباط التلقائي
  • الارتباط اليدوي

الارتباط التلقائي

يوفر LoadRunner آلية لإجراء الارتباط بسهولة بطريقة تلقائية.

سيطلب منك VUGen تشغيل برنامج نصي مسجل مرتين على الأقل حتى يتمكن من مقارنة القيم المختلفة في استجابة الخادم داخليًا.

يمكن تصنيف الارتباط التلقائي إلى ثلاث فئات:

  • الكشف التلقائي عن الارتباط
  • الارتباط القائم على القواعد
  • ربط جميع البيانات
اسم القاعدة متى يجب استخدام
الكشف التلقائي عن الارتباط اكتشاف وربط البيانات الديناميكية لخوادم التطبيقات التي يدعمها HP LoadRunner
على أساس القواعد يُستخدم عند العمل مع خادم تطبيق غير مدعوم والذي يُعرف سياقه.
ربط الكل يساعد على ربط جميع البيانات الديناميكية بطريقة عمياء.

على الرغم من أن الارتباط التلقائي يبدو أبسط، إلا أنه قد يكون عرضة للخطأ ويعمل في ما لا يزيد عن 5% من الحالات. يُنصح دائمًا باستخدام الارتباط اليدوي.

لتكوين الارتباط التلقائي في وقت التسجيل، قم بإجراء التكوين أدناه في إعداد وقت التسجيل بعد تسجيل البرنامج النصي.

انقر فوق "تسجيل" =>"خيارات التسجيل" (أو انقر فوق Ctrl +F7)،

الارتباط التلقائي

سيتم فتح النافذة أدناه:

الارتباط التلقائي

انقر على الارتباط =>التكوين - سيتم فتح النافذة أدناه.

الارتباط التلقائي

هنا، تحتاج إلى وضع علامة "محدد" مقابل كافة التطبيقات (ASPNET) وما إلى ذلك، والتي يتم استخدامها في التطبيق الموضوع الخاص بك. على الجانب الأيمن، يمكنك رؤية القواعد التي ستكتشف المرشحين المحتملين للارتباط، على سبيل المثال _VIEWSTATE. يمكنك أيضًا إضافة المزيد من التطبيقات أو القواعد المخصصة من خلال النقر على زر قاعدة جديدة.

يمكنك أيضًا النقر على "القواعد"، وسيظهر لك ما يلي:

الارتباط التلقائي

لكي يعمل الارتباط التلقائي، تحتاج إلى التأكد من وضع علامة "فحص القواعد" على أنها محددة. إذا قمت بالنقر فوق ربط القيم التي تم العثور عليها تلقائيًا، فلن يطالبك VUGen بالاختيار بمجرد العثور على مرشح الارتباط، بدلاً من ذلك، سيقوم فقط بربطها.

سوف نفهم واجهة برمجة التطبيقات (API) المستخدمة للارتباط later. ومع ذلك، فمن المستحسن استخدام مقارنة HTML بدلاً من مقارنة النص.

بمجرد تحديد أي قواعد، انقر فوق الزر "موافق" لإغلاق windows.

انقر على الارتباط التلقائيمن القائمة وسيقوم VUGen بإعادة إنشاء البرنامج النصي (دون الحاجة إلى التسجيل) بتكوينات جديدة. سيضيف VUGen تلقائيًا الجزء المطلوب من التعليمات البرمجية للتعامل مع الارتباط. سننظر إلى العينة بمزيد من التفاصيل في الارتباط اليدوي.

يرجى ملاحظة أنه إذا قمت بإجراء الارتباط يدويًا أو استخدام الارتباط التلقائي، فسوف يحتوي جزء التعليمات البرمجية على نفس البنية والوظيفة تمامًا.

خطوات الارتباط التلقائي للبرنامج النصي:

  1. سجل البرنامج النصي
  2. إعادة تشغيل البرنامج النصي
  3. تحديد القيم التي سيتم ربطها
  4. حدد القيم وانقر فوق زر الارتباط التلقائي
  5. تحقق من البرنامج النصي عن طريق التشغيل مرة أخرى. التشغيل الناجح يعني الارتباط الناجح.

تلميح:

  • يساعد الارتباط في تشغيل البرنامج النصي الخاص بك بقيم مختلفة
  • يؤدي الارتباط أيضًا إلى تقليل حجم البرنامج النصي الخاص بك

الارتباط اليدوي

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

  1. تحديد القيمة المراد التقاطها
  2. ابحث عن حدود النص اليمنى واليسرى للقيمة المراد التقاطها (WEB)
  3. اكتشف أي تكرار لحدود النص يجب استخدامه
  4. أضف وظيفة web_reg_save_param إلى البرنامج النصي، أعلى جزء التعليمات البرمجية الذي يطلب الصفحة التي تحتوي على القيمة المراد التقاطها
  5. أضف اسم المعلمة والحد الأيسر والحد الأيمن والتواجد للدالة
  6. قم بتحديد القيمة الديناميكية في البرنامج النصي في كل مرة تحدث فيها
  7. التحقق من التنفيذ الصحيح
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);

يمكن إجراء الارتباط اليدوي عن طريق مقارنة VUser. يمكن تقسيم الخطوات في طريقة مقارنة VUser للارتباط على النحو التالي:

  1. تحديد القيم الديناميكية التي تحتاج إلى الارتباط
  2. ابحث عن استجابة الخوادم التي تحتوي على القيمة الديناميكية
  3. التقاط القيمة الديناميكية في المعلمة
  4. استبدل كل تكرار للقيمة الديناميكية بالمعلمة
  5. التحقق من التغييرات

فهم وظيفة 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، واكتب الوظيفة (أو استخدم أداة الخطواتbox)، حرك المؤشر على الوظيفة وانقر فوق F1 - تعرف على مساعدة VUGen واكتسب عادة. سيكون عليك التعامل معها كثيرًا عند العمل في الصناعة.

هنا نذهب مع الدالة ديtails:

web_reg_save_param (اسم المعلمة، الحد الأيسر، الحد الأيمن)

قائمة السمات

تحويل: القيم المحتملة هي:

HTML_TO_URL: تحويل البيانات المشفرة بـ HTML إلى تنسيق بيانات مشفر بعنوان URL

HTML_TO_TEXT: تحويل البيانات المشفرة بتنسيق HTML إلى تنسيق نص عادي؛ هذه السمة اختيارية.

تجاهل عمليات إعادة التوجيه: إذا تم تحديد "تجاهل عمليات إعادة التوجيه = نعم" وكانت استجابة الخادم عبارة عن معلومات إعادة التوجيه (رمز حالة HTTP 300-303، 307)، فلن يتم البحث عن الاستجابة. بدلاً من ذلك، بعد تلقي استجابة إعادة التوجيه، يتم إرسال طلب GET إلى الموقع المعاد توجيهه، ويتم إجراء البحث على الاستجابة من ذلك الموقع.

هذه السمة اختيارية. الافتراضي هو "تجاهل عمليات إعادة التوجيه = لا".

رطل: الحد الأيسر للمعلمة أو البيانات الديناميكية. إذا لم تحدد قيمة LB، فسيتم استخدام كافة الأحرف من بداية البيانات كحد. معلمات الحدود حساسة لحالة الأحرف. لتخصيص نص البحث بشكل أكبر، استخدم علامة نصية واحدة أو أكثر. هذه السمة مطلوبة. راجع قسم وسيطات الحدود.

غير معثور عليه: خيار المعالجة عند عدم العثور على حد، ويتم إنشاء سلسلة فارغة.

"لم يتم العثور على خطأ"، القيمة الافتراضية، تؤدي إلى ظهور خطأ عند عدم العثور على حد.

"لم يتم العثور على = تحذير" ("لم يتم العثور على = فارغ" في الإصدارات السابقة)، لا يصدر خطأ. إذا لم يتم العثور على الحد، فإنه يقوم بتعيين عدد المعلمات إلى 0 ويستمر في تنفيذ البرنامج النصي. يعد خيار "التحذير" مثاليًا إذا كنت تريد معرفة ما إذا تم العثور على السلسلة، ولكنك لا تريد أن يفشل البرنامج النصي.

ملاحظات: إذا تم تمكين "متابعة الخطأ" للبرنامج النصي، فحتى عند تعيين NOTFOUND على "خطأ"، يستمر البرنامج النصي عند عدم العثور على الحد، ولكن تتم كتابة رسالة خطأ في ملف السجل الموسع.

هذه السمة اختيارية أيضًا.

ORD: يشير إلى الموضع الترتيبي أو مثيل المطابقة. المثيل الافتراضي هو 1. إذا قمت بتحديد "الكل"، فإنه يحفظ قيم المعلمات في مصفوفة. هذه السمة اختيارية.

ملاحظة: يتم دعم استخدام المثيل بدلاً من ORD للتوافق مع الإصدارات السابقة، ولكن تم إهماله.

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

RelFrameID: مستوى التسلسل الهرمي لصفحة HTML بالنسبة إلى عنوان URL المطلوب. القيم المحتملة هي الكل أو رقم. انقر فوق سمة RelFrameID للحصول على وصف تفصيلي. هذه السمة اختيارية.

ملحوظة: RelFrameID غير مدعوم في البرامج النصية على مستوى واجهة المستخدم الرسومية.

SaveLen: طول السلسلة الفرعية للقيمة التي تم العثور عليها، من الإزاحة المحددة، لحفظها في المعلمة. هذه السمة اختيارية. القيمة الافتراضية هي -1، مما يشير إلى الحفظ حتى نهاية السلسلة.

SaveOffset: إزاحة سلسلة فرعية من القيمة التي تم العثور عليها لحفظها في المعلمة. يجب أن تكون قيمة الإزاحة غير سالبة. الافتراضي هو 0. هذه السمة اختيارية.

بحث: نطاق البحث - مكان البحث عن البيانات المحددة. القيم المحتملة هي الرؤوس (البحث في الرؤوس فقط)، أو النص (البحث في بيانات النص فقط، وليس الرؤوس)، أو لا يوجد مورد (البحث في نص HTML فقط، باستثناء جميع الرؤوس والموارد)، أو الجميع (نص البحث والعناوين والموارد). القيمة الافتراضية هي الكل. هذه السمة اختيارية ولكنها مفضلة بشكل عام.