Cucumber-js: تنفيذ - إعادة

تم إنشاؤها على ١٩ يناير ٢٠١٧  ·  33تعليقات  ·  مصدر: cucumber/cucumber-js

سيكون من الجيد لو كانت هناك ميزة تعيد تجربة مجموعة الاختبار X مرة ، وتجتاز اختبارًا إذا اجتاز هذا الاختبار أيًا من عمليات التشغيل

help wanted

التعليق الأكثر فائدة

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

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

في العالم الواقعي ، تعد القدرة على إعادة محاولة الاختبارات الفاشلة مع إضافة التتبع الجيد لتحديد التقشر للعمل الاستباقي أمرًا ذا قيمة فائقة.

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

ال 33 كومينتر

ericyliu يأتي في الخيار 3. لست متأكدًا من سبب استمرار Cucumber 2 في RC بالرغم من ...

charlierudolph أو أي شخص إذا كان لديك أي مؤشرات ، وتجربته .

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

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

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

👏👏👏

charlierudolph أحيانًا يكون من المستحيل التعامل مع اختبارات الخفقان. على سبيل المثال ، لدينا في بيئتنا 23 خدمة مختلفة يضربها تطبيقنا ، وبما أننا لا نملك هذه الخدمات ، يمكن أن يتعطل أي منها في أي وقت. تسمح لنا علامة --retry بإعادة تشغيل الاختبار حتى لا يتسبب انقطاع الخدمة المؤقت (عند إعادة تشغيل الخدمة) في فشل مجموعة الاختبار الخاصة بنا.

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

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

في العالم الواقعي ، تعد القدرة على إعادة محاولة الاختبارات الفاشلة مع إضافة التتبع الجيد لتحديد التقشر للعمل الاستباقي أمرًا ذا قيمة فائقة.

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

للإضافة إلى هذا cucumber-js already لديه وظيفة rerun والتي هي في الأساس مجرد إعادة محاولة ولكنها أقل كفاءة حيث يجب تشغيلها كعملية منفصلة (وهذا يوفر فهمًا صحيحًا لها). إعادة المحاولة حل أفضل بكثير.

ccharlierudolph

إنه أيضًا في العالم الحقيقي مع مجموعات اختبار واسعة وتطبيقات معقدة من المستحيل الدفاع عنها بنسبة 100 ٪ ضد التقشر وبالتالي تصبح باهظة الثمن بشكل لا يصدق.

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

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

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

أوافق 100٪ على أن الاختبارات غير المستقرة أمر يجب تجنبه. ومع ذلك ، فإن هشاشة الاختبار غالبًا ما تكون شيئًا لا يخضع لسيطرة الفريق. هذا هو وضعي.

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

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

أعتقد أننا يجب أن نعيد النظر في هذا. الخيار-روبي لديه الآن.

متفق. هذا هو الكود الخاص بتطبيق Ruby. يمكن أن يكون مفيدًا لتنفيذ JS. https://github.com/cucumber/cucumber-ruby/pull/920/files

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

مرحبًا charlierudolph وaslakhellesoy. أي تقدم مع هذه الميزة؟

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

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

هذا سيكون رائع! يرجى محاولة جعله يتصرف بنفس الطريقة كما في Cucumber-Ruby. إذا تباعدت عن ذلك ، فقد لا ندمجها ، لأن التوحيد / الاتساق هو شيء نسعى لتحقيقه.

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

hurrikam العمل العظيم .. 👏👏👏
أنا أيضا أتطلع لاستخدام هذا. أنا أستخدم خيار المراقبة الليلية وينتظرون إصلاح هذا في شبيبة الخيار. مرجع # https://github.com/mucsi96/nightwatch-cucumber/issues/213

charlierudolph هل يمكنك المساعدة في هذا؟ لا يمكنني تقديم العلاقات العامة الخاصة بي في الوقت الحالي.

hurrikam ، يمكنك إنشاء مفترق ودفع الكود الخاص بك هناك ثم إرسال PR من شوكة الخاص بك إلى هذا الريبو. https://help.github.com/articles/fork-a-repo/

charlierudolph الرجاء مراجعة PR-1114
كما هو مذكور في العنوان ، هذا هو التنفيذ البسيط (تغييرات قليلة جدًا في الكود بالفعل) لجعل الميزة تعمل دون كسر التنسيقات والتقارير الحالية.

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

دعونا نناقشها.

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

@ نيك لوكاس هذا رائع - هل لديك ذلك؟

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

لأي شخص يرغب في استخدام العلاقات العامة ، يمكنك توجيه package.json إلى مفترقتي (أو تفرعها مني):

  "dependencies": {
    "cucumber": "https://github.com/Nick-Lucas/cucumber-js.git#feature/issue-727-retry",
  },

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

تعديل:

لقد تركت شركتي الآن وسلمت الشوكة إلى جيثب الخاص بهم: https://github.com/wonderbill/cucumber-js.git#feature/issue -727-retry

لطيف - جيد!!!! شكرًا @ Nick-Lucas - نقدر تفهم أن بيئات الأنظمة يمكن أن تكون غير مستقرة بطبيعتها!

يجب دمج هذا في Master ، هذا ليس مغلقًا.

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

لأي شخص يرغب في استخدام العلاقات العامة ، يمكنك توجيه package.json إلى مفترقتي (أو تفرعها مني):

  "dependencies": {
    "cucumber": "https://github.com/Nick-Lucas/cucumber-js.git#feature/issue-727-retry",
  },

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

تعديل:

لقد تركت شركتي الآن وسلمت الشوكة إلى جيثب الخاص بهم: https://github.com/wonderbill/cucumber-js.git#feature/issue -727-retry

كيف يمكنني تشغيل ميزة إعادة المحاولة عند إجراء الاختبارات؟

ricardgarcia فقط استخدم الخيار --retry راجع https://github.com/owncloud/phoenix/pull/1207/files
نحن نستخدم الفرع من العلاقات العامة الخاصة بي هنا https://github.com/cucumber/cucumber-js/pull/1205 حتى يتم دمجه في يوم من الأيام

مرحبًا @ فردًا ، شكرًا جزيلاً على الرد. هل يجب أن يعمل إذا كنت أستخدم webdriverIO لإجراء اختباراتي على cucumber-js؟
لقد جربت الأمر "--retry 1" ولكن لم يتم إجراء عمليات إعادة المحاولة.

ricardgarcia كما هو موضح في https://github.com/cucumber/cucumber-js/pull/1205 ، لاستخدام هذه الوظيفة ، يمكنك استخدام

"cucumber": "cucumber/cucumber-js#issue-727-retry"

حيث لم يتم دمج التغييرات في الريبو الرئيسي للخيار.

Yes @ jain-neeeraj لقد استخدمت هذا الإصدار في package.json ولم ينجح ، لكن كما ذكرت فإنني أقوم بإجراء اختبارات باستخدام cucumber على webdriverIO ، لذا فإن إطار العمل التالي "wdio-cucumber-framework". هل يجب أن تعمل بطريقة ما؟ كيف أقوم بإجراء الاختبارات لإعادة المحاولة إذا كنت أستخدم إطار cucumber-js؟

يتيح ricardgarcia التعاون على https://gitter.im/cucumber/cucumber-js ، يجب أن أكون قادرًا على مساعدتك في حل هذه المشكلة.

charlierudolph ، هل من الممكن أن يتم دمج هذا في صورة رئيسية؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات