سؤال

لقد سمعت مؤخرا عن اختبار وظيفي على اختبار الوحدة.

أفهم أن اختبار الوحدة اختبارات كل من إمكانيات جزء معين من التعليمات البرمجية من أشكالها الذرية. ولكن ماذا عن الاختبار الوظيفي؟

هذا يبدو لي مثل الاختبار فقط إذا كان الرمز يعمل، ولكنه موثوق به كاختبار الوحدة؟

لقد قيل لي أن هناك مدرستين من الأفكار لهذه المسألة. تفضل Cardain اختبار الوحدة، والبعض الآخر اختبار وظيفي.

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

شكرا!

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

المحلول

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

  • اختبار الوحدة = تصميم محركات الأقراص (مع تطوير اختبار, أو TDD)
  • اختبار التكامل = هل تعمل جميع القطع معا
  • اختبار قبول العملاء = هل تفي بمتطلبات العملاء
  • الاختبار اليدوي = غالبا ما يغطي UI؛ يمكن للمختبرين المخصصين العثور على أتمتة يفتقد
  • اختبار التحميل = ما مدى أداء النظام مع كميات واقعية من البيانات

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

وهناك آخرون؛ لأكثر من معظم الناس يهتمون بمعرفة، انظر اختبار البرمجيات.

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

طلبت الموارد؛ أوصي كتاب روي أو osherove فن اختبار الوحدة مع أمثلة في .NET. وبعد في حين لا يوجد كتاب مثالي، فإن هذا واحد يعطي العديد من المؤشرات الممتازة في كتابة الاختبارات الجيدة.

تحرير: وللكتابة اختبارات ضد البرامج الحالية، لا شيء يدق كتاب مايكل ريش العمل بفعالية مع القانون القديم.

نصائح أخرى

اختبار الوحدة مقابل الاختبار الوظيفي ليس xor, ، بل and. وبعد اختبار الوحدة يدور حول اختبار وحدات في العزلة أثناء إجراء الاختبارات الوظيفية حول اختبار الكل في التكامل (هل تعمل جميع الوحدات معا بشكل صحيح؟).

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

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

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

كلا النوعين من الاختبار مهمان.

تحرير: لإضافة وجهة نظر مختلفة قليلا لما قاله GBJBAANB:

  • اختبار الوحدة = يعمل الرمز الخاص بي
  • اختبار وظيفي = أعمال التصميم الخاصة بي
  • اختبار التكامل = التعليمات البرمجية الخاصة بي تستخدم أشياء الطرف الثالث الخاص بك بشكل صحيح (قواعد البيانات، إلخ)
  • اختبار قبول المصنع = نظامي يعمل
  • اختبار قبول الموقع = تمتص الكود الخاص بك، هذا تماما ليس ما طلبته!؟!
  • اختبار الوحدة = أدنى مستوى حبيبي.
  • اختبار وظيفي = مستوى middling، المستوى المعياري.
  • اختبار التكامل = مستوى التطبيق أعلى.
  • اختبار قبول المصنع = انظر كل شيء
  • اختبار قبول الموقع = انظر كل شيء فشل :)

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

اختبار وظيفي، وتسمى أيضا اختبار النظام, ، يهدف إلى اختبار النظام الكامل، والتحقق من المتطلبات الوظيفية راضية.

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

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

اختبار الوحدة والاختبارات الوظيفية لها نتائج مختلفة.

اختبار الوحدة يتحقق من أن قطعة صغيرة تعمل كما هو متوقع. عادة ما يتم ذلك من قبل المطور للتأكد من أن الرمز يعمل بشكل صحيح. وعادة ما تكون مؤتمتة من قبل اختبار الإطار أيضا.

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

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

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

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

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

يوجد مكان لكلا في معظم أعمال التطوير.

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

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

هم على مستويات مختلفة وكلاهما يجب استخدامه.

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