SDLC - Software Testing

✅ Software Testing – اختبار البرمجيات بالتفصيل


✳️ أولاً: ما هو اختبار البرمجيات؟

اختبار البرمجيات هو عملية التحقق من إن البرنامج:

  • شغال زي ما المفروض

  • بيحقق المتطلبات

  • خالي من الأخطاء قدر الإمكان

  • سهل الاستخدام وآمن

الهدف الأساسي = ضمان الجودة (Quality Assurance)



🧭 نوعين أساسيين:

النوع المعنى
Verification بنتأكد إننا بنبني البرنامج "بالطريقة الصح" (تقييم العملية)
Validation بنتأكد إننا بنبني "البرنامج الصح" (تقييم المنتج النهائي)


🧪 أنواع الاختبارات الرئيسية:

1. 🧱 Unit Testing – اختبار الوحدات

  • بيختبر وحدة صغيرة جدًا (Class / Method)

  • مثال: دالة Add(x, y) → هل بترجع ناتج صحيح؟

🔧 أدوات في C#: xUnit – NUnit – MSTest


2. 🧩 Integration Testing – اختبار التكامل

  • نختبر ربط الأجزاء ببعضها:

    • API ↔ Database

    • Frontend ↔ Backend

مثال: بعد إضافة منتج → هل فعلاً اتحفظ في قاعدة البيانات؟


3. 🧰 System Testing – اختبار النظام ككل

  • نختبر كل النظام من منظور المستخدم النهائي

  • هل كل المزايا شغالة بشكل متكامل؟


4. ✅ Acceptance Testing – اختبار القبول

  • العميل أو ممثله يجرب النظام

  • يتأكد إن المطلوب تحقق فعلًا

  • مثال: UAT (User Acceptance Testing)


5. 🔁 Regression Testing – اختبار عدم كسر الوظائف القديمة

  • لما تضيف ميزة جديدة أو تصلّح Bug، لازم تتأكد إن ده ما بوّظش حاجة قديمة


6. ⏱️ Performance Testing – اختبار الأداء

  • هل النظام سريع؟ هل يتحمل عدد كبير من المستخدمين؟

أنواع فرعية: Load – Stress – Spike – Endurance Testing


7. 🔐 Security Testing – اختبار الأمان

  • اختبار هل النظام عرضة للاختراق؟ هل فيه ثغرات زي SQL Injection؟

أدوات: OWASP ZAP – Burp Suite


8. 📱 Usability Testing – اختبار سهولة الاستخدام

  • هل المستخدم مرتاح في استخدام النظام؟ هل التصميم واضح وبسيط؟



🛠️ الفرق بين Manual Testing و Automated Testing

النوع المعنى مميزاته عيوبه
🧍 Manual اختبار يدوي من غير أدوات برمجية مرن – بيكشف مشاكل التصميم بطيء – متعب في المشاريع الكبيرة
🤖 Automated اختبار باستخدام كود أو أدوات سريع – دقيق – يعاد بسهولة محتاج إعداد وتكلفة أولية

أدوات مشهورة:

  • Selenium (UI Testing)

  • Postman (API Testing)

  • Playwright / Cypress (Frontend Testing)

  • xUnit / MSTest / NUnit (C# Unit Testing)



🎯 استراتيجية الاختبار:

  1. ابدأ بـ Unit Testing

  2. بعد كده اعمل Integration Testing

  3. ثم اختبر النظام ككل (System Testing)

  4. وسلّم للعميل لـ Acceptance Testing

  5. وفي كل تحديث: اعمل Regression Testing



🔄 مثال بسيط – تطبيق بيع أونلاين:

الاختبار المثال
Unit اختبار دالة CalculateDiscount()
Integration هل عند الطلب، المنتج يتخصم من المخزون؟
System هل كل الخطوات من تسجيل → طلب → دفع شغالة؟
UAT العميل يجرب يطلب منتج بنفسه
Regression تضيف ميزة "كوبونات خصم" → تتأكد إن الدفع القديم لسه شغال صح
Load تجرب 500 طلب في نفس اللحظة
Security تحاول تدخل بيانات SQL في خانة الاسم وتشوف هل في حماية؟


تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

1.1 SQL Introduction