سؤال

هل هناك شيء مثل توليد اختبار الوحدة؟لو ذلك...

...هل يعمل بشكل جيد؟

...ما هي حلول التوليد التلقائي المتوفرة لـ .NET؟

...هل هناك أمثلة لاستخدام تكنولوجيا كهذه؟

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

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

المحلول

نلقي نظرة على بيكس.إنه مشروع بحثي لشركة Microsoft.من الموقع:

تُنشئ Pex اختبارات الوحدة من اختبارات الوحدة ذات المعلمات المكتوبة بخط اليد من خلال الاختبار الاستكشافي الآلي استنادًا إلى التنفيذ الرمزي الديناميكي.

نصائح أخرى

أعتقد أنه لا فائدة من إنشاء اختبار الوحدة، فيما يتعلق بـ TDD.

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

تعني اختبارات الوحدة الآلية أيضًا أن استراتيجيتك يتم اختبارها بعد ذلك، وهو ما يتعارض مع مبدأ الاختبار قبل TDD.مرة أخرى، TDD لا يتعلق بالاختبارات.

ومع ذلك، أعتقد أن MSTest لديه أداة إنشاء اختبار الوحدة تلقائيًا - لقد تمكنت من استخدام واحدة مع VS2005.

تم التحديث لعام 2017:

وحدة اختبار المولد النموذجي يعمل مع VS 2015-2017 ويتم صيانته.يبدو أن العمل كما هو معلن.

لقد قمت بإنشاء "ErrorUnit" ويقوم بإنشاء اختبارات وحدة MSTest أو NUnit من Visual Studio المتوقف مؤقتًا، أو من سجلات الأخطاء الخاصة بك؛السخرية من متغيرات الفئة ومعلمات الطريقة والوصول إلى بيانات EF حتى الآن.(http://ErrorUnit.com)

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

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

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

باراسوفت .TEST لديه وظيفة توليد الاختبارات.ويستخدم إطار عمل NUnit لوصف الاختبارات وتقييم التأكيدات.

من الممكن إعداد مجموعة اختبارات الانحدار عن طريق إنشاء سيناريوهات مؤتمتة (إنشاء المدخلات واستدعاء الطريقة التي تم اختبارها) وإنشاء تأكيدات تعتمد على سلوك قاعدة التعليمات البرمجية الحالية.لاحقًا، بعد تطور قاعدة التعليمات البرمجية قيد الاختبار، تشير التأكيدات إلى التراجعات أو يمكن تسجيلها بسهولة مرة أخرى.

لقد استخدمت NStub لإيقاف الاختبار لفصولي.إنه يعمل بشكل جيد إلى حد ما.

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

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

يرى الأدوات اللازمة لبناء حالات الاختبار.

يوجد منتج تجاري يسمى AgitarOne (www.agitar.com) يقوم تلقائيًا بإنشاء فئات اختبار JUnit.
لم أستخدمه، لذا لا يمكنني التعليق على مدى فائدته، ولكن إذا كنت أقوم بمشروع Java في الوقت الحالي فسأنظر إليه.

لا أعرف ما يعادل .net (أعلنت شركة Agitar عن إصدار .net لكن AFAIK لم يتحقق أبدًا).

أعلم أن هذا الموضوع قديم ولكن من أجل جميع المطورين، هناك مكتبة جيدة تسمى مولد اختبار الوحدة:

https://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8cff-165b505a38d7

تطوير جيد

GennyMcGenFace ينشئ اختبار وحدة لكل وظيفة في صفك وينشئ كائنات بكلمات/قيم عشوائية في كل معلمة.

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

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

سيبدو اختبار الوحدة هكذا

السيلينيوم يولد اختبارات الوحدة من أوامر المستخدم على صفحة ويب، وهو أمر أنيق جدًا.

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