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)
🎯 استراتيجية الاختبار:
-
ابدأ بـ Unit Testing
-
بعد كده اعمل Integration Testing
-
ثم اختبر النظام ككل (System Testing)
-
وسلّم للعميل لـ Acceptance Testing
-
وفي كل تحديث: اعمل Regression Testing
🔄 مثال بسيط – تطبيق بيع أونلاين:
الاختبار | المثال |
---|---|
Unit | اختبار دالة CalculateDiscount() |
Integration | هل عند الطلب، المنتج يتخصم من المخزون؟ |
System | هل كل الخطوات من تسجيل → طلب → دفع شغالة؟ |
UAT | العميل يجرب يطلب منتج بنفسه |
Regression | تضيف ميزة "كوبونات خصم" → تتأكد إن الدفع القديم لسه شغال صح |
Load | تجرب 500 طلب في نفس اللحظة |
Security | تحاول تدخل بيانات SQL في خانة الاسم وتشوف هل في حماية؟ |
تعليقات
إرسال تعليق