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

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

سؤال

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

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

وتقول نفس الوثيقة أيضًا:

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

عند وصف اختبار الدخان، يقول المؤلفون ما يلي:

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

لم يسبق لي أن رأيت "اختبار الانحدار الشامل" و"اختبار الانحدار" يُستخدمان معًا ولا اختبار الانحدار الموصوف بأنه "اختبار الانحدار الكامل للنظام العام".من المفترض أن تكون اختبارات الانحدار خفيفة وسريعة قدر الإمكان.وتعريف اختبار الدخان هو ما تعلمته عن اختبار الانحدار.

هل أساءت فهم ما تعلمته؟هل تم تدريسي بشكل غير صحيح؟أم أن هناك تفسيرات متعددة لـ "اختبار الانحدار"؟

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

المحلول

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

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

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

نصائح أخرى

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

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

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

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

إن فهمي لمصطلح "اختبار الانحدار" هو:

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

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

وابدأ مع ما تحاول تحقيقه. ثم تفعل ما عليك القيام به لتحقيق ذلك الهدف. ومن ثم استخدام بنغو الكلمة الطنانة لتعيين كلمة لما تفعله في الواقع. تماما مثل أي شخص آخر :-) الدقة ليس كل ما مهم.

<اقتباس فقرة>   كان

... اختبار الانحدار صغير (فقط ما يكفي لإثبات أنك لم يكسر أي شيء مع إدخال تغيير أو وحدات جديدة) عينة من الاختبارات الشاملة

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

في عام، مجموعة فرعية من الاختبارات ميزة للميزة الجديدة التي أدخلت في النسخة X منتج تصبح أساس الاختبارات الانحدار لعرض X + 1، X + 2، وهلم جرا. مع مرور الوقت، قد تقلل من الوقت عن طريق الاختبارات ميزة / الانحدار من ميزات مستقرة التي لم تعاني من التراجع اتخاذها. إذا تعاني ميزة من الكثير من التراجع، ثم قد يكون من المفيد لزيادة التركيز على هذه الميزة.

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

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