Retesting, Regression, Sanity, Smoke Testing - شرح أكثر

مقال مجاني 6 دقيقة

مقدمة

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

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


الأهداف التعليمية

بنهاية هذا الدرس، ستكون قادراً على:

  • فهم الفرق بين Retesting, Regression, Sanity, و Smoke Testing
  • معرفة متى نستخدم كل نوع
  • فهم الترتيب الصحيح لهذه الاختبارات

1. Retesting (إعادة الاختبار)

التعريف

Retesting = إعادة الاختبار للتأكد إن الـ Bug تصلح

نعمله بعد الـ Bug Fixing - يعني بعد أن الـ Developer يصلح المشكلة.

مثال: Amazon Shopping Cart

تخيل لقينا Bug في Amazon:

المشكلة: عندما تضيف منتج للسلة، السعر يظهر غلط - يظهر $0 بدل السعر الحقيقي! ❌

الخطوات:

  1. سجلنا الـ Bug وبعتناه للـ Developer
  2. الـ Developer صلح المشكلة
  3. هسا دورنا: نعمل Retesting

كيف نعمل Retesting؟

  • نضيف منتج للسلة
  • نشوف السعر
  • لو السعر صحيح ← الـ Bug تصلح ✅
نصيحة
الـ Retesting بس للمشكلة التي تصلحت! مش لكل شي. يعني لن نختبر كل Amazon، لكن سنختبر إذا الـ Bug راح.

2. Regression Testing (اختبار الانحدار)

التعريف

Regression = التأكد إن الـ Functions القديمة لسه شغالة بعد التغيير

نعمله بعد أي تغيير بالكود - سواء تصليح Bug أو إضافة Feature جديدة.

ليش محتاجين Regression؟

تحذير
عندما الـ Developer بصلح Bug أو بغير الكود، ممكن يخرب شغلات كانت شغالة من قبل!

مثال: Amazon بعد تصليح الـ Bug

بعد أن عملنا Retesting وتأكدنا إن السعر صار صحيح، لازم نتأكد من الباقي:

  • هل Add to Cart لسه شغال؟ ✅
  • هل Remove from Cart لسه شغال؟ ✅
  • هل Update Quantity لسه شغال؟ ✅
  • هل Checkout لسه شغال؟ ✅

ليش؟ لأنه الـ Developer عندما صلح مشكلة السعر، ممكن بالغلط خرب شي آخر!

الفرق بين Retesting و Regression

Retesting Regression
نختبر الـ Bug اللي تصلح بس نختبر الـ Functions القديمة
نتأكد إن المشكلة راحت نتأكد إن التصليح ما خرب شي آخر

3. Smoke Testing (اختبار الدخان)

ليش اسمه Smoke Testing؟

زمان، عندما كانوا يفحصوا الماكينات والأجهزة، كانوا يشغلوها أول مرة ويشوفوا: لو طلع دخان (Smoke) معناته في مشكلة رئيسية!

التعريف

Smoke = اختبار سريع للأشياء الرئيسية قبل أن نضيع وقتنا

نعمله عندما يكون في:

  • Build جديد
  • تحديث كبير
  • Feature جديدة

مثال: Uber أطلق تحديث جديد

Uber أطلق version جديد. قبل أن نختبر كل شي بالتفصيل، نفعل Smoke Testing:

  • هل التطبيق بفتح؟ ✅
  • هل أستطيع أسجل دخول؟ ✅
  • هل أستطيع أشوف الخريطة؟ ✅
  • هل أستطيع أطلب رحلة؟ ✅

لو أي واحد من هذه ما اشتغل ← ما نكمل! نرجع الـ Build للـ Developer.

نصيحة
الـ Smoke Testing لازم يكون سريع - 15-30 دقيقة max! لكن نختبر الـ Happy Path، مش كل الـ edge cases.

4. Sanity Testing (اختبار السلامة)

التعريف

Sanity = اختبار الشيء الجديد الذي انضاف

نعمله بعد الـ Smoke Testing - بعد أن نتأكد إن الأساسيات شغالة.

الفرق بين Smoke و Sanity

Smoke Testing Sanity Testing
الأشياء الرئيسية القديمة الـ Feature الجديدة
General وسريع Specific ومحدد
أول شي نعمله بعد الـ Smoke

مثال: Uber ضاف ميزة جديدة "Schedule Ride"

Uber ضاف ميزة جدولة الرحلات مسبقاً.

أولاً - Smoke Testing:

  • التطبيق بفتح؟ ✅
  • Login شغال؟ ✅
  • طلب رحلة فورية شغال؟ ✅

ثانياً - Sanity Testing للميزة الجديدة:

  • هل أستطيع أختار تاريخ ووقت مستقبلي؟ ✅
  • هل تظهر الرحلة المجدولة؟ ✅
  • هل أستطيع ألغي الرحلة المجدولة؟ ✅

التسلسل الصحيح

السيناريو 1: Bug تصلح

1. لقينا Bug ❌

2. Developer صلح الـ Bug

3. Retesting: نتأكد إن الـ Bug تصلح ✅

4. Regression: نتأكد إن القديم لسه شغال ✅

السيناريو 2: Build جديد أو Feature جديدة

1. Build جديد أو Feature جديدة

2. Smoke Testing: الأساسيات شغالة؟ ✅

3. Sanity Testing: الجديد شغال؟ ✅

4. Regression: القديم لسه شغال؟ ✅
نصيحة
Regression Testing بيجي تقريباً في كل الحالات! لأنه أي تغيير بالكود ممكن يأثر على Functions قديمة.

جدول المقارنة الشامل

النوع متى؟ الهدف الـ Scope
Retesting بعد تصليح Bug التأكد إن المشكلة تصلحت الـ Bug فقط
Regression بعد أي تغيير التأكد إن القديم لسه شغال الـ Functions القديمة
Smoke Build جديد التأكد إن الأساسيات شغالة Critical Functions
Sanity Feature جديدة التأكد إن الجديد شغال الـ Feature الجديدة

أمثلة من الحياة العملية

مثال 1: Netflix

Bug Found: عندما تضغط Play، الفيديو لا يشتغل ❌

الخطوات:

  1. Developer صلح الـ Bug
  2. Retesting: نضغط Play ونشوف الفيديو يعمل ✅
  3. Regression: نتأكد إن Pause, Rewind, Subtitles لسه شغالين ✅

مثال 2: Careem

New Feature: Careem ضاف خيار "Careem Box" للتوصيل

الخطوات:

  1. Smoke: Login, Map, Book Ride شغالين؟ ✅
  2. Sanity: Careem Box - أستطيع أختاره؟ أحدد العنوان؟ أدفع؟ ✅
  3. Regression: طلب Ride العادي لسه شغال؟ ✅

مثال 3: Talabat

Bug Found: الـ Promo Code لا يعمل ❌

الخطوات:

  1. Developer صلح المشكلة
  2. Retesting: نجرب Promo Code ونشوف يعمل ✅
  3. Regression: نتأكد إن Add to Cart, Checkout, Payment لسه شغالين ✅

خلاصة الدرس

Retesting = بعد تصليح Bug، نتأكد إن المشكلة راحت

Regression = بعد أي تغيير، نتأكد إن القديم لسه شغال

Smoke = أول شي بعد Build جديد، نتأكد إن الأساسيات شغالة

Sanity = بعد الـ Smoke، نتأكد إن الجديد شغال

✅ الترتيب:

  • Bug Fix ← Retesting ← Regression
  • New Build ← Smoke ← Sanity ← Regression

اختبر فهمك - Quiz

السؤال 1

تم إصدار تحديث رئيسي لتطبيق، وقام فريق الاختبار تشغيل اختبار سريع للتأكد من أن الميزات الأساسية تعمل بشكل صحيح قبل البدء باختبارات أكثر شمولاً. ما نوع الاختبار؟

الجواب

Smoke Testing

لأنه اختبار سريع للـ Basic Functions قبل أن نكمل.


السؤال 2

بعد إصلاح خلل في تطبيق، قام فريق الاختبار تشغيل اختبارات للتحقق من أن الخلل تم إصلاحه بالفعل. ما نوع الاختبار؟

الجواب

Retesting

لأننا نختبر الـ Bug اللي تصلح بالتحديد.


السؤال 3

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

الجواب

Sanity Testing

لأننا نختبر الـ Feature الجديدة بالتحديد.


السؤال 4

بعد إجراء تغييرات في الكود، قام فريق الاختبار تشغيل اختبارات للتأكد من أن التغييرات لم تؤثر سلباً على وظائف التطبيق القائمة. ما نوع الاختبار؟

الجواب

Regression Testing

لأننا نختبر الـ Functions القديمة بعد التغيير.


السؤال 5

ما الفرق الرئيسي بين Smoke و Sanity؟

الجواب
  • Smoke: اختبار الأشياء الرئيسية القديمة (هل النظام شغال أصلاً؟)
  • Sanity: اختبار الشيء الجديد (هل الإضافة الجديدة شغالة؟)

Smoke أول شي، Sanity بعده.


يعطيكم العافية، ونلتقي بالدرس القادم!