العودة إلى المدرسة: كيفية تدريب المختبرين اليدويين على التعامل مع الاختبارات الآلية

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

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

تجربة Wrike في تنظيم المدرسة

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

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

- ما الصعوبات التي واجهها الطلاب؟

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

- هل المدرسة دفعت؟

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

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

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

نصائح تنظيم

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

الخطوة 0. إنشاء قاموس

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

العودة إلى المدرسة: كيفية تدريب المختبرين اليدويين على التعامل مع الاختبارات الآلية

فيما يلي لقطة شاشة لعرض المهام مع أسماء العناصر. لنتخيل أنك تختبر عرض المهام كصندوق أسود ولم تشاهد السيلينيوم في حياتك مطلقًا. ماذا يفعل هذا الرمز؟

العودة إلى المدرسة: كيفية تدريب المختبرين اليدويين على التعامل مع الاختبارات الآلية

(حرق - يتم حذف المهمة عن طريق الراحة نيابة عن المشرف، ثم نرى أن هناك سجلاً لهذا في الدفق.)

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

الخطوة 1. كرر العبارات

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

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

ونتيجة لذلك، فإن الشخص الذي استمع وفعل كل شيء سيكون قادرًا على:

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

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

سيكون من المثالي أن يقوم مهندس التشغيل الآلي من فريق ضمان الجودة في هذا الوقت بتكليفه بمهمة كتابة بعض الاختبارات في المعركة والسماح له بالالتزام بفرعه.

ما لا يجب أن تعطيه:

  1. معرفة أكثر تعمقًا بوظائف بيئة التطوير ولغة البرمجة نفسها، والتي ستكون مطلوبة فقط عند العمل مع الفروع بشكل مستقل. لن يتم تذكر ذلك، سيتعين عليك شرحه مرتين أو ثلاثًا، لكننا نقدر وقت مهندسي الأتمتة، أليس كذلك؟ أمثلة: حل التعارضات، وإضافة ملفات إلى git، وإنشاء فئات من البداية، والعمل مع التبعيات؛
  2. كل ما يتعلق بـ xpath. بجد. عليك أن تتحدث عنها بشكل منفصل، مرة واحدة وبطريقة مركزة للغاية.

الخطوة 2. إلقاء نظرة فاحصة على القواعد

دعونا نتذكر لقطة شاشة عرض المهام من الخطوة رقم 0. لدينا خطوة تسمى checkCommentWithTextExists. يفهم مختبرنا بالفعل ما تفعله هذه الخطوة ويمكننا أن ننظر داخل الخطوة ونحللها قليلاً.

وفي الداخل لدينا ما يلي:

onCommentBlock(userName).comment(expectedText).should(displayed());

أين يوجد onCommentBlock

onCommonStreamPanel().commentBlock(userName);

نتعلم الآن أن نقول لا "اشتري لعبة"، بل "اشتري لعبة من متجر Detsky Mir الموجود في الخزانة الزرقاء على الرف الثالث من الأعلى". من الضروري توضيح أننا نشير إلى عنصر ما بشكل تسلسلي، من العناصر الأكبر (الدفق -> كتلة تحتوي على تعليقات من شخص معين -> ذلك الجزء من هذه الكتلة حيث يوجد النص المحدد).

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

الواجب المنزلي واضح: فرع تمت فيه إزالة محتويات العديد من الخطوات الضرورية لعدد معين من الاختبارات. اسمح للمختبرين باستعادتها وجعل التشغيل أخضر مرة أخرى.

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

الخطوة 3. الانغماس الكامل

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

أولاً، دعونا نوضح أن كل هذه العناصر الموجودة في onCommentBlock والتعليقات موصوفة من قبلهم.

العودة إلى المدرسة: كيفية تدريب المختبرين اليدويين على التعامل مع الاختبارات الآلية

المجموع:

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

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

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

في هذه المرحلة، يجب أن يكون الجمهور قد فهم تمامًا كيف يتم توريثهم وما يمكن إدخاله بعد النقطة في onCommentBlock. في هذه المرحلة، نشرح جميع العوامل: /، //، .، [] وما إلى ذلك. نضيف المعرفة حول الاستخدام إلى الحمل @class وغيرها من الأشياء الضرورية.

العودة إلى المدرسة: كيفية تدريب المختبرين اليدويين على التعامل مع الاختبارات الآلية

يجب أن يفهم الطلاب كيفية ترجمة xpath بهذه الطريقة. للتوحيد - هذا صحيح، الواجبات المنزلية. نقوم بحذف أوصاف العناصر، والسماح لهم باستعادة عمل الاختبارات.

لماذا هذا المسار بالذات؟

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

ومع ذلك، ربما يتمكن البعض منكم من مشاركة تجربتكم حول كيفية تحسين العملية بشكل أكبر. سأكون سعيدًا بقراءة اقتراحات مماثلة في التعليقات!

المصدر: www.habr.com

إضافة تعليق