ما هو التوازن الصحيح بين الوحدة مقابل الوحدة؟الاختبار الوظيفي في تطبيق ويب نموذجي؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

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

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

المحلول

انا يعجبني ربع بريان ماريك في الاختبارات الآلية حيث يكون التمييز بين الأعمال مقابل الأعمال.التكنولوجيا التي تواجه ودعم البرمجة مقابل.منتج نقدي.

وبهذا الإطار تصبح مسألة التوازن، ما الذي أحتاجه الآن؟

نصائح أخرى

من المهم التمييز بين غرض ونطاق هذين النوعين من الاختبارات:

  • أ اختبار الوحدة عادةً ما يتم اختبار ميزة معينة على مستوى الوحدة/الفئة، على سبيل المثال.create-X، وupdate-Y، وfoo-the-bar، وcompact-the-whizbang، وما إلى ذلك.قد يكون لدى فئة واحدة اختبارات وحدة متعددة

  • أ اختبار وظيفي, ، والذي يُطلق عليه أيضًا "اختبار القبول" يختبر عادةً سيناريو حالة الاستخدام بدءًا من الواجهة الخارجية وحتى نهاية المعالجة، على سبيل المثال.من واجهة المستخدم إلى قاعدة البيانات والعودة مرة أخرى، من عملية الإدخال إلى أداة الإشعارات، وما إلى ذلك.

وهذان النوعان من الاختبارات هما غير قابلة للتبديل, ، وهي بشكل عام منفصل.لذا فإن فكرة تحقيق "التوازن" بينهما لا معنى لها.إما أنك في حاجة إليها أو لا تحتاج إليها.

إذا كنت تشير إلى سهولة ترميز كل نوع من الاختبارات في إطار عمل الاختبار الخاص بك، فهذا سؤال مختلف - ولكن استخدام إطار العمل (على سبيل المثال، NUnit مقابل NUnit).مستخدم روبوت) لا يغير نوع/طبيعة الاختبار.

أفضل "توازن"، بشكل عام، هو اختبار الوحدة للثقة والاكتمال، والاختبار الوظيفي لقبول العميل

وأنا أتفق مع ستيفن لوي أنه لا توجد مقايضة بين اختبار الوحدة والاختبار الوظيفي، حيث يتم استخدامهما لأغراض مختلفة تمامًا.

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

إذا كان ذلك مفيدًا، فإليك فئات الاختبار الخاصة بي.

يبدأ المطورون من الداخل ويعملون إلى الخارج، مع التركيز على التعليمات البرمجية:

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

يبدأ المختبرون من الخارج ويعملون من الداخل، مع التركيز على الميزات:

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

يعمل المستخدمون النهائيون من الخارج، وعادة ما يكون لديهم القليل من التركيز:

  • اختبارات القبول - التحقق من متطلبات المستخدم النهائي
  • اختبارات السيناريو - التحقق من مواقف العالم الحقيقي
  • اختبارات قابلية الاستخدام - التحقق من سهولة استخدام النظام
  • تبحث عن المراوغات والحواف الخشنة.

في التطبيق وأنا أعمل في هذه اللحظة، وربما يكون هناك 10: 1 وحدة لاختبارات وظيفية. اختبار عمل وحدة الأمور ببساطة مثل استرجاع الكيانات من DB، معالجة الأخطاء اختبارات للاتصال ديسيبل / شبكة الخ وهذه الأمور تشغيل سريعة - دقيقة أو أقل، ويتم تشغيلها من قبل المشروعات الإنمائية يوميا

.

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

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

ونحن نناقش باستمرار هذا: هل هناك حقا أي نقطة من دفع تغطية حدة اختبار سيناريوهات سخيفة على نحو متزايد لتغطية أعلى من ذلك بكثير؟

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

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

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

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

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

والمسوغ الأساسي وراء اختيار القبول على وحدة الاختبارات هو نفس الرشيد الأساسية لل<لأ href = "http://codebetter.com/blogs/david_laribee/archive/2008/09/09/why-solid-gimme -an-s.aspx "يختلط =" نوفولو noreferrer "> كود الصلبة. يجب أن يكون التطبيق الخاص بك قادرا على تغيير جذري مع إعادة بيع ديون الخ، ولكن جميع القضايا التجارية - قبول tests- ينبغي أن تكون قادرة على البقاء الامم المتحدة تغيرت وإثبات وجود سلوك نظام مقبول (اختبارات تمر). مع وحدة الاختبارات هناك في كثير من الأحيان على الترابط القوي الطبيعي للاختبار إلى رمز التنفيذ. على الرغم من انها رمز اختبار، انها لا تزال رمز والترابط القوي كما هو ونحن نعرف ينبغي تجنبها. عن طريق اختيار اختبارات القبول كنت في كثير من الأحيان أدت إلى أسفل دوامة من النجاح لخلق مخططة جيدا، استهلاك تنفصل بعد المعهد السماح تغيير تنفيذ وراء الكواليس دون فرض اختبارات لتغيير. أيضا، والأفكار تنفيذ المطور هي في خط مع رجال الأعمال الأفكار، سلوك النظام. في النهاية أجد أن كل هذا هو أفضل لرجال الأعمال ولرضا المبرمج.

من وجهة نظر نظرية كثيرا ما أسأل بلدي الذاتي إذا قطعة من رمز لا يمكن أن يتم اختبار عن طريق اختبار القبول لماذا هذا قطعة من التعليمات البرمجية يجب أن تكون موجودة؟ IE - إذا لم تكن جزءا من سيناريو العمل ساري المفعول، ثم يفعل ذلك قيمة رمز إضافة أو هو حاليا، وسوف تبقى وحدها تكلف

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

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

وJB http://jb-brown.blogspot.com

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

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

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