{ اختبار البرمجيات - Software Testing }

البرمجة الكائنية في الأوتوميشن

مع مرور الوقت، أصبحت أسئلة المقابلات تتضمن مزيداً من الطلبات مثل: “أعطني مثالاً على X في مشروع الأوتوميشن الخاص بك”، حيث يشير هذا ال X إلى مفهوم من البرمجة الكائنية (OOP).

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

  • الواجهة (Interface)
  • التجريد (Abstraction)
  • الوراثة (Inheritance)
  • التعددية (Polymorphism)
  • التغليف (Encapsulation)


التجريد – Abstraction

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

مثال على التجريد في الأوتوميشن:
أحد الأنماط الشائعة هو Page Objects في Selenium، حيث نقوم بتعريف فئة معينة (Page) تحتوي على تحديد للعناصر (مثل المواقع المختلفة). أحياناً نضيف عمليات لهذه العناصر. الشخص الذي يكتب كود الاختبار ليس بحاجة لمعرفة كيف تم تحديد زر الدخول (Login)؛ بالنسبة له، الأمر شفاف ومخفي، ولا يحتاج إلى التعامل مع تفاصيل تحديد العنصر.


الوراثة – Inheritance

الوراثة في البرمجة الكائنية تسهم في إعادة استخدام الكود وتجنب التكرار، حيث نعرّف الخصائص والسلوكيات في فئة رئيسية (الأب)، ويمكن للكائنات التابعة أن تستخدمها دون الحاجة لإعادة تعريفها. هذا يُعرف بمفهوم إعادة الاستخدام.

مثال على الوراثة في الأوتوميشن:
هناك العديد من حالات الوراثة في الأوتوميشن، بدءاً من فئة BaseClass التي نحدد فيها المتصفح (browser) أو الدرايفر (driver)، مروراً بفئة BaseTest حيث نعرف عمليات عامة متكررة مثل النقر (click)، إدخال البيانات (sendKeys)، وما إلى ذلك. على سبيل المثال، فئة FirefoxDriver ترث من RemoteWebDriver وتنفذ عدة طرق (Methods) من الفئة الأم.


التغليف – Encapsulation

التغليف يعني إخفاء تفاصيل التنفيذ وإخفاء بعض أجزاء الكود عن العالم الخارجي. يُعتبر التغليف مفهوماً مرتبطاً بالتجريد، حيث نرغب في إخفاء بعض الأجزاء التي نكوّنها بالكود المنطقي والبيانات (data).

مثال على التغليف في الأوتوميشن:
في مثال التجريد، قمنا بإنشاء فئة Page Object وتحديد زر الدخول (Login). الأشخاص خارج الفئة ليس لديهم علم بطريقة تعريف الزر؛ يتم إخفاء التعريف. مثال آخر هو طريقة عمل التعليمة FindBy@، حيث تحتوي على منطق معقد خلف الكواليس، ويجعلها تبدو كتعليمة بسيطة وفعّالة للمستخدم، بينما تبقى التفاصيل الداخلية غير مرئية، مما يجعل التغليف مفيداً لتبسيط الكود.


التعددية – Polymorphism

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

مثال على التعددية في الأوتوميشن:
التعددية يمكن رؤيتها في الأوتوميشن، مثل التحميل الزائد للطرق (Method Overloading). في حالة الانتظار الضمني (implicitly wait)، نستطيع تحديد وحدة قياس الوقت المطلوبة. أيضاً عند إنشاء الدرايفر (Driver)، نستخدم التعددية بتحديد نوع الدرايفر كـ WebDriver ثم نهيئه كـ ChromeDriver، مما يعكس مفهوم التعددية.

مقالات ذات صلة

زر الذهاب إلى الأعلى