سؤال

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

لدينا مستخدمون غير تقنيين يقومون بإجراء الاختبار، لكنهم غالبًا ما يفوتون الأجزاء ويسمحون للأخطاء بالمرور.

سؤالي:هل هناك أي أفضل الممارسات لتنظيم اختبار واجهة المستخدم لمشروع WinForms؟هل هناك أي طريقة لأتمتة ذلك؟

شكرًا!

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

المحلول

هناك أدوات اختبار واجهة المستخدم الرسومية التي ستقوم بالنقر فوق الأزرار والأشياء لك ولكنها هشة جدًا في تجربتي.

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

نصائح أخرى

يمكنك أتمتة اختبار واجهة المستخدم الرسومية باستخدام أبيض نطاق.

ضع في اعتبارك أيضًا استخدام التصميم الصديق لـ TDD، على سبيل المثال.يستخدم أفضل لاعب/MVC نمط.

أوصي بشدة بقراءة الوثائق من فرق الأنماط والممارسات في Microsoft.

إلقاء نظرة خاصة على كتلة تطبيق واجهة المستخدم المركبة و مركبWPF.

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

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

في حال وجد شخص ما هذا مفيدًا:

قائمة أدوات اختبار واجهة المستخدم الرسومية وجدت على ويكيبيديا.

الكتاب التالي هو مقدمة للموضوع.هناك العديد من الطرق حيث يوجد مطورين هناك..

http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby

هناك العديد من الأدوات والمكتبات المتاحة التي يمكنها أتمتة اختبار WinForms، بدءًا من الحلول مفتوحة المصدر مثل White وحتى الحلول التجارية الباهظة الثمن مثل HP QuickTest Pro.توجد أيضًا مساحة اسم UIAutomation في .NET إذا كنت تريد تشغيل إطار عمل التشغيل الآلي الخاص بك.لكن التكلفة الحقيقية للأتمتة تكمن في الوقت والمهارات المتخصصة التي تتطلبها للتنفيذ.تعد قابلية الصيانة أيضًا أحد أهم جوانب تصميم الاختبار الآلي؛لا ترغب في إنفاق موارد زائدة للحفاظ على أصول الأتمتة محدثة مع تطبيقك.هناك أيضًا الكثير من العوامل التي تؤثر على قرار الأتمتة والتي ستكون خاصة بتطبيقك ومؤسستك المحددة.

أفضل رهان لك هو إجراء المزيد من الأبحاث حول هذا الموضوع والتحقق من بعض مواقع الاختبار المتخصصة مثل http://www.sqaforums.com.

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

لا أستطيع حقًا المساعدة فيما يتعلق بالتنظيم أو أفضل الممارسات، ولكن وحدة يبدو أن الامتداد متاح لاختبار النماذج، NUnitForms.

لقد استخدمت تنزيلًا تجريبيًا مشابهًا لهذا المنتج (http://www.tethyssolutions.com/product.htm) وهذا المنتج (http://www.mjtnet.com/macro_scheduler.htm) منذ سنوات وكنت سعيدًا بالنتائج.هذه حلول رخيصة جدًا ويمكن بالفعل استخدام بعض منتجات مسجلات الماكرو هذه للاختبار الآلي.

هناك طريقة جديدة متاحة الآن وهي استخدام روبي، عبر جوهرة روبي تسمى win32-autogui.يوفر هذا إطارًا لاختبار تطبيقات Windows GUI.قم بدمجها مع أدوات Ruby RSpec وCucumber، وستكون بمثابة إطار اختبار قوي جدًا.

تعتمد كيفية تنظيم اختبار واجهة المستخدم على كيفية تصميم حالات الاختبار.

يمكن لأتمتة تطبيق Windows Forms في مستوى اختبار الوحدة استخدام إطار عمل TDD، مثل NUnit؛أو استخدم إطار عمل BDD، مثل NSpec.

يمكن لأتمتة تطبيقات Windows Forms في مستوى الاختبار الوظيفي استخدام White أو CodedUI أو حتى الاستخدام المباشر ويندوز أتمتة API 3.0 (أتمتة واجهة المستخدم وMSAA).

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

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