نصائح وحيل Squish Qt: العمل مع الكائنات بدون خصائص فريدة
في Spyrosoft، نعلم أنه عندما يتعلق الأمر باختبار البرمجيات، فإن الكفاءة والدقة أمران بالغا الأهمية. وهنا يأتي دور Squish، وهو إطار عمل متعدد الاستخدامات لاختبار واجهات المستخدم الرسومية (GUI) بشكل آلي. في هذا المقال، نشارك نصائح وحيلًا لبعض المشكلات الأكثر شيوعًا في Squish عند العمل على مشاريع أتمتة اختبارات Qt. كما نستكشف كيفية التعامل مع الكائنات التي لا تمتلك الخصائص المعتادة التي يعتمد عليها مختبرو البرمجيات عادةً.
ما هي تطبيقات Qt؟
يتم تطوير تطبيقات Qt باستخدام إطار عمل Qt.Qt هو إطار عمل متعدد المنصات قائم على C++ يوفر مجموعة واسعة من الأدوات والمكتبات لإنشاء واجهات المستخدم الرسومية (GUIs) ومكونات برمجية أخرى لتطبيقات سطح المكتب والجوال والويب.
الأكبر ميزة تطبيقات Qt هي قدرتها على العمل على أنظمة تشغيل متعددة، بما في ذلك Windows وmacOS وLinux وAndroid وiOS. فمع تطبيقات Qt، يمكن للمطورين كتابة الكود مرة واحدة ونشره عبر منصات مختلفة. ولا حاجة للتعامل مع تعديلات جوهرية في الكود.
بفضل هذه المرونة، Qt يُستخدم بشكل شائع في مختلف الصناعات. وهو شائع بشكل خاص لبناء تطبيقات متعددة المنصات ذات واجهات رسومية غنية.
ما هو Squish؟
Squish هي أداة اختبار آلية. تُستخدم بشكل أساسي لاختبار واجهات المستخدم الرسومية (GUIs) في التطبيقات المطوّرة باستخدام Qt. تُعد Squish إحدى أدوات الاختبار الرئيسية لدينا، وذلك بشكل رئيسي بفضل الفوائد الكبيرة التي توفرها هذه الأداة:
- قدرات متعددة المنصات: يدعم Squish مجموعة واسعة من المنصات، بما في ذلك Windows وmacOS وLinux/Unix وiOS وAndroid والعديد من الأنظمة المدمجة. ونتيجة لذلك، يمكننا استخدام عمليات الاختبار نفسها عبر منصات مختلفة.
- دعم تقنيات واجهة المستخدم الرسومية المتنوعة: نستخدم Squish لاختبار التطبيقات المبنية باستخدام تقنيات واجهات المستخدم الرسومية المختلفة، مثل Qt وJava وWindows Forms والويب (HTML5/JavaScript) وغيرها.
- الاختبار الآلييمكن دمج Squish في عمليات CI/CD، مما يجعل الاختبار الآلي ممكنًا وفعّالًا. وبهذه الطريقة، يمكننا التعامل مع المشكلات المحتملة في وقت مبكر من عملية التطوير.
- Squish GUI Tester: يُعد Squish GUI Tester أداة متعددة الاستخدامات لتنفيذ الاختبارات الآلية عبر سيناريوهات متنوعة، بما في ذلك الاختبارات المجمعة الموزعة والتطبيقات الهجينة. وهو يدعم لغات برمجة نصية متعددة ويوفر بيئة بديهية للتسجيل وإعادة التشغيل، مما يعزز عملية الاختبار.
هل ترغب في معرفة المزيد عن عرض خدمات Qt لدينا؟
اعرف المزيدSquish for Qt – التعامل مع عقبات أتمتة ضمان الجودة
الآن بعد أن غطينا الأساسيات، دعنا نلقي نظرة على تحدٍ شائع في أتمتة الاختبارات. وهو عندما لا يكون للكائن الذي نريد استخدامه في نص برمجي معرّف فريد.
يُعد إنتاج نصوص اختبارية مستقرة وقوية أمرًا بالغ الأهمية للتغلب على عقبات أتمتة ضمان الجودة هذه. فهذه النصوص تبسّط إنشاء الاختبارات وصيانتها واستكشاف الأخطاء وإصلاحها، لا سيما عند الاستفادة من خرائط الكائنات وأدوات التعرف على الكائنات.
أثناء العمل مع Squish، يمكننا البحث عن خصائص كائنات فريدة أخرى واستخدامها لإنشاء أتمتة دقيقة وموثوقة. ومع ذلك، في بعض الأحيان نفتقد كلا هذين المكونين الأساسيين للأتمتة الناجحة. على سبيل المثال، قد يحدث هذا بسبب عدم التعاون من المطورين أو لمجرد أن بعضًا من QML الخصائص التي تسبب الأثر الجانبي المتمثل في وجود عناصر متعددة بنفس الخصائص.

في هذا المثال، يحاول مطوّر QML إنشاء قائمة من الأزرار مع بعض التسميات. بالطبع، يمكنك تعديل ذلك لإنشاء معرّف فريد. لكن أتمتة الاختبار غالبًا ما تبدأ متأخرة في المشروع، عندما يكون هناك بالفعل الكثير من الديون التقنية.
مخرجات الكود أعلاه تبدو هكذا:

الآن، إذا أردنا البدء في أتمتة الاختبارات على واجهة مستخدم كهذه، فينبغي أن نتبع المتطلبات المستلمة، التي توجّهنا إلى التفاعل مع الزر المجاور لعنصر القائمة 1.
بعد فتح Squish واستخدام المحدِّد على المفتاح المجاور لعنصر القائمة 1، نحصل على هذا كقاموس محدِّدات:

وكما نرى، هناك معرّف عام (ID) مشترك بين جميع عناصر التبديل في تلك القائمة. ولا يمكننا استخدامه لأن خاصية التكرار (occurrence) تسبب عدم استقرار في الاختبارات بمجرد إضافة أي شيء إلى تلك القائمة.
التعامل مع اختبارات واجهة المستخدم الرسومية في Squish for Qt
في الماضي، نشرت مدونة Froglogic تعليمات برمجية لاجتياز شجرة QML للعثور على العناصر الفرعية للكائن المحدد والكائنات المتوقعة. كان المنشور نفسه مفيدًا حقًا، ولكن مع تحسين بسيط، يمكن أن يصبح أداة ممتازة للتعامل مع مشكلات مثل تلك الواردة في المثال أعلاه.
إليك الكود الخاص بالعثور على هؤلاء الأبناء مع التحسين، والذي نقدم له شرحًا أدناه:

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

تبدو الشجرة الثنائية لهذا كما يلي:

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

خطوة بخطوة: كيف يعمل اجتياز الكائنات
الآن، لنلقِ نظرة أقرب على العملية بأكملها:
- نتنقل صعوداً في شجرة QML إلى الصف 0 باستخدام parent_container.parent و parent_count=1
- بعد ذلك، نقوم بإنشاء قائمتنا لتخزين العناصر الفرعية التي نجدها.
- أخيراً، نمر على العناصر الفرعية داخل الحاوية، باحثين عن النوع أو الخصائص المطلوبة. نخزّن جميع الكائنات المطابقة في قائمة، ثم نستخدم الاستدعاء الذاتي للتعمق أكثر، بالبحث عن العناصر الفرعية من المستوى التالي، وهكذا.
- نُخرج النتائج على شكل قائمة (استخدمنا [0] لأننا كنا نتوقع عنصرًا فرعيًا واحدًا يطابق متطلباتنا المطلوبة).
![A simple QML hierarchy diagram illustrating a single Row 0 node with two children: the button_switch_0 switch component and the Text_1 element labelled ‘Menu item 1.’ This visualisation is used in Squish Qt testing to explain why a list-style query returns a single matching child, accessed with index [0].](/wp-content/uploads/2024/08/image-hmi-squish-qt-8.jpg)
التغلب على القيود في أتمتة واجهة المستخدم بسبب غياب المعرّفات
يُعدّ العمل باستخدام المعرّفات أو الخصائص الفريدة دائمًا أفضل طريقة للعمل. ومع ذلك، هناك أوقات قد لا نتمكن فيها، سواء بسبب الديون التقنية أو المواعيد النهائية الضيقة، من إقناع المطورين بإضافة هذه العناصر المفقودة التي تُعدّ حيوية لنصوص أتمتة الاختبارات لدينا.
وعلى الرغم من أن الحل المذكور أعلاه الذي يجمع بين Squish وQT ليس مثاليًا، إلا أنه لا يزال يوفّر أدوات للتعامل مع بعض المشكلات، ويمكن أن يكون تعزيزًا رائعًا لأتمتة الاختبارات إذا ما استُخدم بحذر.
الملخص
وخلاصة القول، يُعد كل من Qt وSquish أداتين قويتين لتطوير البرمجيات بكفاءة واختبارها. فـ Qt إطار عمل متعدد الاستخدامات للتطوير عبر المنصات، بينما يقوم Squish بأتمتة إجراءات الاختبار وتعزيزها.
إن الجمع بين هذه الأدوات يبسّط التطوير ويضمن برمجيات عالية الجودة من خلال أتمتة الاختبار، مما يسهم بطبيعة الحال في تحقيق وفورات كبيرة في الوقت والتكلفة.
هل تبحث عن فريق ذي خبرة يمكنه مساعدتك في تطوير تطبيق Qt أو اختباره باستخدام Squish؟ نحن في خدمتك. لمعرفة المزيد عن Squish for Qt، تحقق من خدمات Qt أو تواصل معنا مباشرة عبر النموذج أدناه.
الأسئلة الشائعة
إذا كانت كائنات واجهة المستخدم الرسومية الخاصة بك تفتقر إلى معرفات فريدة أو خصائص مستقرة، فلا يزال بإمكانك أتمتتها من خلال التنقل في شجرة QML باستخدام نصوص برمجية تعاودية محسّنة. تتيح لك هذه الطريقة تحديد موقع العناصر حسب التسلسل الهرمي أو النوع أو علاقات الأشقاء – مما يتجنب الاعتماد على خصائص الحدوث غير المستقرة ويحسّن موثوقية أتمتة الاختبارات لديك.
وبينما يساعد تعاون المطورين من خلال توفير خصائص أو معرفات فريدة للكائنات، فإن Squish لا يزال يتيح للمختبرين إنشاء نصوص برمجية للأتمتة دون هذه المدخلات. وباستخدام تقنيات التنقل الذكية، يمكن للمختبرين التفاعل مع عناصر واجهة المستخدم الرسومية بناءً على سياقها أو بنيتها – حتى في البيئات المقيدة تقنيًا.
على عكس أدوات الأتمتة العامة، صُمم Squish خصيصاً لاختبار واجهة المستخدم الرسومية ويتمتع بتكامل عميق مع Qt. وهو يدعم QML وQt Widgets والواجهات الهجينة، ويوفر ميزات برمجية متقدمة بلغات Python وJavaScript ولغات أخرى. وتضمن Froglogic (التي أصبحت الآن جزءاً من The Qt Company) دعماً أصلياً وتحديثات متكررة مصممة خصيصاً لـ Qt.
بالتأكيد. يمكن دمج Squish في أدوات CI/CD الشائعة مثل Jenkins أو GitLab CI أو Azure DevOps. ويتيح ذلك اختبارًا مستمرًا لواجهة المستخدم الرسومية والكشف المبكر عن الأخطاء، مما يسرّع حلقات التغذية الراجعة في بيئات التطوير الرشيقة ويحسّن جودة البرمجيات بشكل عام.
arrow_circle_rightاتصل بنا
لنتواصل للتحقق من كيفية دعم مشروعك
arrow_circle_right مقالات أخرى