## تحسين تطوير iOS من خلال الاختبارات الآلية والأدوات

Home PDF

تمت كتابة هذه المدونة بمساعدة ChatGPT-4o.


أهمية اختبار الوحدات

في LeanCloud، قمنا بتنفيذ اختبار الوحدات في مرحلة مبكرة من المشروع، وقد أثبت ذلك أنه ذو قيمة كبيرة. كل طلب سحب (PR) يؤدي إلى تشغيل اختبار الوحدات على Jenkins، وكان هدفنا في التغطية حوالي 80%. هناك سيناريوهان رئيسيان لكتابة الاختبارات: التحقق من الواجهات الجديدة وإعادة إنتاج وإصلاح الأخطاء. كلما تراكمت الاختبارات، أصبحت قاعدة الكود لدينا أكثر قوة. تمكننا الاختبارات الآلية من إصدار وإعادة هيكلة الكود بثقة دون الحاجة إلى التحقق اليدوي.

عملية الاختبار والتطبيق العملي

فيما يلي بعض الأمثلة العملية حول كيفية مساهمة الاختبارات الوحدية في مساعدتنا:

اختبار العملية 1: أبلغ مستخدم بوجود خطأ عند حفظ كائن يحتوي على مفتاح الوصف. قمت بكتابة اختبار لإعادة إنتاج هذه المشكلة، وتمكنت من تحديد المشكلة وإصلاحها، ثم احتفظت بهذا الاختبار للتحقق منه في المستقبل.

اختبار العملية 2: أثناء تطوير واجهة برمجية جديدة، قمت بكتابة الاختبارات المناسبة بعد تنفيذ الكود للتأكد من أن الكود يعمل بشكل صحيح.

اختبار العملية 3: بعد تعديل كود AVObject.m، قمت بتشغيل اختبار AVObjectTest.m للتحقق مما إذا كانت التغييرات قد تسببت في أي فشل في الاختبارات.

اختبار العملية 4: إرسال طلب السحب (PR) سيؤدي إلى تشغيل الاختبارات الآلية على Jenkins.

فوائد كتابة اختبارات الوحدات

كيفية كتابة اختبارات وحدة فعالة

تقييم أطر الاختبار

قمنا بتقييم عدة أطر:

التعامل مع الاختبارات غير المتزامنة

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

تقارير التغطية

أضافت Xcode 7 ميزة تقارير التغطية المدمجة. خطوات تفعيلها كالتالي:

  1. قم بتمكين Gather Coverage Data في إعدادات المخطط.
  2. قم بإجراء الاختبارات على هدف التطبيق (App Target) وليس على هدف الاختبار (Test Target).

هذه الميزة تسمح للمطورين برؤية أي أسطر من الكود تم اختبارها بالضبط، مما يساعد في تحديد الأجزاء غير المختبرة من الكود. لمزيد من التفاصيل، يرجى زيارة مدونة Big Nerd Ranch.

استخدام Jenkins لإجراء اختبارات الأتمتة عن بُعد

يتضمن إعداد Jenkins لإجراء اختبارات الأتمتة عدة خطوات:

  1. تثبيت Jenkins: قم بإعداد Jenkins على جهازك المحلي أو على خادم في مركز البيانات.
  2. التكامل مع GitHub: استخدم مكوّن GitHub PR Build Plugin لتفعيل الاختبارات عند تقديم طلبات السحب (Pull Requests).
    • قم بتكوين Webhooks لإرسال الأحداث إلى Jenkins.
    • تأكد من أن Jenkins يمكنه الوصول إلى أحدث كود طلبات السحب.
  3. نصوص الاختبار: قم بإعداد نصوص الاختبار في Jenkins لأتمتة عملية الاختبار.
    • تأكد من أن Jenkins يمكنه إعلام GitHub بنتائج الاختبارات.
    • قم بتكوين إشعارات Slack أو البريد الإلكتروني للإبلاغ عن فشل الاختبارات.

يوفر استخدام Jenkins لإجراء الاختبارات الآلية عن بُعد جميع مزايا الاختبار الآلي، ويتفوق على الاختبار المحلي من خلال تشغيل الاختبارات في بيئة نظيفة وخاضعة للتحكم.

التعبئة والنشر عن بُعد

على الرغم من أن التعبئة عن بُعد ليست مطلوبة لجميع المشاريع، إلا أنها يمكن أن تُبسط عملية نشر SDK والمكونات القابلة لإعادة الاستخدام. تشمل الخطوات:

أدوات ونصائح إضافية

الخلاصة

أدت الاختبارات الآلية والأدوات المناسبة إلى تحسين كبير في عملية التطوير. من خلال إدخال اختبارات الوحدات في مراحل مبكرة، والاستفادة من المعالجة غير المتزامنة واستخدام تقارير التغطية، يمكننا بناء تطبيقات أكثر موثوقية وقابلية للصيانة. تضمن أدوات CI/CD مثل Jenkins وأدوات تطوير Xcode، جنبًا إلى جنب مع استراتيجية اختبار قوية، تسليم برمجيات عالية الجودة.

الشكر والتقدير

نود أن نعرب عن خالص امتناننا لفريق LeanCloud ولكل من ساهم في عملية الاختبار الخاصة بنا.


Back 2025.01.18 Donate