Gray Box Testing - المنطقة الذهبية للمختبرين المحترفين

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

مقدمة

اليوم سنحكي عن موضوع حرفياً سيغير طريقة تفكيرك بالاختبار - مناهج الاختبار الثلاثة: Black Box، White Box، وأهمهم على الإطلاق: Gray Box Testing.

خلّيني أسألك سؤال: لو قلتلك في منطقة ذهبية بين "لا تعرف شيء عن النظام" وبين "تعرف كل شيء عن الكود"، وهذه المنطقة هي التي تميز المختبر العادي عن المختبر المحترف - ماذا سـتختار؟

هذا بالضبط موضوع درسنا اليوم!

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

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

  • فهم الفرق بين Black Box، White Box، و Gray Box Testing
  • إدراك ليش Gray Box هو المنهج الأقوى للمختبرين
  • معرفة ما المعلومات التقنية التي لازم تتعلمها حتى تصير مختبر محترف
  • فهم كيف المعرفة التقنية تجعلك تلاقي مشاكل أكتر وأعمق

Black Box Testing: الاختبار من الخارج

Black Box Testing معناه إنك تختبر النظام كمستخدم عادي - بدون لا تعرف شيء عن الكود الداخلي أو البنية التحتية.

كيف يشتغل؟

تخيّل إنك تريد أن تختبر ميزة "إضافة منتج للسلة" في Amazon:

  1. تفتح المنتج
  2. تضغط "Add to Cart"
  3. تتحقق إنه المنتج ظهر بالسلة

هذا كل شيء! لا تعرف:

  • ما الـ API call اللي انبعث
  • كيف انحفظت البيانات بالـ Database
  • ما الـ Backend logic اللي اشتغل
نصيحة
Black Box Testing مثل إنك عم تستخدم التطبيق - مش عم تفحصه من جوا.

متى نستخدم Black Box؟

  • عندما تريد أن تختبر تجربة المستخدم النهائية
  • عندما تريد تتأكد إنه الـ Happy Path شغّال
  • عندما لا تملك وصول للكود أو البنية التحتية

لكن في مشكلة...

لو اعتمدت لكن على Black Box، رح تفوتك مشاكل كتيرة! ليش؟ لأنك ترى لكن "الواجهة" - لا ترى ما عم يصير جوا.


White Box Testing: الاختبار من الداخل

White Box Testing هو العكس تماماً - تختبر الكود نفسه والـ Internal Logic.

كيف يشتغل؟

المختبر يفتح الكود ويفحص:

  • كل الـ if statements
  • كل الـ loops
  • كل الـ functions والـ methods
  • التعامل مع الـ exceptions
  • الـ Code Coverage

مثال:

لو عندك function تحسب الخصم على منتج:

function calculateDiscount(price, userType) {
  if (userType === 'premium') {
    return price * 0.20; // 20% discount
  } else if (userType === 'regular') {
    return price * 0.10; // 10% discount
  } else {
    return 0;
  }
}

المختبر بـ White Box سيختبر:

  • عندما userType يكون 'premium'
  • عندما يكون 'regular'
  • عندما يكون أي شيء آخر
  • عندما يكون null أو undefined

White Box Testing يحتاج معرفة برمجية قوية - عادة يعمله الـ Developers أو الـ Automation Engineers.

ليش ما منركز على White Box كثير؟

لأنه:

  • يحتاج مهارات برمجية عالية
  • يركز على "الكود" مش على "القيمة للمستخدم"
  • غالباً الـ Developers همّ اللي بيعملوه عن طريق Unit Tests

لكن هون تأتي المنطقة الذهبية...


Gray Box Testing: المنطقة الذهبية للمختبرين المحترفين

هون السحر! هون المكان الذي المختبرين المحترفين بيتميزوا.

ما هو Gray Box Testing؟

Gray Box Testing معناه إنك تختبر كمستخدم (Black Box)، لكن عندك معرفة تقنية عن:

  • الـ API calls
  • بنية الـ Database
  • كيف تنخزن البيانات
  • الـ Logs والـ System Behavior
  • الـ Architecture العامة للنظام

لا داعي تكون مبرمج خبير - لكن لازم تفهم كيف النظام يعمل من ورا الكواليس.

نصيحة
Gray Box Testing = عقلية Black Box (اختبر كمستخدم) + معرفة White Box (فهم تقني للنظام)

ليش Gray Box هو الأقوى؟

لأنه يجمع أحسن شيء من العالمين:

  1. تختبر من منظور المستخدم (مثل Black Box)
  2. لكن عندك معرفة تقنية تخليك تحفر أعمق (مثل White Box)

النتيجة؟ تجد مشاكل أكتر وأخطر من المختبرين الذين يستخدموا Black Box بس!


المعرفة التقنية التي بتميزك كـ Gray Box Tester

خلّينا نحكي عن ما بالضبط لازم تتعلمه حتى تصير Gray Box Tester محترف:

1. فهم الـ API Calls

عندما تعرف ما الـ API calls اللي عم تنبعث، تستطيع:

مثال من Instagram:

عندما المستخدم يفعل "Like" لصورة:

  • Black Box Tester: يرى إنه القلب صار أحمر - تمام، الميزة شغّالة!
  • Gray Box Tester: يفتح الـ Network Tab بالـ Browser، يرى:
  • في API call رايح على /api/posts/123/like
  • الـ Response يُرجع 200 OK
  • الـ Request يحتوي على post_id و user_id

هسّا يستطيع يسأل أسئلة أعمق:

  • ماذا يصير لو بعتت نفس الـ Request مرتين بسرعة؟
  • ما لو غيّرت الـ user_id لمستخدم آخر؟
  • ما لو بعتت post_id غير موجود؟
  • في rate limiting؟ أستطيع أبعت 1000 like بثانية؟

شايف؟ المعرفة التقنية خلّتك تفكر بـ سيناريوهات أخطر وأعمق!

2. فهم بنية الـ Database

عندما تعرف كيف البيانات منظمة بالـ Database، تستطيع أن تختبر أذكى.

مثال من Facebook:

عندما تنشر Post:

  • Black Box Tester: يرى إنه الـ Post ظهر - تمام!
  • Gray Box Tester: يعرف إنه في جدول posts بالـ Database فيه:
  • post_id
  • user_id
  • content
  • created_at
  • privacy_setting (public, friends, private)

هسّا يستطيع يسأل:

  • ماذا يصير لو المستخدم نشر post فاضي (empty content)؟
  • ما لو الـ privacy_setting غير موجود أو null؟
  • هل الـ created_at ينحفظ بالـ timezone الصحيح؟
  • ماذا يصير لو المستخدم حذف حسابه وعنده posts؟ بيضلوا موجودين؟

هذه أسئلة ما كنت ستفكر فيها لو ما كنت تعرف بنية الـ Database!

3. معرفة كيف تنخزن البيانات

فهم Data Flow - كيف البيانات تتحرك من الـ Frontend للـ Backend للـ Database.

مثال من WhatsApp:

عندما تبعت رسالة:

  • Black Box Tester: يرى إنه الرسالة وصلت - تمام!
  • Gray Box Tester: يعرف إنه:
  • الرسالة بتنشفّر على جهازك
  • تنبعث للسيرفر
  • السيرفر بيخزنها مؤقتاً لحد لا توصل للمستقبل
  • عندما توصل، بتنحذف من السيرفر

هسّا يستطيع يختبر:

  • ماذا يصير لو الإنترنت انقطع قبل لا توصل الرسالة؟
  • هل الرسالة تنحفظ locally لحد ما الإنترنت يرجع؟
  • ما لو المستقبل offline؟ كم من الوقت السيرفر سيخزن الرسالة؟
  • ماذا يصير لو المستخدم حذف الرسالة قبل لا توصل؟

المعرفة التقنية خلّتك تفكر بـ Edge Cases ما كنت ستفكر فيها!

4. قراءة الـ Logs

الـ Logs هي كنز للمختبر! تقلك ما عم يصير جوا النظام.

مثال من Netflix:

عندما بتشغّل فيلم ويوقف كل قليلاً (buffering):

  • Black Box Tester: بيبلّغ: "الفيلم يوقف" - ما عنده معلومات أكتر
  • Gray Box Tester: يفتح الـ Console Logs أو الـ Network Logs، يرى:
  • في errors تقول: Failed to fetch video chunk: Timeout
  • الـ CDN (Content Delivery Network) عم يرجع errors
  • في retry mechanism لكن عم يفشل

هسّا يستطيع يكتب Bug Report أفضل:

  • "الفيلم يوقف عندما الـ CDN يُرجع timeout error"
  • "الـ Retry mechanism يحاول 3 مرات لكن كلهم بيفشلوا"
  • "المشكلة تصبح لكن مع الـ HD quality - مع SD تعمل عادي"

الـ Logs خلّتك تكتب bug report واضح ومفيد - مش مجرد "ما اشتغل"!


مثال شامل: اختبار ميزة "Reset Password"

خلّينا ناخذ مثال واقعي ونشوف الفرق بين التلات مناهج.

الميزة: المستخدم نسي كلمة السر، يريد أن يعمل Reset.

Black Box Testing:

السيناريو:

  1. المستخدم يضغط "Forgot Password"
  2. يدخل الإيميل
  3. يوصله إيميل فيه رابط
  4. يضغط على الرابط
  5. يدخل كلمة سر جديدة
  6. يسجل دخول بكلمة السر الجديدة - شغّال!

النتيجة: الميزة شغّالة! ✅

لكن هل هذا كافي؟ طبعاً لأ!

Gray Box Testing:

نفس السيناريو، لكن مع معرفة تقنية:

المختبر يعرف إنه:

  • عندما المستخدم يطلب reset، النظام يولد token فريد
  • الـ Token ينحفظ بالـ Database مع expiry time (مثلاً ساعة)
  • الـ Token ينبعث بالإيميل
  • عندما المستخدم يضغط على الرابط، النظام يتحقق من الـ Token

هسّا يستطيع يسأل أسئلة أعمق:

سؤال 1: ماذا يصير لو استخدمت نفس الـ Token مرتين؟

  • يفتح الـ Network Tab
  • يرى الـ Token بالـ URL: reset?token=abc123xyz
  • يجرب يستخدم نفس الرابط مرة أخرى بعد أن غيّر الباسورد

احتمالات:

  • لو اشتغل: في ثغرة أمنية! لازم الـ Token يُستخدم مرة واحدة بس
  • لو ما اشتغل: عظيم! النظام آمن

سؤال 2: ماذا يصير لو الـ Token انتهت صلاحيته؟

  • يستنى ساعة (أو يغير الوقت بالـ Database لو عنده وصول)
  • يجرب يستخدم الرابط

احتمالات:

  • لو اشتغل: مشكلة! الـ Token المنتهي لازم ما يشتغل
  • لو رجع error واضح: عظيم! لكن هل الرسالة واضحة للمستخدم؟

سؤال 3: ماذا يصير لو المستخدم طلب reset أكتر من مرة؟

  • يطلب reset 5 مرات بسرعة
  • يرى الإيميلات التي وصلت

احتمالات:

  • لو كل الـ Tokens شغّالين: مشكلة! لازم الـ Token القديم يتلغى عندما بيجي واحد جديد
  • لو في rate limiting: عظيم! النظام محمي من الـ abuse

سؤال 4: ماذا يصير لو عدّلت الـ Token يدوياً؟

  • ياخد الـ Token من الـ URL: reset?token=abc123xyz
  • بيغيره لـ reset?token=abc123abc
  • يرى ماذا يصير
تحذير
لو الـ Token المعدّل اشتغل - هذه ثغرة أمنية خطيرة! ممكن مهاجم يخمّن tokens ويدخل على حسابات ناس أخرى. لازم تبلّغ فوراً!

احتمالات:

  • لو اشتغل: ثغرة أمنية خطيرة! ممكن أحد يخمّن tokens
  • لو رجع error: عظيم!

سؤال 5: هل الـ Token مشفّر ولا plain text؟

  • يفحص الـ Token بالـ URL
  • لو كان مثل: reset?token=user123_2024 - مشكلة! معلومات واضحة
  • لو كان مثل: reset?token=7f3b9c8e2a1d5f6e4b8c9a2d3e5f7a9b - أفضل!

شايف الفرق؟

  • Black Box: اختبر السيناريو الأساسي بس
  • Gray Box: اختبر الأمان، الـ Edge Cases، والـ Security Vulnerabilities

المختبر الـ Gray Box لاقى 5 احتمالات للمشاكل - المختبر الـ Black Box ما لاقى ولا مشكلة!


كيف تصير Gray Box Tester محترف؟

هذه المهارات التي لازم تتعلمها:

1. تعلّم أساسيات الـ APIs

  • ما هو REST API
  • كيف تقرأ الـ Request والـ Response
  • HTTP Methods (GET, POST, PUT, DELETE)
  • Status Codes (200, 404, 500، الخ)
  • كيف تستخدم Browser DevTools (Network Tab)

2. تعلّم أساسيات الـ Databases

  • ما هو SQL
  • كيف تقرأ Database Schema
  • العلاقات بين الجداول (Foreign Keys)
  • لا داعي تكون DBA خبير - لكن افهم الأساسيات!

3. تعلّم كيف تقرأ Logs

  • Console Logs بالـ Browser
  • Server Logs (لو عندك وصول)
  • Error Messages
  • Network Errors

4. افهم الـ System Architecture

  • كيف يتواصل الـ Frontend مع الـ Backend
  • ما هو الـ CDN
  • ما هو الـ Caching
  • كيف تشتغل الـ Sessions والـ Cookies
نصيحة
لا لازم تكون مبرمج حتى تكون Gray Box Tester - لكن لازم تكون فضولي وتحب تتعلم كيف الأشياء تعمل!

ليش Gray Box هو المستقبل للمختبرين؟

في عصر الذكاء الاصطناعي:

الـ AI يستطيع يعمل Black Box Testing

  • ChatGPT أو أدوات الـ AI تستطيع أن تولد test cases أساسية
  • الـ Automation Tools تستطيع أن تشغّل سيناريوهات بسيطة

لكن الـ AI لا يستطيع يعمل Gray Box Testing المحترف

  • الـ AI لا يفهم السياق الكامل للنظام
  • لا يستطيع يفكر بـ Security Vulnerabilities بنفس العمق
  • ما عنده الحدس لمعرفة وين لازم يحفر أعمق

المختبر الـ Gray Box اللي عنده معرفة تقنية + تفكير نقدي + فضول = لا يستبدل بسهولة!

نصيحة
استثمر بتعلم المهارات التقنية - هذا ما سيميزك ويحميك بعصر الـ AI!

خلاصة الدرس

خلّيني ألخصلك الموضوع ببساطة:

Black Box Testing - اختبار من الخارج كمستخدم عادي، سريع وبسيط لكن بيفوتك مشاكل كتيرة ✅ White Box Testing - اختبار الكود نفسه، معقد وبياخذ وقت، عادة شغل الـ Developers ✅ Gray Box Testing - المنطقة الذهبية! اختبار من الخارج + معرفة تقنية = مشاكل أعمق وأخطر ✅ المعرفة التقنية - فهم الـ APIs والـ Database والـ Logs يجعلك تلاقي مشاكل ما أحد غيرك يلاقيها

Black Box White Box Gray Box
اختبار من الخارج اختبار الكود نفسه اختبار من الخارج + معرفة تقنية
مثل المستخدم العادي مثل المطور مثل المستخدم الذكي تقنياً
سريع وبسيط معقد ووقته طويل التوازن المثالي
يجد المشاكل الواضحة يفحص الكود يجد مشاكل أعمق وأخطر
لا يحتاج مهارات تقنية يحتاج مهارات برمجية عالية يحتاج فهم تقني أساسي

Gray Box Testing هو المنطقة الذهبية - استثمر بتعلم الـ APIs، Database، والـ Logs - هذا ما سيجعلك مختبر لا يُستبدل بعصر الـ AI!


بالدرس الجاي رح نحكي عن موضوع مهم: "كيف تفكر كمختبر محترف" - لأنه الاختبار مش بس مهارات تقنية، هو طريقة تفكير!

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