السايبرس مكتبة (Nodejs) وهذا يجعل كتابة الكود فيها تتم من خلال لغة الجافاسكريبت وهو أمر محبب لمطورين واجهات المستخدم لان تعلم استعمال السايبرس يكون سهل بالنسبة لهم،وهي فالأصل مطورة من قبل مطورين واجهات مستخدم.
أيضا كونها بالجافا سكريبت ساعدها في اكتساب الميزة الأساسية لها وهي أنها تقوم بتشغيل الكود داخل المتصفح وسنتحدث عن فائدة هذا الموضوع ولماذا هو عنصر قوي.
السايبرس مكتبة فالأساس فعملية تحميلها لا تختلف عن بساطة تخميل أي مكتبة أخرى بال (Nodejs), ولكنها تعتبر إطار عمل لأنها تجهز للمستخدم كل الأمور التي تلزمه في عملية كتابة الفحص،ولا يحتاج المستخدم لاتخاذ قرار لاختيار أمور إضافية، وهو ما يجعلها إطار عمل وليست مجرد مكتبة.
تستعمل السايبرس ثلاث مكتبات أساسية وهم:
1- jQuery لاختيار العناصر والتعامل معها
2- chai لتنفيذ الفحوصات الفعلية
3- mocha لتنظيم الفحوصات المختلفة وملفاتها وترتيبها.
بعد أن قمنا باستعراض السايبرس دعونا ننتقل للحديث عن أهم الأمور التي هي باعتقادي وبعد التجربة نقاط تميز سايبرس الفعلية والتي تحدث فرق عملي:
كنت ذكرت مسبقا أن السايبرس تستغل أنها مكتوبة بالجافا سكريبت ومبينة على (Nodejs) بأن تقوم بتشغيل الفحوصات داخل المتصفح نفسه، وهنا تكمن نقطة القوة لأنه هذا ما يجعل سرعتها أعلى بكثير من كل المنافسين ولنوضح أكثر.
المنافسين وعلى رأسهم السلينيوم (Selenium), تعتمد طريقة عملهم على وجود وسيط بين الكود والمتصفح اسمه ال (WebDriver) بحيث يقوم الكود بالتواصل مع ال (WebDriver) الذي بدوره يقوم بترجمة أوامر الكود وإيصالها إلى المتصفح ومن ثم انتظار الرد من المتصفح ثم ترجمته وإعادته للكود،
هذا الأمر يجعل تنفيذ اسطر الكود أبطئ بالمقارنة مع أن يكون الكود نفسه يعمل داخل المتصفح بشكل مباشر بدون وسيط.
وهو ما تقوم به سايبرس، بحيث أن مكتبات الجافا سكريبت التي ذكرتها وتستعملها السايبرس، كلها يمكن للمتصفح تنفيذ اكوادها ببساطة، وهو ما يجعل كل أوامر الكود تقريبا تعمل داخل المتصفح، وهو ما يجعل التواصل بين الكود والمتصفح سريع جدا لأنه بدون وسيط، وبالتالي تنفيذ الأوامر يكون سريع جدا.
والفرق ليس بالبسيط خصوصا إذا كان الموقع بطيء فالأصل أو كان حجم الفحص كبير جدا.
سايبرس إطار عمل فهي اختارت كل الأدوات التي نحتاجها لكتابة الفحص واخفت التفاصيل عن المستخدم.
فأنت عليك تثبيتها فقط والبدء بالعمل، وهو أمر غير موجود بنفس السلاسة عند المنافسين، فعند اختيار سلينيوم عليك اختيار إطار عمل آخر يساعدك في تنظيم بقية جوانب الفحص كتنظيم الفحوص وعملية الفحص نفسها،
وهو ما يضيف جهد قرار الاختيار ومتابعة مشاكل وارتباط المكتبات المختلفة ببعض وتنظيمهم وملاحقة الإصدارات المختلفة من كل واحدة منهم.
أحد مزايا سايبرس هو الخليط بين:
1- وقت انتظار تلقائي لتنفيذ الأوامر (Auto waiting timeout)
2-تستفيد من البيئة غير المتزامنة للجافا سكريبت.
3- شيء يسمونه بال Retry ability وهو القدرة على المحاولة الدائمة لتنفيذ الاوامر خلال وقت الانتظار بدون الحاجة لكتابت المحاولات بشكل يدوي في الكود.
هذا الخليط يزيل تماما الحاجة لإضافة أوقات انتظار ثابتة، أو حصول مشاكل بسبب عدم ثبات ظهور العنصر أو وقت ظهور التغيير على العنصر، نتيجة لبطء التحميل أو الإنترنت.
وهو ما يجعل وقت تنفيذ الفحص متغير بحسب سرعة تحميل الموقع و ظهور التغيرات عليه.
فمثلا لو كنت خلال الفحص تقوم بتشغيل مهمة معينة داخل الموقع، هذه المهمة يقوم الموقع بتنفيذها في وقت متفاوت كل مرة، وفي أقصى حالته يصل إلى ساعة،
في السايبرس تقوم بتعيين مدة الساعة كوقت انتظار تلقائي لتنفيذ الأمر،
ولكن خلال هذا الوقت ستقوم السايبرس بإعادة المحاولة عدة مرات وفي اللحظة الذي يحصل فيه أي تغيير بإمكان السايبرس أن تختار بين الانتظار إذا كان التغيير مخالف للمطلوب أو الإكمال للأمر التالي أو إيقاف الفحص لوجود نتيجة خاطئة،
بدون الحاجة لانتظار الساعة كاملة من أجل ضمان أن الوقت انتهى، وان النتيجة التي تأتي بعد الساعة هي النهائية،
من كتب فحوصات باستعمال الأدوات الأخرى سيقدر جدا هذه الميزة عندما يستعمل السايبرس، لأنها تساعد على ثبات الفحص وتقلل من المشاكل التي تحدث بسبب اختلافات البيئة المحيطة كسرعة الموقع ووقت التغير.
فلا توجد حاجة لاستعمال أي أوقات انتظار ثابتة إذا كنت تكتب الفحص بشكل سليم بالسايبرس وهو ما تحصل عليه في حال فهمت طريقة تنظيم السايبرس للأوامر وعملها وهو ما سنناقشه في مقال لاحق.
استكشاف الأخطاء ومعرفة هل هي أخطاء في الكود أم في الموقع، وأيضا سرعة كاتبة الكود وتطويره. من أفضل التجارب باستعمال السايبرس.
بسبب مشغل الفحوصات الذي تقدمه السايبرس، فهو ياخد صورة كاملة للموقع ولكود الموقع عند تنفيذ كل أمر من كود الفحص، وبإمكانك الرجوع ومشاهد الموقع والعناصر وال (Dom) كامل وحالته في تلك اللحظة.
أيضا يحتوي على أداة تساعدك في كتابة الكود واختيار العناصر وسأرفق في نهاية المقال فيديو لتوضيح الفكرة أكثر.
السايبرس تقوم بالتقاط صور وفيديوهات للفحص بشكل تلقائي خلال عمله فالخلفية وبامكانك مراجتعتها بعد انتهائه وهو ما يسرع اكتشاف مصدر الأخطاء.
لان السايبرس تسعمل (Nodejs) هذا يفتح آفاق كبيرة لتنفيذ أمور مختلفة خلال عملية الفحص من خلال المكتبات التي توفرها Nodejs،
ولكن بالطبع المكتبات التي تحتاج إلى الوصول إلى مصادر النظام لا يمكن تشغيلها بالمتصفح، هنا تقوم السايبرس بتشغيلها في (Nodejs) خارج المتصفح الذي هو في الأصل يقوم بتشغيل السايبرس،
ويتم التواصل بطريقة بسيطة وسلسلة جدا ولا تؤثر على سرعة الكود وسهولة كتابته.
بعد كل هذه الميزات والتي قد تجعل البعض يظن السايبرس الخيار الأمثل يجب أن ننبه لوجود سلبيات قوية تجعلها في بعض الحالات اسوء خيار وقد تكون غير قابلة للاستخدام:
1- لا يمكن في السايبرس فتح أكثر من نافذة أو أكثر من متصفح في نفس الوقت وفي بعض الفحوصات هذا يجلعها خيار سيء جدا.
2- السايبرس لا يمكن أن تسعمل وتكتب سوا بالجافاسكريبت وهذا أمر منطقي جدا لأنها تعمل داخل المتصفح، ولكن المنافسين يوفرون مكتباتهم في لغات مختلفة، وهو أمر يعتبر ميزة عند فرق العمل التي تكتب فحوصاتها المختلفة بلغة معينة ولا يريدون مغادرة هذا اللغة واستعمال الجافا سكريبت.
(لست مقتنعا بأن هذه النقطة عيب كبير 😂).
3- سايبرس لا تسمح بتغير العنوان الأساسي في نفس الفحص فإذا بدأت الفحص بالدخول إلى جوجل يمكنك تصفح أي شيء داخل هذا النطاق ولكن لا يمكنك الانتقال إلى فيسبوك في نفس الفحص.
4- تعامل السايبرس مع عنصر ال (IFrame) سيئ نوعا ما، فإذا كان الموقع الذي ستقوم بفحصه لسبب أو آخر يستعمل ال (IFrame) بكثرة، السايبرس ليست أفضل خيار.
5- سايبرس أداة للفحص واستعمالها في الوظائف العادية لأتمتة أمور على المتصفح غير سهل و وغير مناسب.
امثلة على الأشياء العادية التي تستعمل اتمتة واجهة المستخدم فيها ذكرناها في فيديو سابق يمكنك مشاهدته من هنا الرابط
وهذا ملحق الفيديو الذي يحتوي على مثال عملي للعمل ال Test Runner الرابط
شاركني رأيك عن السايبرس وعيوبها ومميزاتها وأتمنى أن تكون قراءة هذا المقال ممتعة بالنسبة لك
شكرا لك على وقتك
في النهاية الحمد لله الذي بنعمه تتم الصالحات
السلام عليكم ورحمة الله وبركاته
عبدالله سعدالدين
[…] أخبرني في التعليقات أي طريقة تعتقد أنها الأنسب وإذا كنت تحب معرفة أصل السايبرس وما يميزها بإمكانك قراءة المقال التالي (رابط). […]
شكرا لك على هذا المقال، لقد فهمت بشكل عام عن السايبرس، لكن أرجو أن تدقق المقال قبل أن تنشره في المرة القادمة.