الآلي المستخدم الرسومية الاختبار:اجتماع لنا في منتصف الطريق

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

سؤال

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

التطبيق في السؤال على الإنترنت جافا التطبيق الوصول إليها عن طريق AJAX.معظم الميزات الموجودة مشفرة باستخدام jsp, جافا سكريبت و قليلا من فلاش 8.الموجة المقبلة من الميزات سوف يتم استخدام YUI مكتبة جافا سكريبت.أنا استقر على السيلينيوم باعتبارها أداة اختبار بسبب مرونته و سعرها (مجانا).نقطة رئيسية:أنا يهدف الاختبار-إعادة الاستخدام وسهولة الصيانة.أفضله هو أن كتابة التعليمات البرمجية التي يكتشف بالتحقق من صحة و تمارين عناصر الصفحة بدلا من استخدام تسجيل و تشغيل نظام اختبار التنمية.

يمكن لأي شخص تقديم بعض التوجيهات ما السنانير يمكن وضعها في قانون أو بعض أفضل الممارسات التي تجعل من تطوير اختبار أسهل الاختبارات أنفسهم أكثر قوة?

هل كانت مفيدة؟

المحلول

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

لذا فإن أول شيء هو التأكد من أنهم يفهمون أن الأتمتة والبرمجة واجهة المستخدم هو API الخاص بك.

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

  • وسيلة لتحديد الصفحة التي كنت على....بوب يمكن معرفة الفرق بين الدخول و دخول النظام, ولكن كيف سوف أتمتة تعلم ؟ إذا أدخل المجال مع 'اسم المستخدم' التسمية ، صفحة تسجيل الدخول.إذا كان دخول هذا المجال مع النظام رقم مجال النظام.

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

  • طريقة لتحديد كل العناصر التي تحتاج إلى التفاعل مع (انقر فوق اكتب في التحقق ، إلخ.) وليس INPUT_42....

  • نسأل المطورين ما المعلومات التي يمكن اختبار توفر لهم سرعة التصحيح ، ونطلب منهم أن وضعه في ملف سجل

  • القدرة على تفريغ الدولة من البرنامج

  • يتفق معالجة الأخطاء وإعداد التقارير (أيضا جيدة فقط تصميم واجهة المستخدم)

نصائح أخرى

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

ولقد كان الكثير من النجاح باستخدام السيلينيوم RC والسيلينيوم IDE. والتعود على الشيء الرئيسي لاستخدام السيلينيوم وأوامرها. كما انها مفيدة لتعتاد على تحديد الكائنات على الصفحة (مسارات XPath ومحددات CSS، فضلا عن 'يحتوي على' وظيفة). ما لا نريده هو الكثير من العناصر التي لها نفس حدد المسار. إذا كانت الجداول وعناصر div أدناه لم يكن لديك جزء فريد لهم، فإنه يمكن إضافة تعقيد إضافي لاختبارات الخاص بك.

<html>
  <body>
    <table>
      <tr>
        <td>
          <div></div>
          <div></div>
          <div></div>
        </td>
      </tr>
    </table>
    <table>
      <tr>
        <td>
          <div></div>
          <div></div>
          <div></div>
        </td>
      </tr>
    </table>
  </body>
</html>

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

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

نصيحة واحدة:الحفاظ على الخاص بك رمز اختبار في على الأقل طبقتين من التجريد:

  1. الطبقة العليا:يجب أن يكون هذا نوعا من واجهة نحو تطبيق محدد المصطلحات/الإجراءات الخ.هذه الطبقة لا مباشرة استخدام السيلينيوم RC المكتبة.في الخلفية ويستخدم...
  2. ... الطبقة السفلى:مكتبة مع بعض شيوعا اختبار أنماط (على سبيل المثال:"يؤكدون أن قيمة X من زر التحكم يتم اختياره") ، والذي يستخدم السيلينيوم RC المكتبة.

هذه طريقة الاختبارات الخاصة بك وسوف تكون أكثر نظافة للحفاظ على ومفهومة أكثر من حيث ما يجري اختبارها.لقد حاولنا ثلاث مراحل ، الثالث (العلوي) طبقة يجري الاختبارات المحددة باستخدام XML.كان هذا في غير البرمجة اختبار أن تكون قادرة على تحديد اختبارات القبول دون الخوض في التعليمات البرمجية C#.

وإضافة إلى تصريحات McWafflestix وs_hewitt - عناصر واجهة المستخدم الرسومية تحتاج إلى الموسومة بشكل صحيح، فريدة من نوعها ويمكن التنبؤ بها للنجاح مع أتمتة واجهة المستخدم الرسومية. إذا معرفات عنصر لا يمكن التنبؤ بها، واجهت مشاكل. يمكن التنبؤ بها لا يعني بالضرورة ثابت. لعناصر الصفحة ثابتة مثل حقل اسم المستخدم أو زر الدخول، وأتوقع اسم / معرف لهذه أن تكون ثابتة من بناء لبناء وتشغيل لتشغيل. للخانات، وأزرار الراديو، والمحتوى الديناميكي، وأتوقع أن تكون هذه الديناميكية، ولكن يمكن التنبؤ به. على سبيل المثال، قد يكون لديك شعبة مع فئة = "contentdetail" ومعرف = "12345". طالما يمكنك صياغة كسباث للعثور على وجوه تحتاج للتفاعل مع موثوق بها، يجب أن تكون جيدة.

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

وهناك القليل جدا من أن المشروعات الإنمائية يمكن أن تضيف إلى رمز للمساعدة.

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

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

والنهج وأغتنم (وأعتقد أن نهج نصح من قبل جوفال لووي في "مكونات. NET البرمجة") هو محاولة مجردة الرمز الفعلي من واجهة المستخدم الرسومية عبر واجهة، الذي يتيح لي كتابة وحدة الاختبارات لجميع الأعمال المنطق الناجمة عن واجهة المستخدم الرسومية دون اختبار في الواقع واجهة المستخدم الرسومية نفسها.

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

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