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:
تفتح المنتج
تضغط "Add to Cart"
تتحقق إنه المنتج ظهر بالسلة
هذا كل شيء! لا تعرف:
ما الـ API call اللي انبعث
كيف انحفظت البيانات بالـ Database
ما الـ Backend logic اللي اشتغل
نصيحة
Black Box Testing مثل إنك عم تستخدم التطبيق - مش عم تفحصه من جوا.
متى نستخدم Black Box؟
عندما تريد أن تختبر تجربة المستخدم النهائية
عندما تريد تتأكد إنه الـ Happy Path شغّال
عندما لا تملك وصول للكود أو البنية التحتية
لكن في مشكلة...
لو اعتمدت لكن على Black Box، رح تفوتك مشاكل كتيرة! ليش؟ لأنك ترى لكن "الواجهة" - لا ترى ما عم يصير جوا.
White Box Testing: الاختبار من الداخل
White Box Testing هو العكس تماماً - تختبر الكود نفسه والـ Internal Logic.
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 هو الأقوى؟
لأنه يجمع أحسن شيء من العالمين:
تختبر من منظور المستخدم (مثل Black Box)
لكن عندك معرفة تقنية تخليك تحفر أعمق (مثل 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:
السيناريو:
المستخدم يضغط "Forgot Password"
يدخل الإيميل
يوصله إيميل فيه رابط
يضغط على الرابط
يدخل كلمة سر جديدة
يسجل دخول بكلمة السر الجديدة - شغّال!
النتيجة: الميزة شغّالة! ✅
لكن هل هذا كافي؟ طبعاً لأ!
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!
بالدرس الجاي رح نحكي عن موضوع مهم: "كيف تفكر كمختبر محترف" - لأنه الاختبار مش بس مهارات تقنية، هو طريقة تفكير!