الاختلاط بعد ذلك وعندما في اختبارات قصص/قبول مستخدم BDD

StackOverflow https://stackoverflow.com/questions/3517346

سؤال

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

Feature: Confirmation before removing products from cart
  In order to avoid accidentally removing an item from my cart
  As a Customer
  I want a confirmation dialog to ask me if I'm sure I want to remove an item

  Scenario: I want to remove an item from my cart
    Given I have added item "xyz" to my cart
    When I click "Remove"
    Then a confirmation dialog pops up
    And it asks "Are you sure you want to remove this from your cart"
    When I click "Yes"
    Then item "xyz" should be removed from my cart
هل كانت مفيدة؟

المحلول

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

Scenario: I want to remove an item from my cart
  Given I have a cart containing "xyz"
  When I remove "xyz" from my cart
  Then my cart should be empty.

يصف السيناريو الآن الأشياء المفيدة للمستخدم ، ومن الأسهل إعادة تشكيلها.

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

لقد كتبت سيناريو هنا يفعل هذا إذا كان مفيدًا (إنه DSL بدلاً من اللغة الإنجليزية ولكن يجب أن تحصل على الفكرة):

http://code.google.com/p/wipflash/source/browse/example.petshop.scenarios/petregistrationandpurchase.cs

نصائح أخرى

السؤال هو حقًا أحد "الفروع".

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

تسلسل ثلاث خطوات مع خيارين للمستخدم هو 8 مسارات ممكنة. قد تصل المسارات المختلفة إلى نفس النتيجة (أو لا). ولكن يجب أن يكون لديك مسارات متعددة من خلال هذا.

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

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top