كل ما تريد معرفته عن Unit Testing مع امثلة توضيحيه

كل ما تريد معرفته عن Unit Testing مع امثلة توضيحيه

هي عملية اختبار أصغر الوحدات الوظيفية في الكود، مثل الدوال أو CLASSES. تضمن هذه الاختبارات جودة البرنامج وتُعدّ جزءًا لا يتجزأ من عملية تطويره , يعتبر اختبار التطبيقات مفيد في إنشاء تطبيق جوال خاليه من المشاكل وهو  من أهم الخطوات في تطوير أي تطبيق Flutter. تساعد الاختبارات على ضمان جودة التطبيق وتحسين تجربة المستخدم. هناك العديد من أنواع الاختبارات المختلفة، ويجب استخدام النوع المناسب لكل وحدة وظيفية في التطبيق , ايضا في برمجة المواقع يوجد اختيار للوحدات للتاكد من صحتها .

كل ما تريد معرفته عن Unit Testing مع امثلة توضيحيه

ما هو Unit Testing؟

هو أسلوب لاختبار الوحدات الصغيرة في الكود، مثل الدوال (functions) وال CLASSES. يهدف إلى التأكد من أن كل جزء من الكود يعمل بشكل صحيح وهذا يساعد بشكل كبير في إنشاء تطبيقات الجوال قوية مع التعرف على الاخطاء التي تظهر وحلها


يلعب اختبار التطبيقات (Testing) دورًا هامًا في Flutter لضمان جودة التطبيق وتحسين تجربة المستخدم. تأتي الاختبارات بالعديد من الفوائد، وسأشرح بشكل أوسع الطرق المختلفة للقيام بذلك وأهمية كل نوع.


أنواع اختبارات Flutter:

1. اختبارات الوحدة (Unit Tests):

الهدف: اختبار وحدات صغيرة من الشيفرة مثل الدوال والفئات بشكل منفصل.
كيفية القيام بذلك:
استخدام حزمة test وتحديد توقعات (expectations) بناءً على المدخلات والمخرجات المتوقعة.
كتابة اختبارات لكل وحدة وظيفية (functionality) لضمان عملها بشكل صحيح.


2. اختبارات الويجت (Widget Tests):

الهدف: اختبار واجهة المستخدم (UI) للتأكد من عرضها بشكل صحيح وتفاعلها مع المستخدم بشكل متوقع.

كيفية القيام بذلك:


استخدام حزمة flutter_test لإنشاء اختبارات تفاعلية.

محاكاة تفاعلات المستخدم مثل النقر على الأزرار وإدخال البيانات.

التحقق من صحة النتائج والتأكد من عدم وجود أخطاء.


3. اختبارات التكامل (Integration Tests):

الهدف: اختبار كيفية تفاعل الوحدات المختلفة مع بعضها البعض.


كيفية القيام بذلك:

استخدام حزمة flutter_test لإنشاء اختبارات تفاعلية تشمل وحدات متعددة وايضا عمل تطبيق جوال خالي من المشاكل

محاكاة سيناريوهات واقعية للتأكد من عمل جميع الوحدات بشكل متكامل.


4. اختبارات الأداء (Performance Tests):

الهدف: قياس سرعة التطبيق وكفاءته في استخدام موارد الجهاز.

كيفية القيام بذلك:

استخدام أدوات مثل Flutter Driver وPerfetto لقياس أداء التطبيق.

تحليل النتائج وتحسين الأداء في حال وجود مشاكل.


5. اختبارات طرف الطرف (End-to-End Tests):

الهدف: اختبار التطبيق ككل من منظور المستخدم.

كيفية القيام بذلك:

استخدام أدوات مثل Appium وFlutter Driver لإنشاء اختبارات تفاعلية تشمل جميع مراحل استخدام التطبيق.

محاكاة سيناريوهات واقعية للتأكد من سهولة استخدام التطبيق وخلوه من الأخطاء.


أهمية اختبارات Flutter:

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

تحسين تجربة المستخدم: تضمن عمل التطبيق بشكل سلس وسهل الاستخدام.

زيادة ثقة المستخدم: تُظهر للمستخدمين أن التطبيق تم اختباره بدقة ويمكن الاعتماد عليه.

تسريع عملية التطوير: تساعد على اكتشاف الأخطاء في وقت مبكر وتجنب تكاليف إعادة الإصلاح.


مثال برمجي

لنفترض أن لديك CLASS بسيط يقوم بإجراء بعض العمليات الحسابية مثل الجمع والطرح.


كود CLASS Calculator:


class Calculator {
  // Method الجمع
  int add(int a, int b) {
    return a + b;
  }

  // Method الطرح
  int subtract(int a, int b) {
    return a - b;
  }
}

كيف يمكن تطبيق Unit Testing على هذا المثال؟

1. حزم Unit Testing:


dev_dependencies:

  test:


2. إنشاء ملف اختبار:


حذف ملف الاختبار الافتراضي:

  1. احذف ملف الاختبار الموجود في مجلد test.
  2. هذا الملف كان مثالاً لاختبار تطبيق افتراضي يتم إنشاؤه عند إنشاء مشروع جديد.
  3. إنشاء ملف اختبار جديد:

  4. قم بإنشاء ملف جديد في مجلد test.
  5. سمّي الملف باسم معبر، متبوعًا بكلمة _test.
  6. مثال: testing_app/test/calculator_unit_test.dart.

3. كتابة اختبارات Unit Testing:


Function main:

أضف Function main كـ entry point لاختباراتك.
Three methods هامة:

1. test method:

*   يُستخدم لتحديد اختبار Unit Testing لوحدة واحدة (دالة أو CLASS).
*   يأخذ Parameterين:
    *   **description String:** وصف لاختبارك.
    *   **callback function:** تحتوي على منطق الاختبار.

2. group method:


*   يشبه `test method`، لكنه يضمّ أكثر من اختبار لوحدات متعددة (Test cases).

3. expect method:

*   موجودة داخل `test`، تُستخدم للتحقق من تطابق القيم الفعلية مع القيم المتوقعة.
*   تُظهر رسالة "Test Passed" إذا كان الاختبار صحيحًا، أو تُنشئ استثناءً إذا فشل.

4. اختبار Methods add و subtract:


قم بإنشاء اختبار لكل Method داخل group.


5. تشغيل الاختبارات:

استخدم الأمر التالي:
flutter test (fileName)

6. عرض النتيجة:


سيظهر لك Result، سواء "Test Passed" أو "Failed".
ملاحظات:

استخدم expect للتحقق من مختلف الحالات (قيم حدودية، قيم خاطئة، إلخ).
يمكن استخدام مكتبات أخرى مثل mockito لاختبار التفاعلات مع وحدات أخرى.


كل ما تريد معرفته عن Unit Testing مع امثلة توضيحيه


فائدة Unit Testing:

  • يضمن صحة الوحدات الفردية في الكود.
  • يُسهل اكتشاف الأخطاء وإصلاحها.
  • يُحسّن من جودة الكود وقابليته للقراءة.

ساعد في كتابة المقالة :

تعليقات