حول الإختبارات البرمجية … أساس جودة تطبيقك

يقول بيل جيتس ” إن الشركات الكبيرة تعتني بالإختبارات لبرمجياتها مثلما تعتني في التطوير , ولديها فريق إختبار يوازي فريق التطوير”
ويقول أيضا “تكلفة الإختبار باهضة جدا , فهي تكلف أكواد برمجية أكثر من الكود للبرنامج , فسطر البرمجي الواحد يكلف ما يعادل 3 سطور برمجية”

ورغم  أهمية الإختبارات ودورها الكبيير جدا في تحسين المنتجات وضمان عملها , ترى الكثير من المطورين بل وشركات التطوير تهمل في هذه الجزئية ولا تعتني بها , ويكون الهدف هو الربح السريع وتسليم التطبيق بأسرع شكل ممكن , وبالتالي عدم نجاح البرمجية للعمل بشكل فعلي 

ينبغي أن يكون هناك خطة واضحة للإختبار وحيز كافي في التطوير لدور الإختبارات مهما صغر التطبيق أو كبر .. غير أنه ومع أخذ كل هذه الأسباب علينا بالإيمان أنه لا يوجد برمجية أو تطبيق تخلو من الأخطاء بنسبة 100% وهذا في أكبر الشركات التي تعتني كثيرا في الإختبارات والتحقق 

في تدوينتي هذه لن يتسع المجال للحديث عن كل ما يتضمنه الإختبار , ولكن سنقوم بعمل مجموعة من التدوينات لتغطي أهم النقاط.

نبدأ بتعريف 

إختلف التعريف مع الوقت مع ظهور أهمية الإختبارات والتحقق في البرمجيات شيئا فشيئا فبدأ بأنه ” عملية إظهار الأخطاء الغير ظاهرة” و تنوعت التعريفات ويمكن القول بأن التعريف الأمثل هو ” العمليات التي يتم فيها تنفيذ البرنامج بنية البحث عن الأخطاء”
وبعد أن عرفنا ما معنى الإختبار البرمجي , لا بد أن نمر على مستويات هذه الإختبارات , التي يمكن تدعيم دائرة تطوير التطبيق بكل منها وربطها بأوقات زمنية محددة.

مستويات الإختبارات

– إختبار الوحدة (Unit Testing)
– إختبار التجميع (Integration Testing)
– إختبار النظام (System Testing)

إختبار الوحدة (Unit Testing) : وهو ما يتم غالبا من خلال نفس المطور , بحيث يقوم بعمل إختبار للكود البرمجي الخاص به , بكتابة كود برمجي للإختبار 

إختبار التجميع (Integration Testing): ويتم فيه عمل إختبار الجزئيات عند ربطها , فقد تكون البرمجية تعمل بشكل صحيح بشكل فردي في إختبار الوحدة , ولكن عند ربطها بجزئية أخرى يحدث الخطأ , وهذه المرحلة تسبق مرحلة إختبار النطام ككل , وفي حال كتابة إختبار الوحدة يمكننا تشغيلهم كلهم مره واحده عند ربط جزئيات التطبيق لنتأكد أنها تعمل بالشكل المطلوب

إختبار النظام (System Testing): يشمل المرحلة الأخيرة من مراحل الإختبار , وهي التحقق بأن التطبيق يوافق المتطلبات الحقيقية للمستفيد , ولا يحتاج هذا النوع من الإختبارات إلى معرفة بمنطق التطبيق أو بناءه الداخلي , وإنما يتم من الخارج دون التطرق لتفاصيل داخليه وهناك أنواع مختلفة للإختبارات تحت هذه المرحلة منها : 

  1. إختبار الدخان (Smoke Test): وهي مجموعة من حالات الإختبارات التي يقوم بإعدادها فريق الفحص , بحيث تختبر المهام الأساسية للتطبيق وفي حال عدم عمل أي منها يتم الإرجاع إلى فريق التطوير لحل المشاكل , وهذا النوع غير مكلف وتقوم به شركة مايكروسوفت بشكل يومي عند أي تجديد على المنتجات 
  2. إختبار سهولة الإستخدام (Usability Testing): إختبارات تقيس مدى سهولة إستعمال النظام ويندرج تحت علم تفاعل الإنسان والحاسوب (HCI) فمعرفة سهولة إدخال البيانات في الشاشات والتقارير ومعدل الضغطات هو أمر مهم في هذا الإختبار
    إختبار سهولة الإستخدام وملاحظات العميل
  3. إختبار التوافقية (Compatibility testing): التوافقية في مختلف الأشياء سواء كان على الأجهزة , المتصفحات , قياسات الشاشات المختلفة , ويتم تحديد حد للتوافقية نظرا لصعوبة توافق التطبيق مع كل المتغيرات
  4.  إختبار التحمل (Load Test): معرفة مدى تحمل النظام عند حد معين من الطلبات أو المستخدمين ومعرفة مدى فاعلية إستجابة التطبيق
     
  5.  إختبار الضغط (Stress Test):إختبار مدى أقصى تحمل للنظام لمعرفة ما هي أقصى طاقة للنظام وكيف يقوم بمعالجة الأمر في حال أقصى مدى من الطلبات والمستخدمين
    إختبار الضغط
  6. إختبار الأمان (Security Test): يتم عمل حالات إختبار لمعرفة مدى حماية المعلومات والنظام 
  7. إختبار الموافقة (Acceptance Test): وهو أخر مرحلة من مراحل الإختبارات حيث يتم فيه إختبار موافقة النظام للمتطلبات العميل , ونلاحظ إرتباط هذا الإختبار بإختبار سهولة الإستخدام لأن كلاهما يقوم به أو يدخل به العميل , وهناك أنواع تندرج تحت هذا الإختبار

      – إختبار موافقة المستخدم (User Acceptance Testing): ينقسم إلى Alpha حيث يتم فحص التطبيق في داخل بيئة العمل , بواسطة تعليمات المطويرين , أما ال Beta فيكون في بيئة المستخدم الحقيقية ولكن يقوم بتجربته أشخاص محددون ويتم إعطاء مرجع بالأخطاء والملاحظات 
     

      – إختبار الموافقة للعمل (Business Acceptance Testing): يكون بواسطة ممثلين أعمال حيث يتم التأكد أن التطبيق يوافق طبيعة العمل والعمليات 

  8. إختبار التراجع (Regression Test): يكون عند تطوير النظام , فيتم عند إضافة أي خاصية التأكد من أن النظام لم يتأثر , حيث يتم إعادة إختبار المسارات المؤثرة للتأكد من عمل النظام
    إضافة خاصية جديدة مع ضمان عمل النظام

 ولكل تطبيق الإختبارات الخاصة به فلا ينبغي عمل كل الإختبارات على كل تطبيق , حيث يتم إعداد خطة منذ بداية إنشاء التطبيق بالإختبارات التي ستتم في كل مستوى 

كان هذا إستعراض لأهم إختبارات البرمجيات , بالتأكيد هناك إختبارات أخرى , سيتم تناول بعض الإختبارات بشيء من التفصيل في التدوينات القادمة 

دمتم بود إلى تدوينة أخرى

شارك هذا الموضوع: