4 أفضل أنماط التصميم للاختبار الآلي (و 86 أخرى)

تحية للجميع. تحسبًا لبدء الدورة ، أعد "Python QA Engineer" ترجمة لمواد أخرى مثيرة للاهتمام.




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

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

لماذا تعتبر أنماط التصميم مهمة للغاية للاختبار الآلي؟

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

في ما يلي بعض أنماط تصميم الاختبار الآلي الشائعة التي تستخدمها العديد من الفرق لإنشاء أتمتة اختبار قوية وتحسين منطق الاختبار بالكامل.

كائنات الصفحة



مثال على كائن الصفحة بواسطة Nikolay Advolodkin من Automation Guild 2017

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

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

تخفي كائنات الصفحة أيضًا التفاصيل الفنية لـ HTML و CSS خلف الطرق بأسماء بسيطة وواضحة.
إن الانتباه إلى تسمية طرقك له ميزة إضافية تتمثل في المساعدة على إنشاء واجهة برمجة تطبيقات ممتعة (API) ممتعة يمكن للمبرمج الأقل ذكاءً البدء في استخدامها بسرعة.

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

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

لتجنب ذلك ، يلجأ الكثيرون إلى النص ، الذي وصفه أنتوني ماركانو ( @AntonyMarcano) لأول مرة بمشاركة أندي بالمر ( @AndyPalmer) ، وجان مولاك ( @JanMolak) وآخرين.

نمط سيناريو


تعد كائنات الصفحة طريقة جيدة لبدء جعل اختباراتك قابلة للصيانة ، ولكن إذا لم تكن حذرًا ، فلا يزال بإمكانها الخروج عن نطاق السيطرة بمرور الوقت.
يعد نمط السيناريو (المعروف سابقًا باسم نمط الرحلة) تطبيقًا لمبادئ تصميم SOLID لاختبار القبول التلقائي ويساعد الفرق على حل هذه المشكلات. هذا ، في الواقع ، هذا هو نتيجة إعادة هيكلة قسوة لا يرحم لكائنات الصفحة باستخدام مبادئ تصميم SOLID.

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

في المرة الأولى التي سمعت فيها عن نمط السيناريو في جلسة Automation Guild Session في عام 2017 كانت من جون سمارت ( @Wakeleo)منشئ أحد أطر أتمتة الاختبار المفضلة لدي ، Serenity .
يستخدم سيناريو فكرة الممثلين والمهام والأهداف لوصف الاختبارات رسميًا ورفض شروط التفاعل مع النظام. سيناريو ، تصف الاختبارات من حيث الفاعل الذي لديه أهداف ..

وإليك مثال:


مثال على تنفيذ نمط سيناريو من Automation Guild Session 2017 بواسطة John Smart

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

الموانئ والمحولات


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

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

لقد تعرفت على هذا النمط خلال مقابلة مع منشئ الخيار Aslak Hellesoy ( @aslak_hellesoy)وصفه بأنه استراتيجية للحصول على تعليقات سريعة من اختبار Cucumber من طرف إلى طرف.

أوصى Aslak أيضًا بمورد يسمى Todo-subecond ، والذي أضفته إلى منشوري Top Resource من أجل مهندسو أتمتة الاختبار : تم تصميم هذا التطبيق الصغير الذي يحتوي على اختبارات قبول كاملة يمكن استكمالها بالمللي ثانية لتوضيح الأساليب الأساسية لتحقيق ذلك على أي نظام. بعد إكمال سلسلة من التمارين ، ستتعلم طريقة خاصة لتطبيق مدفوع باختبار و التنمية المدفوعة بالسلوك.

مقدم أول


مقدم العرض الأول هو تعديل وحدة تحكم عرض النموذج (MVC) لتنظيم التعليمات البرمجية والتطوير لإنشاء برنامج تم اختباره بالكامل باستخدام نهج التطوير القائم على الاختبار (TDD).
لقد علمت لأول مرة عن هذا النمط من مقابلة مع Sab Rose (@SebRose) ، أحد المساهمين في مشروع Cucumber ومؤلف Cucumber for Java.
وقال إنه إذا قمت برسم نمط MVC في شكل كتل وسهام ، فسوف ترى أن المنظر ، وهو واجهة المستخدم الخاصة بك ، لديه اتصالات محددة بوضوح مع النموذج وجهاز التحكم. إذا كان بإمكانك في وقت التشغيل استبدالها بنماذج ووحدات تحكم ينشئها الاختبار ويتحكم فيها ، فلن يكون هناك سبب يمنعك من التحقق من أن واجهة المستخدم لا تتصرف بالطريقة التي تريدها.

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

86 أنماط اختبار مؤتمتة أخرى


لقد كتبت هذا المقال قبل عدة أشهر ، لكني لم أنشره أبدًا.
كنت واثقًا في قائمتي حتى تحدثت مع Seretta Gamba ، مؤلفة الكتاب الجديد A Journey through Test Automation Patterns ، حيث تتحدث هي ومؤلفها المشارك Dorothy Graham عن 86 نمطًا!

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

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

تعلم المزيد عن الدورة.

All Articles