الإجراءات في QTP/UFT مع المثال
⚡ ملخص ذكي
الإجراءات في UFT/QTP قسّم نص الاختبار إلى وحدات منطقية قابلة لإعادة الاستخدام، مما يُمكّن المختبرين من بناء وصيانة ومشاركة أنظمة التشغيل الآلي بسرعة أكبر. تشرح هذه الصفحة أنواع الإجراءات الثلاثة، وكيفية تقسيمها واستدعائها، وكيفية تمرير البيانات بينها.

ما هو الإجراء في UFT/QTP?
الإجراءات in UFT/QTP قسّم الاختبار إلى "وحدات منطقية" أو "عمليات تجارية". يجمع كل إجراء الخطوات التي تؤدي مهمة واحدة محددة، مثل تسجيل الدخول، أو البحث عن رحلة طيران، أو حجز تذكرة. تساعد الإجراءات في إنشاء نص برمجي أكثر مرونة وكفاءة.
عند إنشاء نص برمجي جديد، فإنه يتكون من إجراء واحد فقط. يمكنك إضافة المزيد من الإجراءات إلى Micro Focus الخاص بك. UFT يتم كتابة البرنامج النصي وفقًا للمتطلبات، ويحتفظ كل إجراء مضاف بمنطقه الخاص وبياناته المحلية منفصلة عن بقية الاختبار.
يُفيد تقسيم البرامج النصية الطويلة إلى إجراءات عند الحاجة إلى تعديل الاختبار. إذ يُمكن للمختبِر تحديث إجراء واحد، مثل تسلسل تسجيل الدخول، دون المساس بمنطق البحث أو إتمام عملية الشراء الموجود في إجراءات أخرى. كما يُحوّل هذا الفصل الإجراءات إلى لبنات بناء قابلة لإعادة الاستخدام، يُمكن للبرامج النصية الأخرى استدعاؤها بدلاً من تسجيل الخطوات نفسها مرة أخرى.
على سبيل المثال، ينقسم برنامج حجز الرحلات الجوية النموذجي إلى ثلاث مراحل: تسجيل الدخول، والبحث عن رحلة، وحجز تذكرة. لكل مرحلة خطواتها وبياناتها الخاصة، لذا لا يحتاج المختبر الذي يكتفي بالتحقق من تسجيل الدخول إلى تسجيل أو صيانة عملية الحجز على الإطلاق.
أنواع الإجراءات في UFT/QTPقابلة لإعادة الاستخدام، وغير قابلة لإعادة الاستخدام، وخارجية
UFT/QTP يدعم ثلاثة أنواع من الإجراءات، ويحدد النوع الذي تختاره ما إذا كان يمكن مشاركة الإجراء عبر البرامج النصية أو يبقى خاصًا بالاختبار الذي تم إنشاؤه فيه.
| نوع الإجراء | حيث يمكن أن يركض | قابل للتعديل في اختبار الاستدعاء |
|---|---|---|
| قابلة لإعادة الاستخدام | نفس الاختبار، أو عدة مرات، أو أي اختبار آخر | نعم، من الاختبار الذي يمتلكه |
| غير قابلة لإعادة الاستخدام | الاختبار الذي تم إنشاؤه فيه فقط، ومرة واحدة فقط. | نعم |
| عبوة خارجية قابلة لإعادة الاستخدام | تم استدعاؤها من اختبار آخر كإجراء مشترك ومخزن | لا، للقراءة فقط؛ النسخة المحلية من جدول البيانات فقط هي القابلة للتعديل. |
يصبح الإجراء القابل لإعادة الاستخدام العمل الخارجي في اللحظة التي يستدعي فيها اختبارٌ آخر هذا الإجراء بدلاً من الاختبار الذي يملكه، تبقى الإجراءات الخارجية للقراءة فقط في الاختبار المُستدعي، لأن الإجراء المشترك قد يُستخدم من قِبل عشرات البرامج النصية في آنٍ واحد، والسماح لكل مُستدعي بتعديل الخطوات سيؤدي إلى تعطيل البرامج الأخرى. مع ذلك، لا يزال بإمكانك تحديد معلمات الاستدعاء والعمل محليًا باستخدام نسخة من جدول البيانات الخاص به.
كقاعدة عامة، حافظ على الإجراء الجديد غير قابل لإعادة الاستخدام طالما أن منطقه لا يزال خاصًا باختبار واحد. Promoقم بجعله قابلاً لإعادة الاستخدام بمجرد أن يحتاج نص برمجي ثانٍ إلى نفس الخطوات، وتوقع منه أن يتصرف كإجراء خارجي للقراءة فقط في اللحظة التي يستدعيه فيها النص البرمجي الثاني فعليًا.
كيفية تقسيم ونسخ واستدعاء الإجراءات في UFT
مع ازدياد حدة الفعل، حافظ علىping إن وضع كل خطوة في مكان واحد يجعل من الصعب تصحيح الأخطاء وإعادة استخدام البرنامج النصي. UFT يتيح لك تقسيم إجراء موجود بطريقتين عندما يصبح غير عملي.
- انقسام مستقل (بين الأشقاء): ينقسم الإجراء المحدد إلى إجراءين منفصلين يتم تنفيذهما تباعاً، ويحتفظ كل منهما بـping جدول بيانات محلي خاص به.
- الانقسام المتداخل (الأب والابن): ينقسم الإجراء المحدد إلى إجراء رئيسي تستدعي خطوته الأخيرة الإجراء الفرعي الثاني، مما يحافظ على التبعية المنطقية بين الاثنين.
بمجرد وجود الإجراءات، UFT يُقدّم ثلاث طرق لإدخال إجراء في اختبار من خلال إدراج قائمة طعام:
- أضف دعوة لاتخاذ إجراء جديد: يُنشئ إجراءً جديدًا وفارغًا داخل الاختبار الحالي.
- أضف دعوة لنسخ الإجراء: ينسخ هذا الأمر إجراءً موجودًا بالكامل، بما في ذلك نقاط التحقق، والمعاملات، وعلامة تبويب جدول البيانات، إلى الاختبار المُستدعي. النسخة مستقلة تمامًا، لذا لا تؤثر التعديلات على الأصل ولا تتأثر به. يمكنك نسخ الإجراءات القابلة لإعادة الاستخدام وغير القابلة لإعادة الاستخدام.
- أضف دعوة إلى إجراء موجود: يُدرج هذا الإجراء استدعاءً للقراءة فقط لإجراء قابل لإعادة الاستخدام مُخزّن في اختبار آخر. ولا يمكن تعديله إلا في الاختبار الذي أُنشئ فيه، مما يحافظ على تزامن جميع المُستدعين ويُسهّل صيانة مجموعات الاختبارات الكبيرة.
كل مكالمة تُختزل إلى RunAction بيان في رأي الخبراء:
' Calls Action2, which is stored in Test2, running it for one iteration RunAction "Action2[Test2]", oneIteration
يتم تنفيذ الإجراء بعدد المرات التي تحددها خصائص استدعاء الإجراء. على سبيل المثال، إذا تم ضبط الإجراء 2 ليتم تنفيذه في كل تكرار لجدول بيانات الاختبار 2، ولكن الإجراء 1 المُستدعي في الاختبار 1 يتم تنفيذه مرة واحدة فقط، فإن الإجراء 2 سيظل يُنفذ مرة واحدة فقط، لأن الاستدعاء نفسه يتم تشغيله مرة واحدة فقط.
💡 نصيحة: عندما يتضمن الاختبار عدة إجراءات، افتح تدفق الاختبار اختر لوحة من قائمة العرض لسحب العناصر وإعادة ترتيبها. سيؤدي هذا إلى تغيير التسلسل الذي تظهر به العناصر. UFT ينفذ الإجراءات دون تعديل الخطوات داخل أي إجراء منفرد.
يعتمد الفيديو أدناه على نص تسجيل الدخول المكون من خمس خطوات والذي تم إنشاؤه في دروس سابقة لـ حجز الرحلة ويشرح بالتفصيل كيفية إنشاء الإجراءات وتقسيمها واستدعائها من البداية إلى النهاية. وهو أطول فيديو في هذه السلسلة. UFT/QTP سلسلة دروس تعليميةلذلك من المفيد تدوين الملاحظات أثناء المشاهدة.
انقر اضغط هنا إذا لم يكن من الممكن الوصول إلى الفيديو
كيفية تمرير المعاملات وتخزين قيم المخرجات بين الإجراءات
بالإضافة إلى استدعاء إجراء ما، تحتاج معظم البرامج النصية الحقيقية إلى نقل البيانات إليها وقراءة النتيجة مرة أخرى. UFT يمنح كل إجراء معلمات الإدخال والإخراج الخاصة به بالإضافة إلى عدة طرق للاحتفاظ بما يعيده.
تمرير المعلمات من وإلى إجراء
تماما مثل الوظائف أو الأساليب في لغات البرمجة، يمكن للإجراء تحديد المدخلات والمخرجات. المعلماتلا علاقة لهذه المعلمة بـ اختبار معلمات البيانات تمت تغطيتها سابقًا؛ تنتمي المعلمات هنا إلى الإجراء نفسه، وليس إلى عمود في جدول البيانات. قم بتكوينها من تحرير > إجراء > خصائص الإجراءأو بالنقر بزر الماوس الأيمن على الإجراء في عرض الكلمات الرئيسية. مرر القيم في الاستدعاء باستخدام هذه الصيغة:
' Passes an input value and captures the action's output into myResult RunAction "Action1", oneIteration, "testuser", myResult
تخزين قيمة مخرجات الإجراء
بحسب ما يحتاجه باقي البرنامج النصي، يمكنك الاحتفاظ بالقيمة المُعادة من الإجراء في أحد الأماكن الثلاثة التالية:
- متغير:
RunAction "Action1", oneIteration, "testuser", myResultيخزن المخرجات مباشرة فيmyResult. - An متغيرات البيئة: أنشئ متغيرًا معرفًا من قبل المستخدم ضمن ملف > الإعدادات > البيئةثم اكتب
RunAction "Action1", oneIteration, "testuser", Environment("env_var"). - عمود جدول البيانات:
RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet)يكتب النتيجة مباشرة في ورقة البيانات العامة.
صحائف البيانات العالمية والمحلية
تقوم الإجراءات بقراءة وكتابة بيانات الاختبار من خلال نوعين من الجداول. ورقة البيانات العالمية يُعد هذا الملف فريدًا للاختبار بأكمله؛ إذ يمكن لأي إجراء القراءة منه أو الكتابة إليه، ويُسمى دائمًا "عام". ورقة البيانات المحلية هو فريد لكل إجراء، ويسمى باسم ذلك الإجراء، ولا يمكن لأي إجراء آخر قراءته أو كتابته.
الخروج من إجراء والتحكم في التكرار
عندما تتطلب خطوة ما إيقاف إجراء ما مبكراً بدلاً من تركه يستمر حتى اكتماله، UFT يتضمن أربعة بيانات:
ExitAction— يوقف الإجراء الحالي فقط.ExitActionIteration— يوقف التكرار الحالي للإجراء وينتقل إلى التكرار التالي.ExitRun— يوقف تشغيل الاختبار بالكامل فوراً.ExitGlobalIteration— يوقف عملية الاختبار العالمية الحالية وينتقل إلى العملية التالية.
أثناء تنفيذ أ UFT/QTP سيناريو عند استخدام الإجراءات، ضع في اعتبارك التكرارات العامة والتكرارات المحلية، حيث يؤثر كلاهما على عدد مرات تنفيذ الإجراء. يمكنك تغيير عدد مرات تكرار الإجراء المُستدعى عن طريق فتح خصائص استدعاء الإجراء > تشغيل قم بتفعيل علامة التبويب وتعيين وضع التكرار هناك.
⚠ مأزق شائع: الإجراء المُستدعى، المُعدّ للتنفيذ في كل تكرار محلي، ولكنه يُفعّل من إجراء رئيسي يُنفّذ مرة واحدة فقط، سيُنفّذ مرة واحدة فقط. تأكد من عدد التكرارات العامة للإجراء الرئيسي وخصائص استدعاء الإجراء للإجراء الفرعي قبل افتراض تكرار الإجراء المُستدعى.
