كيف يمكنني حدة اختبار واجهة المستخدم الرسومية؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

والحسابات في قانون بلدي هي اختبارها جيدا، ولكن لأن هناك الكثير من كود واجهة المستخدم الرسومية، يا مدونة التغطية الشاملة هو أقل مما كنت ترغب. هل هناك أي مبادئ توجيهية بشأن قانون GUI حدة الاختبار؟ هل حتى يكون له معنى؟

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

و(أنا باستخدام جافا سوينغ)

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

المحلول

وتصاميم مثل MVP وMVC عادة يحاول مجردة كما الكثير من المنطق من واجهة المستخدم الرسومية الفعلي وقت ممكن. واحد من المادة بشعبية كبيرة حول هذا هو <وأ href = "http://web.archive.org/web/20151130093108/http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf" يختلط = "نوفولو noreferrer" > "مربع الحوار المتواضع و" من الريش مايكل. شخصيا لقد كان لي تجارب مختلطة مع محاولة لتحريك المنطق من واجهة المستخدم - في بعض الأحيان انها عملت بشكل جيد جدا، وأحيانا أخرى انها كانت أكثر صعوبة مما يستحق. أنها إلى حد ما خارج مجال خبرتي بالرغم من ذلك.

نصائح أخرى

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

وأن يقال، وسمعت من زميل في العمل منذ وقت طويل أنه عندما SGI تم ترقية برنامج OpenGL إلى الأجهزة الجديدة، كان لديهم مجموعة من وحدة الاختبارات التي من شأنها رسم مجموعة من primatives إلى الشاشة ثم حساب مبلغ MD5 لل الإطار عازلة. وعندئذ يمكن مقارنة هذه القيمة إلى قيم التجزئة جيدة معروفة لتحديد ما إذا كان API هو لكل بكسل دقيقة.

ويمكنك محاولة UISpec4J هو المصدر المفتوح وظيفية و / أو وحدة المكتبة اختبار لتطبيقات جافا على أساس سوينغ ...

وهنا بعض النصائح:

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

لالرسم، يجب اختبار القيمة التي توفرها إلى رمز التي تولد الرسم.

ويمكنك محاولة استخدام الخيار و <لأ href = "http://github.com/demetriusnunes/swinger" يختلط = "noreferrer"> مقلاع لكتابة اختبارات القبول وظيفية في سهل الانجليزية للتطبيقات سوينغ واجهة المستخدم الرسومية. يستخدم مقلاع مكتبة عتلة صغيرة نتبيانس 'تحت غطاء محرك السيارة لدفع التطبيق.

وخيار يسمح لك لكتابة الاختبارات مثل هذا:

 Scenario: Dialog manipulation
    Given the frame "SwingSet" is visible
    When I click the menu "File/About"
    Then I should see the dialog "About Swing!"
    When I click the button "OK"
    Then I should not see the dialog "About Swing!"

ونلقي نظرة على هذه مقلاع عرض الفيديو لرؤيته في العمل.

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

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

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

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

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

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

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

نافذة اللاعق للحصول على أرجوحة واياكس

ومن ما أعرفه، وهذا أمر معقد جدا، وحقا يعتمد على لغة - لغات عديدة لها طريقته في اختبار واجهة المستخدم الرسومية، ولكن إذا كنت حقا بحاجة لاختبار واجهة المستخدم الرسومية (في مقابل نموذج / واجهة المستخدم الرسومية التفاعل)، ل غالبا ما يكون لمحاكاة أزرار النقر المستخدم الفعلي. على سبيل المثال، الإطار سبحانه وتعالى المستخدمة في الكسوف يوفر SWTBot و <لأ href = "HTTP: // jfcunit. sourceforge.net/ "يختلط =" نوفولو noreferrer "عنوان =" JFCUnit "> JFCUnit وقد سبق ذكرها، وموزيلا ديه طريقته في محاكاة هذا في XUL (ومن ما قرأت على بلوق، وهذه يبدو الاختبارات لتكون هشة جدا).

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

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

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

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

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

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